Я выполнил анализ производительности Nsight в своем приложении OpenCL + OpenGL, и в результатах я вижу это:
Вот как я запускаю OpenCL:
std::vector<cl::Platform> all_platforms;
cl::Platform::get(&all_platforms);
auto default_platform = all_platforms[1];
cout << "Using platform: " << default_platform.getInfo<CL_PLATFORM_NAME>() << std::endl;
std::vector<cl::Device> devices;
default_platform.getDevices(CL_DEVICE_TYPE_GPU, &devices);
for (unsigned d = 0; d < devices.size(); ++d) {
if (checkExtnAvailability(devices[d], CL_GL_SHARING_EXT)) {
device = devices[d];
break;
}
}
cout << "Using device: " << device.getInfo<CL_DEVICE_NAME>() << std::endl;
cl_context_properties props[] =
{
CL_GL_CONTEXT_KHR, (cl_context_properties)wglGetCurrentContext(),
CL_WGL_HDC_KHR, (cl_context_properties)wglGetCurrentDC(),
CL_CONTEXT_PLATFORM, (cl_context_properties)default_platform(),
0
};
context = cl::Context(device, props);
Я получаю этот вывод:
Using platform: NVIDIA CUDA
Using device: GeForce 940MX
Кроме того, я печатаю информацию GL следующим образом:
cout << "GL info: " << glGetString(GL_VENDOR) << "; " << glGetString(GL_VERSION) << endl;
и получаю:
GL info: NVIDIA Corporation; 3.2.0 NVIDIA 411.63
Есть идеи, что сломано?Мой драйвер GeForce является точной рекомендованной версией для Nsight.
Примечание. У меня установлен CUDA Toolkit 10.0.