Skip to content
Snippets Groups Projects
Commit 3615a430 authored by Gary Frost's avatar Gary Frost
Browse files

for issue #120 we now release context, queue and events

parent 7025cd28
No related branches found
No related tags found
No related merge requests found
...@@ -252,9 +252,13 @@ void getArg(JNIEnv *jenv, cl_context context, cl_command_queue commandQueue, cl_ ...@@ -252,9 +252,13 @@ void getArg(JNIEnv *jenv, cl_context context, cl_command_queue commandQueue, cl_
JNI_JAVA(void, OpenCLJNI, disposeProgram) JNI_JAVA(void, OpenCLJNI, disposeProgram)
(JNIEnv *jenv, jobject jobj, jobject programInstance) { (JNIEnv *jenv, jobject jobj, jobject programInstance) {
fprintf(stderr, "dispose program \n"); //fprintf(stderr, "dispose program \n");
cl_program program = OpenCLProgram::getProgram(jenv, programInstance); cl_program program = OpenCLProgram::getProgram(jenv, programInstance);
clReleaseProgram(program); clReleaseProgram(program);
cl_command_queue commandQueue = OpenCLProgram::getCommandQueue(jenv, programInstance);
clReleaseCommandQueue(commandQueue);
cl_context context = OpenCLProgram::getContext(jenv, programInstance);
clReleaseContext(context);
} }
JNI_JAVA(void, OpenCLJNI, disposeKernel) JNI_JAVA(void, OpenCLJNI, disposeKernel)
...@@ -267,7 +271,7 @@ JNI_JAVA(void, OpenCLJNI, disposeKernel) ...@@ -267,7 +271,7 @@ JNI_JAVA(void, OpenCLJNI, disposeKernel)
cl_context context = OpenCLProgram::getContext(jenv, programInstance); cl_context context = OpenCLProgram::getContext(jenv, programInstance);
cl_command_queue commandQueue = OpenCLProgram::getCommandQueue(jenv, programInstance); cl_command_queue commandQueue = OpenCLProgram::getCommandQueue(jenv, programInstance);
jsize argc = jenv->GetArrayLength(argDefsArray); jsize argc = jenv->GetArrayLength(argDefsArray);
fprintf(stderr, "dispose! argc = %d\n", argc); //fprintf(stderr, "dispose! argc = %d\n", argc);
for (jsize argIndex = 0; argIndex < argc; argIndex++){ for (jsize argIndex = 0; argIndex < argc; argIndex++){
jobject argDef = jenv->GetObjectArrayElement(argDefsArray, argIndex); jobject argDef = jenv->GetObjectArrayElement(argDefsArray, argIndex);
jlong argBits = OpenCLArgDescriptor::getBits(jenv, argDef); jlong argBits = OpenCLArgDescriptor::getBits(jenv, argDef);
...@@ -279,7 +283,7 @@ JNI_JAVA(void, OpenCLJNI, disposeKernel) ...@@ -279,7 +283,7 @@ JNI_JAVA(void, OpenCLJNI, disposeKernel)
cl_mem mem = OpenCLMem::getMem(jenv, memInstance); cl_mem mem = OpenCLMem::getMem(jenv, memInstance);
size_t sizeInBytes = OpenCLMem::getSizeInBytes(jenv, memInstance); size_t sizeInBytes = OpenCLMem::getSizeInBytes(jenv, memInstance);
cl_int status = clReleaseMemObject(mem); cl_int status = clReleaseMemObject(mem);
fprintf(stderr, "mem instance %d released!\n", sizeInBytes); //fprintf(stderr, "mem instance %d released!\n", sizeInBytes);
} }
} }
} }
...@@ -365,6 +369,9 @@ JNI_JAVA(void, OpenCLJNI, invoke) ...@@ -365,6 +369,9 @@ JNI_JAVA(void, OpenCLJNI, invoke)
getArg(jenv, context, commandQueue, events, &eventc, argIndex, argDef, arg); getArg(jenv, context, commandQueue, events, &eventc, argIndex, argDef, arg);
} }
status = clWaitForEvents(eventc, events); status = clWaitForEvents(eventc, events);
for (int i=0;i<eventc; i++){
clReleaseEvent(events[i]);
}
if (status != CL_SUCCESS) { if (status != CL_SUCCESS) {
fprintf(stderr, "error waiting for events !\n"); fprintf(stderr, "error waiting for events !\n");
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment