2013-05-02 127 views
1

我想在我的GPU上設置一個大矩陣來解決帶有CULA的方程式系統。如何在CUDA中更大的矩陣中複製矩陣

爲你一些數字,來理解這個問題:

big matrix:  400x400 
small matrices: 200x200 

現在我想小矩陣的每個季度(100x100)複製到第二個矩陣的特定部分。

我發現了兩個可能的但明顯很慢的例子:cublasSetMatrixcublasGetMatrix支持主要維度的規範,所以我可以把這些部分放在我想要的地方,但必須將矩陣複製回主機。 另一個示例是cudaMemcpy,它不支持主要維度。在這裏,我可以手工複製每一行/列(目前我不確定此例程使用的是什麼,數據來自Fortran)。但這樣,我應該得到一個很大的開銷...

有沒有比編寫我自己的內核,複製矩陣更好的方法?

回答

0

您可以修改您的問題。我想您會找到一種方法,可以同時更改主要維度並執行D2Dcpy。

有一個例程cudaMemcpy2D()可以做到這一點,如here所示。

+0

這個例程是,我在找什麼。順便說一句,我不打算改變我的領導層面。我只需要一種方法來指定主要維度,以便在查看線性內存時考慮到一定的差距。 – Stefan 2013-05-02 13:02:55