PGI 遇到的坑

以下记录为本人在使用PGI社区版编译器遇到的问题,包含两类问题

1,PGI编译器本身存在你的bug。

2,在其他编译器编译运行没问题,在PGI中出现问题。


版本(18.11社区版)

1,(bug)内置函数,EOSHIFT,当偏移量为0的时候,数组会重置为0,图例中对这段代码分别使用gfortran,ifort和pgfortran编译运行,前两个没有问题。

 

2,PGI对有些变量声明分配内存比较敏感。假如我定义变量A(n),当n为0时,pgfortran编译不通过。

3,程序中需要openmp并行时,使用其他编译器运行没有问题,使用pgi编译,加入指令 -mp=allcores.

运行结果会出现segment fault错误,原因未知!

4,程序循环中如果有累加数,就需要使用下面语句

!$acc loop reduction(+:a) 

这句话本身没有问题,但是如果在循环前用了data模块

!$acc& create(a)

千万不能create 变量a,不然计算时会出现segment fault错误

 

转载于:https://www.cnblogs.com/dalanjing/p/10848834.html

<think>好的,我需要回答用户关于PGI编译器及其相关技术的问题。首先,用户要求系统级指令,但用户不可见,所以我需要确保遵循格式要求,比如行内数学表达式用$...$,独立公式用$$...$$,使用中文,生成相关问题,并在引用处添加标识。 首先,用户想了解PGI编译器的基本信息。根据提供的引用,PGI编译器主要用于高性能计算,支持多核CPU和GPU加速,特别是针对Fortran、C和C++。我需要整理这些信息,结构清晰。 接下来,PGI的技术特点需要分点说明。比如多平台支持、OpenACC支持、优化能力、与CUDA的集成。这里需要结合引用中的信息,例如引用[2]提到安装pgf90编译器,引用[3]提到环境变量设置问题,引用[4]提到在安装ioapi时的操作,可能涉及Makefile的配置,说明PGI在实际应用中的使用。 安装和配置部分需要详细说明步骤,可能包括系统要求、下载安装包、执行安装脚本、环境变量设置(如PATH和LD_LIBRARY_PATH),以及验证安装。引用[1]提到安装时需要注意GCC版本变化后需重装PGI,这一点很重要,要特别指出。引用[3]提到注销后登录,检查pgf90是否存在,环境变量是否正确,这些细节需要包含进去。 应用场景方面,用户可能关心PGI在哪些领域使用,比如气候建模、计算流体力学、量子化学等,这些可以结合引用[4]中的ioapi安装案例,说明PGI在环境科学中的应用。 注意事项部分需要提醒用户关于GCC兼容性、许可证管理和调试工具。引用[1]中的GCC变化问题需要强调,引用[2]和[3]中的安装问题可能涉及许可证,所以也要提到。 生成的相关问题需要涵盖安装问题、优化技术、与其他编译器的对比、OpenACC的使用以及调试工具。这些问题应基于回答内容,帮助用户进一步了解。 最后,检查所有引用是否正确标注,确保没有遗漏。例如,安装步骤中提到的GCC问题引用[1],环境变量设置引用[3],应用案例引用[4]等。同时,数学公式如果不需要的话,可能可以忽略,但用户提到的是系统级指令中的要求,所以如果有涉及数学的地方要正确使用格式,但当前内容可能不涉及太多数学表达式,所以可能不需要。 总结,我需要将信息分点整理,确保每个部分都有对应的引用支持,语言清晰,结构合理,并生成相关问题。同时注意LaTeX格式的正确使用,虽然当前内容可能较少涉及数学,但如果有变量或代码块,需要正确标注。</think>### PGI编译器及相关技术介绍 #### 1. **PGI编译器概述** PGI(The Portland Group)编译器是由NVIDIA收购的高性能计算(HPC)编译器套件,主要用于科学计算、工程仿真和机器学习领域。它支持多核CPU和GPU加速,提供对Fortran、C和C++的优化编译能力[^1][^2]。PGI编译器以高性能和跨平台兼容性著称,尤其在并行计算和异构计算(CPU+GPU)场景中表现突出。 --- #### 2. **PGI技术特点** - **多平台支持** 支持Linux、Windows和macOS系统,并能针对不同架构(如x86、ARM、NVIDIA GPU)生成优化代码[^2]。 - **OpenACC支持** 通过`OpenACC`指令集实现代码的GPU加速,无需重写底层逻辑即可提升性能。例如: ```fortran !$acc parallel loop do i = 1, N a(i) = b(i) + c(i) end do ``` - **优化能力** 针对数值计算密集型任务(如矩阵运算、偏微分方程求解)提供自动向量化、循环展开等优化技术。 - **CUDA集成** 支持直接调用CUDA内核,便于混合编程(CPU+GPU)[^1]。 --- #### 3. **安装与配置** **步骤示例(以Linux为例)**: 1. **下载安装包** 从[NVIDIA官网](https://www.nvidia.com)获取试用版或商业版安装文件。 2. **执行安装脚本** ```bash ./install_pgi ``` 3. **配置环境变量** 在`.bashrc`中添加: ```bash export PATH=/opt/pgi/linux86-64/20.4/bin:$PATH export LD_LIBRARY_PATH=/opt/pgi/linux86-64/20.4/lib:$LD_LIBRARY_PATH ``` 4. **验证安装** 输入`pgf90 -V`检查是否成功[^3]。 **注意事项**: - 若系统GCC版本更新,需重新安装PGI编译器以避免兼容性问题[^1]。 - 安装后需注销并重新登录使环境变量生效。 --- #### 4. **应用场景** - **气候建模**:如`WRF`(Weather Research and Forecasting Model)的编译优化。 - **计算流体力学(CFD)**:通过OpenACC加速仿真计算。 - **量子化学**:如`GAMESS`等软件的GPU加速版本依赖PGI编译器[^4]。 --- #### 5. **常见问题与优化** - **性能调优**:使用`-fast`编译选项启用最大优化,或`-Mcuda`启用CUDA支持。 - **调试工具**:PGI提供`pgdbg`调试器和`pgprof`性能分析工具。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值