OpenACC编译构建方法(windows)

本文介绍了一种在Windows环境下使用OpenACC构建工程的方法。通过使用PGI编译器构建C语言动态链接库,并利用CMake进行链接,实现C++代码对C语言OpenACC代码的调用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

OpenACC编译构建方法(windows)

由于在Windows下支持OpenACC的编译器PGC只有c版本。且构建工程方面缺乏工具。
目前研究出一种在Windows下使用OpenACC构建工程的方式。即使用pgcc构建c语言的动态链接库。再使用CMake调用C生成的动态链接库,构建程序。

具体:

In PGI Conmmunity Edition:
1. Bdynamic
pgcc -acc -ta=tesla:nordc –Minfo -Bdynamic -c main.c mian.h
2. Mmakedll
pgcc -acc -ta=tesla:nordc -Mmakedll main.obj –o main.dll -L”C:/Program Files/PGICE/win64/18.4/lib” -laccapi –laccg -laccn -laccg2 -lcudadevice -lpgmp -lnspgc
3.使用CMake连接
include_directories(“D:/testacc”)
link_libraries(“D:/testacc/main.lib”)
保证dll在环境变量下调用。

C++调用C

因为openacc部分代码是由c语言写的。项目中的C++代码要想调用c语言代码,c语言部分在声明处一定要加

#ifdef __cplusplus 
#ifdef __cplusplus 
extern "C" {
#endif

void __declspec(dllimport) testacc();
void __declspec(dllexport) hello();

#ifdef __cplusplus 
}
#endif

参考:
https://stackoverflow.com/questions/43859099/how-to-find-signature-of-specific-pgi-functions-used-for-openacc
https://stackoverflow.com/questions/38252587/c-dynamically-linking-a-pgi-openacc-enabled-library-with-gcc?rq=1
https://stackoverflow.com/questions/43859099/how-to-find-signature-of-specific-pgi-functions-used-for-openacc

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值