使用 PGI 编译器安装 ioapi 3.1

本文档详细介绍了如何使用PGI 20.7编译器和Intel编译器安装NetCDF 4.7.4和NetCDF Fortran 4.5.3。在配置IOAPI时,特别提到了针对Intel Xeon E5-2680v3 CPU的优化选项,并指出PGI 20.7不支持IOAPI 3.2,需要21.1及以上版本。编译过程中,对Makefile进行了修改以适应编译环境,并提供了修改步骤和注意事项。

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

软 / 硬件版本

  • PGI 20.7

  • netcdf-c 4.7.4

  • netcdf-fortran 4.5.3

  • cpu : Intel Xeon® E5-2680 v3

安装 netcdf

参考以前的文章

我这里使用的是之前用 intel 编译器编译的 netcdf ,在编译 ioapi 时并没有重新使用 pgi 编译器重新编译,暂时没有出现问题,后续有出错会再更新

安装 ioapi

修改配置文件

总共有 4 处文件需要修改

./Makefile
./ioapi/Makefile
./ioapi/Makeinclude.Linux2_x86_64pg_pgcc_nomp
./m3tools/Makefile.nocpl

修改 ./Makefile
BASEDIR = /path/to/ioapi-3.1
INSTALL  = /path/to/want/to/install

CPLMODE = nocpl
修改 ./ioapi/Makefile
BASEDIR = /path/to/ioapi-3.1

这里我没有添加 netcdf 库的链接,编译也没有问题,后续如果你在使用过程中出现确实 nc 或 nf 函数的话就可能要在这里添加

修改 ./ioapi/Makeinclude.Linux2_x86_64pg_pgcc_nomp
COPTFLAGS = -O2 -tp=skylake
FOPTFLAGS = -O2 -tp=skylake -V -Mnosecond_underscore

这里最重要的就是添加你的 CPU 架构类型 -tp=xxxx

这个选项就算相当于 gcc 中的 -march=native 参数

修改 ./m3tools/Makefile.nocpl
BASEDIR = /path/to/ioapi-3.1

FFLAGS = -I$(IODIR) -DIOAPICPL $(ARCHFLAGS) $(PARFLAGS) $(FOPTFLAGS) $(ARCHFLAGS) -I/path/to/netcdf/include

LDFLAGS = -I$(IODIR) -DIOAPICPL $(DEFINEFLAGS) $(ARCHFLAGS) -I/path/to/netcdf/include

LIBS  = -L${OBJDIR} -lioapi -L/path/to/netcdf/lib -lnetcdff -lnetcdf $(OMPLIBS) $(ARCHLIB) $(ARCHLIBS)

修改完成后执行

cp ./m3tools/Makefile.nocpl ./m3tools/Makefile

直接覆盖即可

如果直接使用原来的 Makefile 会提示 xxxx 是一个目录这样的错误,我暂时也没看出是哪里的问题,就直接拿模板覆盖了

make

上述 4 个文件都修改完成后就可以开始编译了

make BIN=Linux2_x86_64pg_pgcc_nomp

没有出现错误就可以了

这里不建议执行 make install
我发现大多数需要使用 ioapi 库的软件都会在编译时链接

-I/path/to/ioapi-3.1/ioapi/fixed_src

执行 install 有点多此一举

这里有一点提醒大家,pgi 20.7 编译器无法编译 ioapi-3.2,需要 21.1 版本之后才能安装

具体原因可以查看下面的链接

https://forums.developer.nvidia.com/t/nvfortran-fatal-fort2-terminated-by-signal-11/157434

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MrXun_

谢谢老板的支持!!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值