我有一个OpenCL C ++程序,我在支持NVIDIA GPU的EC2实例上运行。通常,在程序结束时,它会挂起,我最终不得不停止实例以摆脱它。
以下是我的代码的结尾,我应该采取哪些不同的做法?
/* Finalization */
ret = clFlush(command_queue);
printf("clFlush: %s\n", getErrorString(ret));
ret = clFinish(command_queue);
printf("clFinish: %s\n", getErrorString(ret));
ret = clReleaseMemObject(ymobj);
printf("clReleaseMemObject: %s\n", getErrorString(ret));
ret = clReleaseProgram(program);
printf("clReleaseProgram: %s\n", getErrorString(ret));
ret = clReleaseKernel(kernel);
printf("clReleaseKernel: %s\n", getErrorString(ret));
ret = clReleaseCommandQueue(command_queue);
printf("clReleaseCommandQueue: %s\n", getErrorString(ret));
ret = clReleaseContext(context);
printf("clReleaseContext: %s\n", getErrorString(ret));
free(source_str);
free(y);
exit(0);
通常我可以在clFinish之后看到命令的输出,但之后没有任何内容。