. /opt/intel/2020/bin/compilervars.sh intel64
注意:在中设置的级别有可能要高于使用module load
设置的,可以运行icc -v
或which icc
等命令查看实际使用的编译环境。
建议采用对一般程序来说性能较好的Intel编译器,用户也可以选择适合自己程序的编译器,以取得更好的性能。
本部分主要介绍串行C/C++
Fortran源程序和OpenMP并行程序的编译,MPI并行程序的编译将在后面介绍。
串行C/C++程序的编译
C/C++输入输出文件后缀与类型的关系
编译器默认将按照输入文件的后缀判断文件类型,见下表。
输入文件后缀与类型的关系
filename.c
filename.C
filename.CC
传给编译器
filename.cc
filename.cpp
filename.cxx
C++源文件
传给编译器
filename.a
filename.so
静态链接库文件
动态链接库文件
传递给链接器
filename.i
已预处理的文件
传递给标准输出
filename.o
传递给链接器
filename.s
传递给汇编器
将Fortran 77程序yourprog.for编译为可执行文件yourprog:
gcc 4.x系列:gfortran -o yourprog yourprog.for
gcc 3.x系列:g77 -o yourprog yourprog.for
将Fortran 90程序yourprog.f90编译为可执行文件yourprog:
gfortran -o yourprog yourprog.f90
将Fortran程序yourprog.f90编译为对象文件yourprog.o而不是可执行文件:
gfortran -c yourprog.f90
将Fortran程序yourprog.f90编译为汇编文件yourprog.s而不是可执行文件:
gfortran -S yourprog.f90
生成带有调试信息的可执行文件以用于调试:
gfortran -g yourprog.f90 -o yourprog
指定头文件路径编译:
gfortran -I/alt/include -o yourprog yourprog.f90
指定库文件路径及库名编译:
gfortran -L/alt/lib -lxyz -o yourprog yourprog.f90
OpenMP程序的编译
Intel、PGI和GNU编译器都支持OpenMP并行,只需利用相关编译命令结合必要的OpenMP编译选项编译即可。对应此三种编译器的OpenMP编译选项:
Intel编译器:-qopenmp(2015及之后版)
PGI编译器:-mp
GNU编译器:-fopenmp
采用这三种编译器的OpenMP源程序编译例子如下:
Intel编译器:
将C程序yourprog-omp.c编译为可执行文件yourprog-omp:
icc -qopenmp -o yourprog-omp yourprog.c
将Fortran 90程序yourprog-omp.f90编译为可执行文件yourprog-omp:
ifort -qopenmp -o yourprog-omp yourprog.f90
OpenMP程序的运行
OpenMP程序的运行一般是通过在运行前设置环境变量OMP_NUM_THREADS
来控制线程数,比如在BASH中利用export OMP_NUM_THREADS=40
设置使用40个线程运行。
注意,本系统为节点内共享内存节点间分布式内存的架构,因此只能在一个节点上的CPU之间运行同一个OpenMP程序作业,在提交作业时需要使用相应选项以保证在同一个节点运行。
[1]
目前尚未配置,等以后配置上