OpenACC编译构建方法(windows)

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

你可能感兴趣的:(OpenACC)