环境
bjht9050
munge-0.5.11
slurm-19.05.2
openmpi-1.4.5
./submit-service/run_job_server.py : slurm commands server
./submit-service/submit_job.py: slurm commands client
MPI
- MPI有很多发行版,我们使用的是 OpenMPI-1.4.5
- 参考书:都志辉《高性能计算并行编程技术---MPI并行程序设计》
- https://mpitutorial.com/tutorials/
- https://computing.llnl.gov/tutorials/mpi/
- https://mpitutorial.com/recommended-books/
并行机
SIMD
MIMD
SPMD
MPMD
内存
共享内存
分布式内存
分布式共享内存
并行编程模型
数据并行
消息传递
并行算法
数值计算
符号计算(非数值计算)
同步并行算法
异步并行算法
纯并行算法
一个好的并行算法要既能很好地匹配并行计算机硬件体系结构的特点又能反映问题内在并行性
对于集群计算有一个很重要的原则就是设法加大计算时间相对于通信时间的比重减少通信次数甚至以计算换通信
MPI 程序设计
截屏2019-12-15下午9.52.58.png
demo
#include "mpi.h"
#include <stdio.h>
#include <math.h>
int main(int argc, char* argv[]) {
int myid, numprocs;
int namelen;
char processor_name[MPI_MAX_PROCESSOR_NAME];
MPI_Init(&argc,&argv);
MPI_Comm_rank(MPI_COMM_WORLD,&myid);
MPI_Comm_size(MPI_COMM_WORLD,&numprocs);
MPI_Get_processor_name(processor_name,&namelen);
fprintf(stderr,"Hello World! Process %d of %d on %s\n",
myid, numprocs, processor_name);
MPI_Finalize();
}
核心函数
MPI_Init
MPI_Comm_rank
MPI_Comm_size
MPI_Get_processor_name
MPI_Finalzie
MPI_Send
MPI_Recv
chap 6 done
chap 7 done 12.17
chap 8 done
chap 9 done
两种基本模式
对等模式
主从模式
四种通信模式
标准通信模式
缓存通信模式buffered
同步通信模式
就绪通信模式
多机的MPI程序是怎么启动起来的
先对集训内的机器,建专门的账号,/etc/hosts配置信任列表,
mpirun -np <number of processes> <program name and arguments>
mpirun是MPI程序的启动脚本它可以简化作业的启动程序 并且尽可能把不同的设备
特征屏蔽掉 提供给用户一个通用的MPI并行机的概念
《高性能计算并行编程技术---MPI并行程序设计》略读到chap11, 高级部分以后有需要再阅读 2019.12.18