最近在做时频混合域的全波形反演(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间的传递以及内存的释放。希望对大家有用

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

  1. C++中的类所占内存空间总结

    C++中的类所占内存空间总结 最近在复习c++的一些基础,感觉这篇文章很不错,转载来,大家看看! 类所占内存的大小是由成员变量(静态变量除外)决定的,成员函数(这是笼统的说,后面会细说)是不计算在内的 ...

  2. java中各种类型所占内存空间大小

    一.常用类型占用内存大小 java中常用类型所占内存大小,以下值以实测为准. 类型 数量 大小 备注 byte 1 1B byte 1024 1KB int 1 4B int 1024 4KB boo ...

  3. C语言中常见数据类型和对应内存空间大小

    C语言的数据类型是指变量所能存储的数据范围和格式的类型.C语言提供了以下几种基本的数据类型: int类型:int类型用于存储整数(正数.负数.零).它可以有不同的位数,例如int类型可以是16位.32 ...

  4. 在代码段中安排自己定义的栈空间

    如何定义自己的栈(通过系统分配的内存) 完成下面的程序,利用栈.将程序中定义的数据逆序存放. 我们之前是如何安排自己的栈? 设置SS:SP(SS为栈顶的段地址存放处,栈顶偏移地址存放在SP) 我们如何 ...

  5. C语言中指针占据内存空间问题

    以前一直有个疑问,指向不同类型的指针到底占用的内存空间是多大呢? 这个问题我多次问过老师,老师的答案是"指向不同类型的指针占据的内存空间大小不同",我一直很之一这个答案,今天我就做 ...

  6. 【C 语言】变量本质 ( 变量概念 | 变量本质 - 内存空间别名 | 变量存储位置 - 代码区 | 变量三要素 )

    文章目录 一.变量概念 二.变量本质 1.变量本质 - 内存别名 2.变量存储位置 - 代码区 3.变量三要素 一.变量概念 变量概念 : 变量 是 既能读 , 又能写 的 内存对象 ; 与 变量 相 ...

  7. java 内存空间_怎样用java实现存储空间动态分配

    1.java是如何管理内存的 Java的内存管理就是对象的分配和释放问题.(两部分) 分配 :内存的分配是由程序完成的,程序员需要通过关键字new 为每个对象申请内存空间 (基本类型除外),所有的对象 ...

  8. java 数据保存内存_java中的各种数据类型在内存中存储的方式 一

    1.java是如何管理内存的 java的内存管理就是对象的分配和释放问题.(其中包括两部分) 分配:内存的分配是由程序完成的,程序员需要通过关键字new为每个对象申请内存空间(基本类型除外),所有的对 ...

  9. java内存空间详解

    Java内存分配与管理是Java的核心技术之一,之前我们曾介绍过Java的内存管理与内存泄露以及Java垃圾回收方面的知识,今天我们再次深入Java核心,详细介绍一下Java在内存分配方面的知识.一般 ...

最新文章

  1. python哪一版好用-Python最好用的编辑器是哪款?北京老男孩教育
  2. ERP项目选型实施注意的几点(二)
  3. QML创建C ++插件
  4. 判断jQuery选择器结果为空 - CSDN博客
  5. sap 新建事务_SAP GUI里的收藏夹事务码管理工具
  6. 微信小程序四种父子相互传值方式
  7. (转)MapReduce二次排序
  8. prolog 从list中取出一个_二、redis中Hash、Set、SortedSet应用场景
  9. 一键修改电脑硬件信息_不想使用iPhone锁屏键?一键锁屏快捷指令来了
  10. 最近一段时间的找工作计划
  11. [Maven实战-许晓斌]-[第二章]-2.7-2.8 Mave安装的最优建议和安装小结
  12. 慧荣SM2246XT、SM2246EN开卡教程 及 固件下载
  13. 感恩节快到了 Thanksgiving is coming,愿所有人健康平安!
  14. 苹果CMS小俊XG013主题模板下载
  15. 简述冯诺依曼工作原理_冯.诺依曼计算机的基本工作原理是什么??
  16. 结构体 — C 语言中不定长结构体的使用
  17. 智能优化及其应用——课程设计(粒子群算法)
  18. android studio 使用第三方模拟器连接方法,如MUMU模拟器
  19. 对于木马的一些介绍(预防木马)
  20. 你真的会使用github吗?

热门文章

  1. Collection集合 创建/添加/迭代
  2. eclipse中spring配置文件代码提示(全)
  3. Navicat打开保存的查询
  4. ASP.NET Core 中的 ORM 之 Entity Framework
  5. 无限递归替换文件内的某个字符串
  6. [ 转载 ] Java基础10--关于Object类下所有方法的简单解析
  7. 常用算法1 - 快速排序 二分查找
  8. matlab调用自己写的函数时报错: reference to a cleared variable
  9. Javascript 之《函数传参到底是值传递还是引用传递》
  10. php分享十三:mysql事物