can';t在Android JNi中创建类型为CL_DEVICE_type_的上下文
我正在优化我的应用程序,即使用OpenCL和OpenGL的人脸检测算法。OpenGL API用于生成读/写图像。同时,我想用多个设备(两个设备:一个是GPU,另一个是CPU)创建一个上下文,用于CPU/GPU协同处理。但我不能制造CPU设备。我期望“使用openGL的contextProperties” 在OpenGL中使用多个设备我应该怎么做can';t在Android JNi中创建类型为CL_DEVICE_type_的上下文,android,opengl-es,opencl,Android,Opengl Es,Opencl,我正在优化我的应用程序,即使用OpenCL和OpenGL的人脸检测算法。OpenGL API用于生成读/写图像。同时,我想用多个设备(两个设备:一个是GPU,另一个是CPU)创建一个上下文,用于CPU/GPU协同处理。但我不能制造CPU设备。我期望“使用openGL的contextProperties” 在OpenGL中使用多个设备我应该怎么做 cl_context_properties contextProperties[] = { CL_GL_CONTEXT_KHR, (cl
cl_context_properties contextProperties[] = {
CL_GL_CONTEXT_KHR, (cl_context_properties) eglGetCurrentContext(),
CL_EGL_DISPLAY_KHR, (cl_context_properties) eglGetCurrentDisplay(),
CL_CONTEXT_PLATFORM, (cl_context_properties) firstPlatformId,
0 }; // If CL_DEVICE_TYPE_ALL is set, program can't execution.
context = clCreateContextFromType(contextProperties, CL_DEVICE_TYPE_GPU,
NULL, NULL, &errNum);//creating a context for a GPU device,
if (errNum != CL_SUCCESS) {
LOGE("[LYW]Could not create GPU context, trying CPU...");
context = clCreateContextFromType(contextProperties,
CL_DEVICE_TYPE_CPU, NULL, NULL, &errNum); //creating a context for a CPU device
if (errNum != CL_SUCCESS) {
LOGE("[LYW] Failed to create an OpenCL GPU or CPU context.");
return NULL;
}
}
如上所述,Android上的任何特定供应商都不支持OpenCL CPU设备。因此,如果您的Android设备在GPU上支持OpenCL,您可以使用以下选项之一集成CPU:
- 使用一个简单的线程池来管理CPU线程
- 使用高通公司的MARE tasking runtime*,它提供CPU和GPU的集成视图,包括在单个框架内访问OpenCL李>
- 有关高通公司MARE的更多信息,请访问: