2013-05-02 124 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