OpenACC Hello World (win10)
Posted cuancuancuanhao
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了OpenACC Hello World (win10)相关的知识,希望对你有一定的参考价值。
? 在 windows 10 上搭建 OpenACC 环境,挺麻烦
● 安装顺序:Visual Studio 2015(PGI 编译器不支持 Visual Studio 2017);CUDA Toolkite 9.1(https://developer.nvidia.com/cuda-downloads);PGI 编译器(https://www.pgroup.com/products/community.htm?*utm*_campaign=CE&utm_source=dev_nvidia_oacc&utm_medium=web_link&utm_term=*get_ce_text*)
● 编写代码
1 #include <stdio.h> 2 #include <openacc.h> 3 4 int main() 5 { 6 #ifdef _OPENACC 7 printf("%d device found!\n", acc_get_num_devices(acc_device_not_host)); 8 #else 9 printf("OpenACC not support.\n"); 10 #endif 11 getchar(); 12 return 0; 13 }
● 在 Visual Studio 2015 上死活不能编译,先是要求添加 openacc.h 的路径(C:\Program Files\PGICE\win64\18.4\include),然后报错:
严重性 代码 说明 项目 文件 行 错误 C1021 无效的预处理器命令“include_next” OpenACCProject c:\program files\pgice\win64\18.4\include\sal.h 28
这是因为在 <sal.h> 中第 28 行有 #include_next <sal.h> ,意思是该 <sal.h> 中没有找到对应的头文件,要求预处理器去包含搜索路径的下一个 <sal.h>。但是 include_next 不是标准 C 的预处理器语句,在 Visual Studio 中无法执行(据说有办法解决,看起来有点麻烦,https://stackoverflow.com/questions/24638855/how-to-use-arduino-with-microsoft-visual-studio-due-to-include-next-precompil)。如果将该头文件中
1 ... 2 #if defined __PGI_TOOLS14 3 #include <sal14.h> 4 ...
前面强行添上 #include <sal4.h> (该目录下确实有 <sal14.h> 这个头文件)并删除 #include_next 行,则会引起 vadefs.h 中的相同类型的错误,再把 vadefs.h 中
1 ... 2 #if defined __PGI_TOOLS12 3 #include <vadefs12.h> 4 ...
前面强行添上 #include <C:/Program Files/PGICE/win64/18.4/include_acc/OT_14/vadefs.h> ,则没有了 #include_next 错误,但会有链接阶段报错:
严重性 代码 说明 项目 文件 行 错误 LNK1158 无法运行“rc.exe” OpenACCProject D:\Code\OpenACC\OpenACCProject\OpenACCProject\LINK 1
说到底这是 MS 编译器不支持 OpenACC 的原因,缺少宏 _OPENACC 的定义
● 代码在 pgi 编译器下正确的编译和执行
1 PGI Community Edition 18.4 2 Microsoft Windows [版本 10.0.17134.1] 3 (c) 2018 Microsoft Corporation。保留所有权利。 4 5 C:\Users\cuan>D: 6 7 D:\>cd D:\Code\OpenACC\OpenACCProject\OpenACCProject 8 9 D:\Code\OpenACC\OpenACCProject\OpenACCProject>pgcc -o main-no-acc.exe main.c 10 11 D:\Code\OpenACC\OpenACCProject\OpenACCProject>main-no-acc.exe 12 OpenACC not support. 13 14 15 D:\Code\OpenACC\OpenACCProject\OpenACCProject>pgcc -acc -o main.exe main.c 16 17 D:\Code\OpenACC\OpenACCProject\OpenACCProject>main.exe 18 1 device found! 19 20 21 D:\Code\OpenACC\OpenACCProject\OpenACCProject>
以上是关于OpenACC Hello World (win10)的主要内容,如果未能解决你的问题,请参考以下文章