我試圖在GPU上看到Opencl編程模型的性能,現在在測試編程模型時,我必須使用clEnqueueNDkernel()
啓動內核,我試圖多次調用此函數,以便我可以看看它在兩個或四個併發內核啓動時的表現如何。如何在程序內部的OpenCL中啓動多個內核?
我觀察到程序的啓動時間與啓動一個內核的時間相同,現在我假設它只是運行一次內核,導致無法花費相同的時間來運行兩個內核或四個併發內核。
現在我想知道如何在一個GPU上啓動多個內核。
如:我想推出類似:
clEnqueueNDkernel()
clEnqueueNDkernel()
我怎樣才能做到這一點?
四個併發內核是指四個相同的內核代碼還是四個不同的內核代碼?在一個內核中還有多少工作,是隻增加了兩個值還是很多的計算? – maZZZu 2014-09-30 14:03:55
四個相同的內核。而且工作量也各不相同。因爲我在各種工作負載下檢查 – 2014-09-30 16:34:19
如果計算量很小,幾乎所有的時間都可以用來在主機和設備之間移動數據。這可能是一個和四個內核需要相同時間的原因。與數據傳輸相比,嘗試使負載非常巨大。那麼它應該是四次發射一次的時間的四倍。 – maZZZu 2014-09-30 17:22:29