02. MPI

作者: GradientDescent | 来源:发表于2019-12-18 12:27 被阅读0次

环境

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

并行机

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

相关文章

网友评论

      本文标题:02. MPI

      本文链接:https://www.haomeiwen.com/subject/rmocnctx.html