02. MPI

环境

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

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • MPI(Message Passing Interface) 高性能计算中标准的并行编程模型,他是通用的,通用也是...
    全村滴希望阅读 3,957评论 0 0
  • 前言 计算机编程语言很多,但是适合高性能数值计算的语言却并不多,在高性能计算的项目中通常会使用到的语言有 Fort...
    自可乐阅读 20,192评论 3 22
  • 作者:邵正将PytLab,Python 中文社区专栏作者。主要从事科学计算与高性能计算领域的应用,主要语言为Pyt...
    Python中文社区阅读 10,249评论 1 31
  • 在上一篇中我们介绍了 MPI-3 中增强的单边通信方法,下面我们将介绍 MPI-3 中共享内存操作。 当前硬件的发...
    自可乐阅读 12,588评论 2 2
  • 中条山老人画家宏志的早年作品
    7637124d4239阅读 1,162评论 0 2

友情链接更多精彩内容