2016-11-06 1 views
-2

Моего ноутбука имеет 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 должна была стать гораздо лучшим устройством. Я делаю что-то неправильно в профилировании или есть что-то, что я делаю неправильно?

+0

Производительность чувствительна к размеру рабочей группы, модель доступа памяти и т.д., которые вы Ждете» t укажите в своем вопросе. Тема очень широка для простого ответа. Сначала вы можете попробовать запустить сторонний тест OpenCL на обоих устройствах и сравнить результат, чтобы иметь базовые показатели ваших ожиданий. –

ответ

-1

Например, для ядра, который принимает 12.519104ms на GeForce, то истекшее время на Intel HD просто 1.427828ms.

в свете сказанного выше, Intel HD гораздо ближе к CPU и имеет меньшую задержку для расчетов, как

с [I] = а [I] + B [I]

, например, алгоритмы линейной сложности, такие как вокселизация, когда данные не используются повторно в памяти устройства или считываются/записываются только один раз по каждому потоку.

  • расстояния, связанный с задержкой низкого уровня доступа к igpu
  • связанного пути
  • памяти нулевого экземпляр для igpu
  • сложность алгоритма
Смежные вопросы