我可以更改 SAXPY 函数的公式吗?

Can I change the formula of SAXPY function?

我是GPGPU新手,对SAXPY函数有一个困惑: SAXPY 函数就像给定两个相同大小和类型的向量 X 和 Y,执行更改 Y 中每个元素的操作: y[i] = y[i]+a*x[i]

我不确定我们能否更改 SAXPY 的公式,例如: y[i]=(y[i]+a)*(x[i]+c)

但在这种情况下,有一个新常量 c,我不知道如何在这种情况下调用 SAXPY。

感谢您的宝贵时间。

I have no idea how to call SAXPY in this condition.

你不能。

Saxpy 是 (nvidia docs) 的缩写:

Single-Precision A·X Plus Y

一个可能的实现是:

void saxpy(int n, float a, float * restrict x, float * restrict y)
{
  for (int i = 0; i < n; ++i)
      y[i] = a*x[i] + y[i];
}

如果你想要y[i]=(y[i]+a)*(x[i]+c),那就是不同的功能了。无论您如何转换公式,saxpy 都无法为您完成 x[i]*y[i] 部分。