Моего ноутбука имеет GeForce GTX 960m и HD Intel 530. Я бег ядра и, используя следующий код, чтобы использовать профилировщик OpenCL:Почему ядро Opencl работает на Intel HD намного быстрее, чем NVIDIA GeForce?
err = clEnqueueNDRangeKernel(queue, voxelization_kernel, 1, NULL, &processed_global_size,
&local_size, 0, NULL, &kernel_event);
err = clWaitForEvents(1, &kernel_event);
clGetEventProfilingInfo(kernel_event, CL_PROFILING_COMMAND_START,
sizeof(time_start), &time_start, NULL);
clGetEventProfilingInfo(kernel_event, CL_PROFILING_COMMAND_END,
sizeof(time_end), &time_end, NULL);
elapsed_time = time_end - time_start;
printf("Elapsed time in kernel: %f ms\n", (float)(time_end - time_start)/(float)1000000);
истекшее время на Intel до 10 раз быстрее, чем GeForce. Например, для ядра, которое занимает 12.519104ms на GeForce, прошедшее время на Intel HD составляет всего 1.427828мс. Такая же модель существует и для других наборов данных. Это выглядит довольно странно, потому что GeForce должна была стать гораздо лучшим устройством. Я делаю что-то неправильно в профилировании или есть что-то, что я делаю неправильно?
Производительность чувствительна к размеру рабочей группы, модель доступа памяти и т.д., которые вы Ждете» t укажите в своем вопросе. Тема очень широка для простого ответа. Сначала вы можете попробовать запустить сторонний тест OpenCL на обоих устройствах и сравнить результат, чтобы иметь базовые показатели ваших ожиданий. –