環(huán)境
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有很多發(fā)行版皮服,我們使用的是 OpenMPI-1.4.5
- 參考書:都志輝《高性能計(jì)算并行編程技術(shù)---MPI并行程序設(shè)計(jì)》
- https://mpitutorial.com/tutorials/
- https://computing.llnl.gov/tutorials/mpi/
- https://mpitutorial.com/recommended-books/
并行機(jī)
SIMD
MIMD
SPMD
MPMD
內(nèi)存
共享內(nèi)存
分布式內(nèi)存
分布式共享內(nèi)存
并行編程模型
數(shù)據(jù)并行
消息傳遞
并行算法
數(shù)值計(jì)算
符號(hào)計(jì)算(非數(shù)值計(jì)算)
同步并行算法
異步并行算法
純并行算法
一個(gè)好的并行算法要既能很好地匹配并行計(jì)算機(jī)硬件體系結(jié)構(gòu)的特點(diǎn)又能反映問題內(nèi)在并行性
對(duì)于集群計(jì)算有一個(gè)很重要的原則就是設(shè)法加大計(jì)算時(shí)間相對(duì)于通信時(shí)間的比重減少通信次數(shù)甚至以計(jì)算換通信
MPI 程序設(shè)計(jì)
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();
}
核心函數(shù)
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
兩種基本模式
對(duì)等模式
主從模式
四種通信模式
標(biāo)準(zhǔn)通信模式
緩存通信模式buffered
同步通信模式
就緒通信模式
多機(jī)的MPI程序是怎么啟動(dòng)起來的
先對(duì)集訓(xùn)內(nèi)的機(jī)器,建專門的賬號(hào)奄容,/etc/hosts配置信任列表冰更,
mpirun -np <number of processes> <program name and arguments>
mpirun是MPI程序的啟動(dòng)腳本它可以簡(jiǎn)化作業(yè)的啟動(dòng)程序 并且盡可能把不同的設(shè)備
特征屏蔽掉 提供給用戶一個(gè)通用的MPI并行機(jī)的概念
《高性能計(jì)算并行編程技術(shù)---MPI并行程序設(shè)計(jì)》略讀到chap11, 高級(jí)部分以后有需要再閱讀 2019.12.18