2013-05-02 92 views
0

例如,cublas<t>geam()会做:输入矩阵也可以用来存储输出矩阵与CUBLAS?

C = αop(A) + βop(B)

但是,如果我想将结果存储在A反正什么?我可以用指针*C = *A,这样称呼它:

A = αop(A) + βop(B)

而不必担心我可能会写输出仍然被读取作为输入矩阵?

如果是这样,保证我们可以安全地完成所有其他CUBLAS矩阵操作?

+1

对于这个特定的操作,如果两个OP都是N(即,你没有执行转置),我认为它是可以的。但是,如枢纽说,文件说,行为将是未定义的。因此,最好在安全方面犯错,并使用额外的空间。 – 2013-05-02 04:47:54

回答

3

答案在cublas文档中是正常的,因为您发布了它 - cublasgeam() - If C overlaps A or B, then behaviour is undefined。 如果使用C == A,Nvidia不保证这可以正常工作。

+0

其他CUBLAS例程也不能保证在原地工作。 – talonmies 2013-05-02 05:11:31

+0

@talonmies谢谢你的加入。我从我的答案中删除了错误的部分。 – hubs 2013-05-02 05:16:23

+0

啊,谢谢。我实际上正在使用cublasgemm()的3级版本,而恰巧正在使用扩展版本作为示例,所以我错过了这个声明 - 德哦! – mchen 2013-05-02 10:52:27