what is [open] mpi?
DESCRIPTION
Description of the Message Passing Interface (MPI) and a brief overview of of the Open MPI open source software project.TRANSCRIPT
![Page 1: What is [Open] MPI?](https://reader035.vdocuments.site/reader035/viewer/2022081502/555151c8b4c905e1708b45d0/html5/thumbnails/1.jpg)
May 2008 Slidecast: What is [Open] MPI? 1
Slidecast:What is [Open] MPI?
Jeff SquyresMay 2008
![Page 2: What is [Open] MPI?](https://reader035.vdocuments.site/reader035/viewer/2022081502/555151c8b4c905e1708b45d0/html5/thumbnails/2.jpg)
May 2008 Slidecast: What is [Open] MPI? 2
What is MPI?
• Message Passing Interface “De facto” standard Not an “official” standard (IEEE, IETF, …)
• Written and ratified by the MPI Forum Body of academic, research, and industry
representatives
• MPI is two spec documents: MPI-1 and MPI-2 Specified interfaces in C, C++, Fortran 77/90
![Page 3: What is [Open] MPI?](https://reader035.vdocuments.site/reader035/viewer/2022081502/555151c8b4c905e1708b45d0/html5/thumbnails/3.jpg)
May 2008 Slidecast: What is [Open] MPI? 3
MPI Forum
• Published MPI-1 spec in 1994
• Published MPI-2 spec in 1996 Additions to MPI-1
• Recently reconvened (Jan 2008) Working on MPI-2.1 (small bug fixes)
• Will issue a single document for MPI 1+2
Also working on MPI-2.2 (bigger bug fixes) Also working on MPI-3 (entirely new stuff)
![Page 4: What is [Open] MPI?](https://reader035.vdocuments.site/reader035/viewer/2022081502/555151c8b4c905e1708b45d0/html5/thumbnails/4.jpg)
May 2008 Slidecast: What is [Open] MPI? 4
What is MPI?
• Software implementations of spec Mostly host-side software
• “Middleware” Sits between the application and network Simplifies network activity to the application
• Source code portability Run apps on commodity clusters and “big iron”
supercomputers
![Page 5: What is [Open] MPI?](https://reader035.vdocuments.site/reader035/viewer/2022081502/555151c8b4c905e1708b45d0/html5/thumbnails/5.jpg)
May 2008 Slidecast: What is [Open] MPI? 5
User application
MPI API
Operating System
MPI High-Level View
![Page 6: What is [Open] MPI?](https://reader035.vdocuments.site/reader035/viewer/2022081502/555151c8b4c905e1708b45d0/html5/thumbnails/6.jpg)
May 2008 Slidecast: What is [Open] MPI? 6
What is MPI?
• Intended to deliver very high performance Low latency, high bandwidth
• Examples 2 servers + switch, user-level processes DDR InfiniBand
• ~1-2s half-round trip 0-byte ping pong• ~14Gbps bandwidth for large messages
10Gbps Ethernet• ~5-7s half-round trip 0-byte ping pong• ~10Gbps bandwidth for large messages
![Page 7: What is [Open] MPI?](https://reader035.vdocuments.site/reader035/viewer/2022081502/555151c8b4c905e1708b45d0/html5/thumbnails/7.jpg)
May 2008 Slidecast: What is [Open] MPI? 7
MPI Implementations
• Many exist / are available for customers Vendors: HP MPI, Intel MPI, Scali MPI
• Have their own support channels
Open source: Open MPI, MPICH[2], …• Rely on open source community for support• But also have some vendor support
• Various research-quality implementations Proof-of-concept Not usually intended for production usage
![Page 8: What is [Open] MPI?](https://reader035.vdocuments.site/reader035/viewer/2022081502/555151c8b4c905e1708b45d0/html5/thumbnails/8.jpg)
May 2008 Slidecast: What is [Open] MPI? 8
Why So Many MPI’s?
• A complicated question… Some aim to make money (closed source) Some targeted at specific platforms Others aimed at research (open source) History and politics also involved (yuck)
• Open MPI is a fascinating blend of research and industry
![Page 9: What is [Open] MPI?](https://reader035.vdocuments.site/reader035/viewer/2022081502/555151c8b4c905e1708b45d0/html5/thumbnails/9.jpg)
May 2008 Slidecast: What is [Open] MPI? 9
Target Audience
• Scientists and engineers Don’t know or care how network works Not computer scientists Sometimes not even [very good] programmers
• Parallel computing Using tens, hundreds, or thousands of servers
in a single computational program Intended for high-performance computing
![Page 10: What is [Open] MPI?](https://reader035.vdocuments.site/reader035/viewer/2022081502/555151c8b4c905e1708b45d0/html5/thumbnails/10.jpg)
May 2008 Slidecast: What is [Open] MPI? 10
Parallel Computing
• Use 10’s, 100’s, 1000’s of processors When the computation is too big for one
server
• Spread the job across multiple servers Individual user processes running in concert Acting together as a single application
• More RAM
• More processing power
• Divide and conquer
![Page 11: What is [Open] MPI?](https://reader035.vdocuments.site/reader035/viewer/2022081502/555151c8b4c905e1708b45d0/html5/thumbnails/11.jpg)
May 2008 Slidecast: What is [Open] MPI? 11
MPI Abstracts the Network
• Sockets? Shared memory? Ethernet? InfiniBand? …something else? Doesn’t matter
• Application calls MPI_SEND / MPI_RECV The Right magic happens
• Connections are made automatically Sockets (IP address/port) Shared memory (e.g., mmap file) InfiniBand (queue pair setup)
![Page 12: What is [Open] MPI?](https://reader035.vdocuments.site/reader035/viewer/2022081502/555151c8b4c905e1708b45d0/html5/thumbnails/12.jpg)
May 2008 Slidecast: What is [Open] MPI? 12
User application
MPI API
Operating System
MPI High-Level View
![Page 13: What is [Open] MPI?](https://reader035.vdocuments.site/reader035/viewer/2022081502/555151c8b4c905e1708b45d0/html5/thumbnails/13.jpg)
May 2008 Slidecast: What is [Open] MPI? 13
Server
User application
MPI API
Operating System
Example: 4 Servers
Server
User application
MPI API
Operating System
Server
User application
MPI API
Operating System
Server
User application
MPI API
Operating System
Network
![Page 14: What is [Open] MPI?](https://reader035.vdocuments.site/reader035/viewer/2022081502/555151c8b4c905e1708b45d0/html5/thumbnails/14.jpg)
May 2008 Slidecast: What is [Open] MPI? 14
Server
User application
MPI API
Operating System
Example: 2 Servers
User application
MPI API
Server
User application
MPI API
User application
MPI API
Operating System
Network
![Page 15: What is [Open] MPI?](https://reader035.vdocuments.site/reader035/viewer/2022081502/555151c8b4c905e1708b45d0/html5/thumbnails/15.jpg)
May 2008 Slidecast: What is [Open] MPI? 15
Server
User application
MPI API
Operating System
Example: 1 Server
User application
MPI API
User application
MPI API
User application
MPI API
![Page 16: What is [Open] MPI?](https://reader035.vdocuments.site/reader035/viewer/2022081502/555151c8b4c905e1708b45d0/html5/thumbnails/16.jpg)
May 2008 Slidecast: What is [Open] MPI? 16
Runtime
• MPI implementations also include a runtime environment Need to start processes on multiple servers
simultaneously Typically requires some user-level setup Common source of errors
![Page 17: What is [Open] MPI?](https://reader035.vdocuments.site/reader035/viewer/2022081502/555151c8b4c905e1708b45d0/html5/thumbnails/17.jpg)
May 2008 Slidecast: What is [Open] MPI? 17
Trivial MPI Application
int rank, size, message = -1, tag = 11111;
MPI_Init(NULL, NULL); MPI_Init(NULL, NULL); /* Startup */
MPI_Comm_rank(…, &rank); MPI_Comm_rank(…, &rank); /* Who am I? */
MPI_Comm_size(…, &size); MPI_Comm_size(…, &size); /* How many peers do I have? */
to = (rank + 1) % size;
from = (rank + size - 1) % size;
/* Send a trivial message around in a ring */
if (0 == rank) {
message = 42;
MPI_Send(&message, 1, MPI_INT, to, tag, …);MPI_Send(&message, 1, MPI_INT, to, tag, …);
MPI_Recv(&message, 1, MPI_INT, from, tag, …);MPI_Recv(&message, 1, MPI_INT, from, tag, …);
} else {
MPI_Recv(&message, 1, MPI_INT, from, tag, …);MPI_Recv(&message, 1, MPI_INT, from, tag, …);
MPI_Send(&message, 1, MPI_INT, to, tag, …);MPI_Send(&message, 1, MPI_INT, to, tag, …);
}
MPI_Finalize();MPI_Finalize();
![Page 18: What is [Open] MPI?](https://reader035.vdocuments.site/reader035/viewer/2022081502/555151c8b4c905e1708b45d0/html5/thumbnails/18.jpg)
May 2008 Slidecast: What is [Open] MPI? 18
Trivial MPI Application
Process 0to=1
from=3
Process 2to=3
from=1
Process 1to=2
from=0
Process 3to=0
from=2
MPI_Send(…)
MPI_Send(…)
MPI_Send(…)
MPI_Send(…) MPI_Recv(…)
MPI_Recv(…)
MPI_Recv(…)
MPI_Recv(…)
![Page 19: What is [Open] MPI?](https://reader035.vdocuments.site/reader035/viewer/2022081502/555151c8b4c905e1708b45d0/html5/thumbnails/19.jpg)
May 2008 Slidecast: What is [Open] MPI? 19
Open MPI
• YAMPI (yet another MPI) …but not really Replaces several prior
MPI’s
• Collaborate = great MPI implementation What a concept! Lots of “MPI-smart” people
out there
• Open source project Influenced by both
research and industry
Research /academia
Industry
![Page 20: What is [Open] MPI?](https://reader035.vdocuments.site/reader035/viewer/2022081502/555151c8b4c905e1708b45d0/html5/thumbnails/20.jpg)
May 2008 Slidecast: What is [Open] MPI? 20
Open MPI
• It’s two words! Open MPI NOT “OpenMPI”
• Frequently abbreviated “OMPI” Pronounced “oom-pee”
![Page 21: What is [Open] MPI?](https://reader035.vdocuments.site/reader035/viewer/2022081502/555151c8b4c905e1708b45d0/html5/thumbnails/21.jpg)
May 2008 Slidecast: What is [Open] MPI? 21
Open MPI
• Fundamentally based on plugins A.k.a. “components” or “modules”
• Plugins for everything Back-end resource manager Back-end network Back-end checkpointer …etc. Currently ~30 types of plugins in Open MPI
• Recurring theme: run-time decisions
![Page 22: What is [Open] MPI?](https://reader035.vdocuments.site/reader035/viewer/2022081502/555151c8b4c905e1708b45d0/html5/thumbnails/22.jpg)
May 2008 Slidecast: What is [Open] MPI? 22
User application
MPI API
Modular Component Architecture (MCA)
Framework
Co
mp
.
Co
mp
.
Co
mp
.
…
Framework
Co
mp
.
Co
mp
.
Co
mp
.
…
Framework
Co
mp
.
Co
mp
.
Co
mp
.
…
Framework
Co
mp
.
Co
mp
.
Co
mp
.
…
Framework
Co
mp
.
Co
mp
.
Co
mp
.
…
Framework
Co
mp
.
Co
mp
.
Co
mp
.
…
Framework
Co
mp
.
Co
mp
.
Co
mp
.
…
…
Plugin High-Level View
![Page 23: What is [Open] MPI?](https://reader035.vdocuments.site/reader035/viewer/2022081502/555151c8b4c905e1708b45d0/html5/thumbnails/23.jpg)
May 2008 Slidecast: What is [Open] MPI? 23
Resources
• MPI Forum http://www.mpi-forum.org/
• Open MPI General web site: http://www.open-mpi.org/ FAQ: http://www.open-mpi.org/faq/
• Magazine columns about MPI http://cw.squyres.com/
![Page 24: What is [Open] MPI?](https://reader035.vdocuments.site/reader035/viewer/2022081502/555151c8b4c905e1708b45d0/html5/thumbnails/24.jpg)
May 2008 Slidecast: What is [Open] MPI? 24