CUDA中的复数定义、开内存空间以及运算

最近在做时频混合域的全波形反演(FWI),用CUDA加速,要做复数运算,所以研究了一下CUDA中复数运算等。简单说一下CUDA中复数的基本应用。

在CUDA中用CUFFT的库来定义与运算复数,基本如下:

#include "cufft.h"


int main()
{
    /* Transform real field to complex field */
    cufftComplex *h_cf ;      /* host 上的复数变量 */
    cufftComplex *d_cf ;      /* device 上的复数变量 */
    h_cf = (cufftComplex *)malloc(sizeof(cufftComplex) * nf);    
    cudaMalloc((void**)&d_cf, sizeof(cufftComplex)*nf);    
  
    for (int it = 0,t=0.0; it < nt; ++it,t+=dt)
    {
        for (int iff=0;iff<nf;iff++) 
        {
            h_cf[iff].x=exp(-damp*t)*cos(2.0*PI*invf[iff]*t);
            h_cf[iff].y=exp(-damp*t)*sin(2.0*PI*invf[iff]*t);
        }
    }
    CHECK(cudaMemcpy(d_cf,h_cf,sizeof(cufftComplex)*nf,cudaMemcpyHostToDevice));

    free(h_cf);
    CHECK(cudaFree(d_cf));

}

以上是CUDA中,复数的定义、开辟空间、CPU/GPU间的传递以及内存的释放。希望对大家有用
  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 11
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Coder802

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值