2016-11-06 51 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的
  • 算法複雜度
相關問題