我对 cuda 内核的实现有疑问。
我生成了一个 cude 内核,我想在其中添加 cuDoubleComplex 变量的元素。稍后我还想对元素进行一些乘法运算。
我尝试了几种方法,但找不到解决方案。
我的职能是:
__global__ void process(double *fieldRange, double *fieldAzimut, double **recPosition, double **transPosition, double *TimeAxisPulse, double timeStep, cuDoubleComplex *rawData, int nmbrPulses, int nmbrSamples, double carrierFrequency, cuDoubleComplex *result)
我尝试做类似的事情
result[tid]=result[tid]+newValue
其中 newValue 也是一个 cuDoubleComplex。我尝试使用 cublasZaxpy 函数,但我被告知不允许从全局函数调用主机函数
我该怎么做才能使用 cuDoubleComplex 变量在内核中进行简单的加法?
最佳答案
您可以调用函数 cuCadd
,例如:
result[tid]=cuCadd(result[tid],newValue);
还要确保你有 #include "cuComplex.h"
或 #include <cuComplex.h>
以您的路径设置为准。
关于c++ - 在 cuda-kernel 中使用 cuDoubleComplex 进行操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15270449/