Fortran和cuda/c/c++混合编程

现有的编程语言,fortran适合大规模矩阵运算,而cuda非常有利于并行计算。原有的代码很多是基于Fortran写的。想要利用GPU提高计算效目前有两种实现思路。
1Fortran直接调用GPU:该方法需要安装PGI编译器,麻烦之处在于PGI社区版只能免费体验一年,每一年都要重装一次编译器。好处在于基于PGI的Fortran,GPU实现语法相对于C语言更加简洁。
2Fortran和NVCC混合编程:该方法可以最小化的减少代码重写,在保持原有Fortran代码框架不变的前提下,用C语言将并行部分重写成子程序,用NVCC和gfortran分别编译相应代码,最后用gfortran连接.o目标文件实现混合编程。同样的思路也适用与fortran和C或C++混合编程。

在链接过程中可能会遇到一些问题,解决问题的相应连接如下:

https://bbs.csdn.net/topics/390798173?list=2488782

https://devtalk.nvidia.com/default/topic/453141/cuda-programming-and-performance/cuda-c-in-fortran-program/

Fortran 和 c++混合编程时需要用extern “C” void subfunction_(float* datain, int &n, int &m) 进行声明
Fortran 和 c混合编程时需要用void subfunction_(float* datain, int *n, int *m) 进行声明
需要注意
1Fortran和C是通过地址传递数据的
2Fortran子程序结尾会默认添加下划线,编译的时候添加-fno-underscoring可去掉下划线

  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值