【问题标题】:Operations with cuDoubleComplex inside cuda-kernel在 cuda 内核中使用 cuDoubleComplex 进行操作
【发布时间】:2013-02-22 14:34:58
【问题描述】:

我对 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 变量在内核中进行简单的加法?

【问题讨论】:

    标签: c++ cuda complex-numbers cublas


    【解决方案1】:

    可以调用函数cuCadd,例如:

    result[tid]=cuCadd(result[tid],newValue);
    

    并且还要确保你有 #include "cuComplex.h"#include <cuComplex.h> 根据你的路径设置工作。

    【讨论】:

    • 好的,太好了!我不知道这个功能。如果其他人有兴趣,cuCmul 是乘法函数...
    • @raspiede 有关cuComplex.h 及其功能的更多参考,您可以查看this,对于实际的头文件本身(我觉得更容易理解),您可以查看this one
    猜你喜欢
    • 2015-10-13
    • 2021-03-19
    • 2021-02-07
    • 2016-10-10
    • 2011-07-16
    • 1970-01-01
    • 2015-06-17
    • 2019-12-17
    • 1970-01-01
    相关资源
    最近更新 更多