c++ - 在 cuda-kernel 中使用 cuDoubleComplex 进行操作

标签 c++ cuda complex-numbers cublas

我对 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/

相关文章:

c++ - 基于线程数与执行时间关系的OpenMP并行编程

c++ - CUDA、NPP 滤波器

cuda - 为什么 CUDA Profiler 指示重放指令 : 82% ! = 全局重放 + 本地重放 + 共享重放?

c++ - 模板类 : Check if complex at compile time

c++ - 复数数组乘法

matlab - fsolve 返回复杂的解决方案 - 如何仅限于实际搜索空间?

C++ malloc/memcpy/free 崩溃

c# - WCF Com Interop GetRecordInfoFromGuids 返回旧格式或无效类型库

c++ - Cuda Hello World printf 即使使用 -arch=sm_20 也不工作

c++ - 我需要类的帮助。 (C++)