2016-11-06 23 views
-2

我的笔记本电脑有一块GeForce GTX 960M和英特尔HD 530我正在运行的内核并使用下面的代码中使用的OpenCL的探查:为什么Opencl内核在英特尔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); 

英特尔所经过的时间最多缩短10倍的速度比的GeForce。例如,对于GeForce上需要12.519104ms的内核,英特尔HD上的运行时间仅为1.427828ms。其他数据集也存在相同的模式。这对我来说看起来很奇怪,因为GeForce应该是一个更好的设备。我在分析时做错了什么,或者有什么我做错了吗?

+0

性能是工作组大小,内存访问模式等,这些你没敏感”在你的问题中指定。这个话题是非常广泛的一个简单的答案。您可以先尝试在两台设备上运行第三方OpenCL基准测试,然后比较结果,以获得期望的基线。 –

回答

-1

例如,对于内核在GeForce上需要12.519104ms的情况,Intel HD上的 已用时间仅为1.427828ms。

在前述的光,英特尔HD更接近CPU,并具有像

C [1]进行计算较少等待时间= A [1] + B [i]于

例如

例如或线性复杂度算法,如体素化,其中数据不被重新用于设备存储器或者每个线程只读取一次。

  • 距离相关的低访问延迟的iGPU的
  • 存储路径相关的零拷贝的iGPU的
  • 算法复杂度
相关问题