1
我正在與OpenCL合作,我使用矩陣來增加其值,並且我需要的應用程序時間越少越好。用OpenCL提高性能的最佳方法是什麼?我已經閱讀了一些關於數據並行和任務並行的內容,但我不太瞭解它們。OpenCL - 性能
我正在使用64x56矩陣。使用任務並行我創建了64個內核函數。每列有一個內核,但我認爲我可以做得更好。
我正在與OpenCL合作,我使用矩陣來增加其值,並且我需要的應用程序時間越少越好。用OpenCL提高性能的最佳方法是什麼?我已經閱讀了一些關於數據並行和任務並行的內容,但我不太瞭解它們。OpenCL - 性能
我正在使用64x56矩陣。使用任務並行我創建了64個內核函數。每列有一個內核,但我認爲我可以做得更好。
如果您在GPU上執行內核,最好讓一個線程處理一個項目。然而,這取決於你對矩陣的元素究竟做了什麼,例如,你在他們每個人上執行多少次操作。 如果您只是通過某些數字增加元素,則可能沒有好處。
一般情況下,有3個選項:
您是否嘗試過僅使用一個內核,處理一個元素,併爲其調用clEnqueueNDRangeKernel,其全局工作大小等於{64,56}?它如何影響執行時間?
即使矩陣乘法,64x56矩陣的工作量也太小。爲56個元素產卵新內核的開銷過大。但是,如果他們在不同的隊列上運行,可能會比單個隊列更快。你使用單隊列嗎? –
我現在正在使用2個隊列中的32個內核。但是使用2個隊列而不是1個隊列的時間稍微差一些。這個想法是在CPU中創建一個矩陣,將其發送到GPU,增加矩陣的每個值1個單位,並將新矩陣返回給CPU。在這種情況下,我不知道如何少做內核函數。 – Coke