在主机代码中偏移CUDA设备指针

4
我首先在cublas中处理了一个矩阵,已经将其发送到设备,并且我想要处理矩阵的一些列向量,仍然使用cublas函数。我尝试使用指针算术运算来偏移从主机到设备的指针,但似乎不起作用。有没有办法可以在不将向量复制回主机的情况下处理矩阵中的向量。
例如:cublasSscal(int n,float alpha,float * x,int incx); 用于缩放向量。我有一个设备指针指向列优先矩阵B,我想缩放B的第三列而不复制向量回主机,怎么做?

你应该发布一些困扰你的代码。 - Anycorn
1个回答

3

m代表行数,ldB代表B的领先维度。

cublasSscal (m, alpha, B + 2*ldB, 1); //  indices are 0 based

它可以工作,谢谢,但是主机编译器如何知道设备内存的布局? - emailhy
@ema,我不确定我理解你的问题,请详细说明。 - Anycorn
起初我以为设备指针只能在由nvcc编译的内核代码中操作,因为有一些“填充技术”使其更快。因此,指针移位操作是不安全的。然而,似乎平移设备指针是可以的。我们可以将其视为主机内存。它只不允许取消引用。我说得对吗? - emailhy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接