我有幾個初學者的問題,我的筆記本電腦的GPU有:工作組和工作項目執行
- 2計算單元
- 48一本地內存大小KB
- 最大工作組1024個
- max_work_item_sizes總大小:(1024 1024 64)
我的問題很簡單:
- 這48 KB的本地內存是每個計算單元還是整個GPU?
- 如果我只創建一個工作組,是否意味着openCL不會佔用我GPU的一半容量?
- 最大工作組總大小和max_work_item_sizes之間是否存在關係?
非常感謝您的幫助
我有幾個初學者的問題,我的筆記本電腦的GPU有:工作組和工作項目執行
我的問題很簡單:
非常感謝您的幫助
1)每計算單元。
2)如果供應商實現可以使用單個工作組的所有計算單位,那麼它無關緊要。 Nvidia和Amd不能這樣做,所以他們使用單個計算單元。使用單個工作組也不能完全使用計算單元。每個計算單元至少需要幾個工作組到幾十個工作組才能變得高效。
3)不可以。您可以使用任何工作組大小,只要它是總工作項大小的整數分頻器即可。但是你不能跨越最大值。
只是澄清@huseyin回答更多的信息。
Compute unit != Local workgroup
計算單元是可以在給定的任務可正常工作的核心,但是它可以在內部已加工的許多不同階段被執行許多工作組。爲了最大限度地利用和最大限度地減少內存延遲效應。
OpenCL報告的值是最大值。如果您使用總共1024個項目,它可能會給您提供更小的本地內存。或者使用所有本地內存,它可能會禁止計算單元並行運行工作組,這會減慢執行速度。 始終使用您需要的值,而不是最大值。
使用內核編譯CL_KERNEL_WORK_GROUP_SIZE後報告的值來設置執行。不是由設備給出的。
但你不能跨個別最大值 –