Top Banner
May 2008 Slidecast: What is [Open] M Slidecast: What is [Open] MPI? Jeff Squyres May 2008
24

What is [Open] MPI?

May 12, 2015

Download

Education

Jeff Squyres

Description of the Message Passing Interface (MPI) and a brief overview of of the Open MPI open source software project.
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: What is [Open] MPI?

May 2008 Slidecast: What is [Open] MPI? 1

Slidecast:What is [Open] MPI?

Jeff SquyresMay 2008

Page 2: What is [Open] MPI?

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?

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?

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?

May 2008 Slidecast: What is [Open] MPI? 5

User application

MPI API

Operating System

MPI High-Level View

Page 6: What is [Open] MPI?

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?

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?

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?

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?

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?

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?

May 2008 Slidecast: What is [Open] MPI? 12

User application

MPI API

Operating System

MPI High-Level View

Page 13: What is [Open] MPI?

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?

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?

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?

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?

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?

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?

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?

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?

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?

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?

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?

May 2008 Slidecast: What is [Open] MPI? 24