2017-05-30 98 views
2

我有幾個初學者的問題,我的筆記本電腦的GPU有:工作組和工作項目執行

  • 2計算單元
  • 48一本地內存大小KB
  • 最大工作組1024個
  • max_work_item_sizes總大小:(1024 1024 64)

我的問題很簡單:

  1. 這48 KB的本地內存是每個計算單元還是整個GPU?
  2. 如果我只創建一個工作組,是否意味着openCL不會佔用我GPU的一半容量?
  3. 最大工作組總大小和max_work_item_sizes之間是否存在關係?

非常感謝您的幫助

+0

但你不能跨個別最大值 –

回答

1

1)每計算單元。

2)如果供應商實現可以使用單個工作組的所有計算單位,那麼它無關緊要。 Nvidia和Amd不能這樣做,所以他們使用單個計算單元。使用單個工作組也不能完全使用計算單元。每個計算單元至少需要幾個工作組到幾十個工作組才能變得高效。

3)不可以。您可以使用任何工作組大小,只要它是總工作項大小的整數分頻器即可。但是你不能跨越最大值。

+0

感謝您的回覆,本地內存如何,它是否只能爲計算單元訪問?或其他計算單元可以訪問它? – oskar132

+1

只計算單元 –

+1

我的意思是每個cu只訪問自己的本地內存 –

1

只是澄清@huseyin回答更多的信息。

Compute unit != Local workgroup

計算單元是可以在給定的任務可正常工作的核心,但是它可以在內部已加工的許多不同階段被執行許多工作組。爲了最大限度地利用和最大限度地減少內存延遲效應。

OpenCL報告的值是最大值。如果您使用總共1024個項目,它可能會給您提供更小的本地內存。或者使用所有本地內存,它可能會禁止計算單元並行運行工作組,這會減慢執行速度。 始終使用您需要的值,而不是最大值。

使用內核編譯CL_KERNEL_WORK_GROUP_SIZE後報告的值來設置執行。不是由設備給出的。