爲了大致瞭解openCl對我有多大的幫助,我進行了矩陣乘法測試,因爲這種基本的線性代數是我的主要用途。我使用的代碼可以在這裏找到:http://vasanthexperiments.wordpress.com/2011/11/20/aparapi-java-matrix-multiplication-example/。 (1024×1024×1024×1024矩陣矩陣產品)Java/Open CL/Aparapi:從哪種設備上可以期待什麼樣的性能?
基本上,我對結果非常失望,因爲與CPU上的串行計算(小於x2)相比,加速比只有邊際,並且如果我使用Aparapi CPU(它並行化)CPU速度更快。
在執行過程中,圖形卡處於滿載狀態,所以我認爲應該沒有通信問題。
我的硬件配置:
酷睿i7 2670QM
AMD 7610M
16GB RAM
由於我完全新的GPGPUs我不知道會發生什麼。
1.我的設置有可能被搞亂了嗎?如果是這樣,我應該在哪裏看?
2.還是我只是期望從入門級圖形卡太多?如果是這樣,不同型號的顯卡如何擴展這種問題呢?如果我想讓硬件更快,我必須尋找什麼樣的規格?
編輯:
好了,我只是重新運行一個10×10矩陣程序。
不出所料,CPU需要不到1ms。
但是,GPU需要超過1600個,所以Aparapi或openCL或我的硬件肯定有問題(驅動程序應該是最新的)。任何人都有一個想法,我應該看看?
謝謝。我想很少有人嘗試使用這種低端的GPGPU卡。我認爲擁有400個處理器的GPU仍然會比8線程CPU快得多。我想我將不得不尋找一些方法來訪問一些嚴重的硬件。 –
我剛剛注意到,即使是10x10,GPU也需要1,6secs而不是0msecs。似乎這個問題在很大程度上與GPU的實際性能無關。 –
與CPU進行比較時,請記住新的Intel CPU支持在一個步驟中操作8個32位浮點數的向量操作。所以4個內核* 8個浮點數= 32個浮點操作。您使用的400個內核中的每一個都只執行一次浮點運算(如果使用融合乘法運算,則爲2)。 1.6秒聽起來像是生成OpenCL代碼所需的時間,構建它的時間和GPU的啓動時間的組合 - 首先OpenCL內核調用總是比較慢,因爲GPU需要增加其時鐘速度 - GPU運行在較低OpenCL和3D應用程序未運行時的速度。 – chippies