常用编译选项
ICC编译器
环境准备
1 2 3
| source /opt/intel/bin/compilervars.sh intel64 source /opt/intel/bin/iccvars.sh intel64 source /opt/intel/vtune_profiler/env/vars.sh
|
ICC编译链接: OpenMP + OpenMPI
1
| mpicxx -std=c++11 -g -fopenmp -O3 -xhost -qopt-report=5 -qopt-report-phase=vec -cxx=icc
|
PGI + NVCC编译器
环境准备
向~/.modulerc
添加以下代码给Environment Modules导入文件夹/opt/pgi/modulefiles
1
| module use /opt/pgi/modulefiles
|
启动Environment Modules
1
| source /etc/profile.d/modules.sh
|
然后启动PGI环境
1 2 3
| module load pgi-nollvm module load pgi/19.10 module load openmpi
|
添加NVIDIA工具链路径
1
| export PATH=/usr/local/cuda-11.1/bin:$PATH
|
PGI编译:OpenACC + OpenMP + OpenMPI
1
| mpicxx -std=c++11 -I/usr/local/cuda-11.1/include -g -O3 -mp=numa -acc -Minfo=accel -ta=tesla:cc60 -fast
|
NVCC编译: CUDA + OpenMPI
1
| nvcc -lineinfo -g -O3 -std=c++11 -gencode arch=compute_60,code=sm_60 -ccbin=mpicxx
|
PGI链接
1
| mpicxx -std=c++11 -I/usr/local/cuda-11.1/include -g -O3 -mp=numa -acc -Minfo=accel -ta=tesla:cc60 -fast -lnvToolsExt -lcudart -L/usr/local/cuda-11.1/lib64
|
性能分析方法
Intel Vtune性能分析
环境准备
同ICC
环境准备
GUI启动分析
CLI启动分析
1
| /opt/intel/vtune_profiler_2020.1.0.607630/bin64/vtune -collect hpc-performance -finalization-mode=full -app-working-dir /home/tonny -- /home/tonny/myscript
|
myscript
是一个包含了启动环境变量,用mpirun
启动目标程序的脚本
NVIDIA Profiler性能分析
环境准备
添加NVIDIA工具链路径
1
| export PATH=/usr/local/cuda-11.1/bin:$PATH
|
推荐使用Java 8,NVVP不兼容高版本Java
CLI启动分析
1
| mpirun -np 4 nvprof --cpu-profiling on --cpu-profiling-mode top-down --annotate-mpi openmpi -o output.%h.%p.%q{OMPI_COMM_WORLD_RANK}.nvvp ./myprogram
|
调试方法
多进程多窗口GDB调试
1 2
| mpirun -np 4 xterm gdb ./myprogram mpirun -np 4 xterm cuda-gdb ./myprogram
|
多进程单窗口GDB调试
1 2
| mpirun -np 1 gdb ./myprogram : -np 3 ./myprogram mpirun -np 1 cuda-gdb ./myprogram : -np 3 ./myprogram
|
PGI GUI调试
调试技巧
CUDA-GDB查看显存上数组
1
| print ((@global double*)arr)[0]@100
|