我怎麼能100%確定我的opencl內核實際上是在GPU上運行,而不是在CPU上運行。 我無法理解這一點,因爲openCL內核也可以在CPU上運行。 任何指針在這裏?我如何知道我的OpenCL內核在GPU上運行?
7
A
回答
5
創建OpenCL上下文時,您必須在計算機上可用的平臺和設備之間進行選擇。 您可以通過clGetPlatformInfo和clGetDeviceInfo獲取有關平臺和設備的一些信息。 您可以在NVIDIA和AMD SDK中找到示例代碼來列出平臺和設備。
對於AMD(gDEBugger,Code XL),NVIDIA(Visual Profiler)和Intel(Intel GPA)設備,您可以使用分析工具。
0
您可以簡單地使用TechPowerUp GPU-Z來查看GPU上是否有一些工作負載。 其他解決方案:您可以明確指定是否在設備類型CL_Device_Type_GPU中使用GPU。
0
我在我的Macbook Pro上使用MenuMeters & Mac Pro - 如果正在使用CPU,它很明顯。 (我不知道,如果分析工具將根據使用的XCode時OpenCL的工作對我來說....)
4
在創建方面,使用clCreateContextFromType在那裏你可以通過標誌CL_DEVICE_TYPE_GPU,指定要僅限GPU。 像這樣保證使用GPU的(你可以100%肯定):
cl_uint num_platforms = 0;
clGetPlatformIDs(0, NULL, &num_platforms);
cl_platform_id* platform = malloc(sizeof(cl_platform_id) * num_platforms);
cl_context_properties cprops[3] = { CL_CONTEXT_PLATFORM, (cl_context_properties)platform[0], 0 };
ctx = clCreateContextFromType(cprops, CL_DEVICE_TYPE_GPU, NULL, NULL, &err);
如果您已經在環境和設備的設置,您可以查詢設備的類型,如下所示:
cl_device_type dev_type;
clGetDeviceInfo(my_device, CL_DEVICE_TYPE, sizeof(dev_type), &dev_type, NULL);
if (dev_type == CL_DEVICE_TYPE_GPU) {
printf("I'm 100%% sure this device is a GPU");
}
您將入隊到此設備上創建的命令隊列的所有內容都將在GPU上運行。
相關問題
- 1. 我如何知道我的OpenCL內核在GPU上運行?
- 2. 在多個GPU上運行OpenCL內核?
- 3. OpenCL和CUDA內核在同一GPU上
- 4. 是否可以跨越OpenCL內核在CPU和GPU上同時運行
- 5. 如何在一個GPU上使用CUDA運行多個內核?
- 6. 如何實現opencl內核管道
- 7. 如何同時在多個GPU(2)上運行OpenCL?
- 8. OpenCL內核在Nvidia GPU上使用多少寄存器?
- 9. 我如何知道elixir在CPU中的內核數量?
- 10. iOS9如何知道我是否在運行時泄漏內存?
- 11. 如何知道我的shell正在運行我的init文件?
- 12. 如何讓GPU在GPU上運行?
- 13. 我如何知道我正在運行的Android ndk版本
- 14. 我如何知道我的lua腳本在Wireshark中運行?
- 15. 如何知道數據在GPU內存上的分配
- 16. OpenCL內核在速度更快的GPU上執行速度更慢
- 17. 在JavaScript中,我如何知道我正在運行IPad1與IPad2?
- 18. 如何知道在MPI上運行哪個核心進程?
- 19. 在OpenCL內核
- 20. 在運行時,我怎麼知道我是否在WinXP +上? win32
- 21. 無法殺死在NVIDIA GPU上運行的壞內核
- 22. 內核啓動失敗 - 在GPU上運行時間的-100%
- 23. 我如何知道/看到線程在哪個內核上運行? (在win XP中)
- 24. OpenCL中FFT 2D內核運行時= 0
- 25. 我如何知道我是否在網絡環境中運行?
- 26. 我如何知道我正在運行哪個WPF版本?
- 27. 如何在Nvidia GPU上調試OpenCL?
- 28. OpenCL - 主內核填充緩衝區並在子內核上運行
- 29. 如果我知道Windows內核,我該怎麼辦?
- 30. 我如何知道我運行的是哪個版本的RichFaces?