如果 A 是 n x n 矩阵且 x 维度 n < / em>,是否可以将 x 传递给GEMV
作为x
和y
参数的参数,beta=0
,实现操作 x ← A ⋅ x ?
我对使用C接口的Cublas实现特别感兴趣。
答案 0 :(得分:6)
没有。对于Fortran而言,它与实现无关 - 在Fortran中,它打破了语言标准,为任何子程序设置了别名的实际参数,因为它打破了语言标准,除非那些参数是意图(In)。因此,如果接口具有Intent(Out),Intent(InOut)或没有Intent的伪参数,则在调用子程序时应始终对相应的实际参数使用单独的变量。
答案 1 :(得分:1)
NO。
输出的每个元素都取决于输入向量的{em> ALL 元素x
例如:如果x
是输入而y
是输出,则A
是矩阵,
i
的{{1}}元素将按以下方式生成。
y
因此,如果您使用上面的结果覆盖y_i = A_i1*x_1 + A_i2 * x_2 ... + A_in * x_n
,则依赖于x_i
的其他x_r
将无法获得正确的输入并产生不正确的结果。
修改强>
我打算把它作为评论,但它太大了。所以这里解释为什么上述推理也适用于并行实现。
除非每个并行组/线程都创建原始数据的本地副本,否则原始数据可以被销毁,这一推理线仍然存在。
然而,这样做(制作本地副本)只有在
时才实用且有益注意: