-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应该是一个更好的设备。我在分析时做错了什么,或者有什么我做错了吗?
性能是工作组大小,内存访问模式等,这些你没敏感”在你的问题中指定。这个话题是非常广泛的一个简单的答案。您可以先尝试在两台设备上运行第三方OpenCL基准测试,然后比较结果,以获得期望的基线。 –