D32ogoqmya1dw8.cloudfront.net
MPI 01: An Introduction to MPI with Open MPI
Draft 1 -- Patrick Garrity -- St. Olaf College
Until recently, parallelism in software could not be achieved on most single machines. Before multi-core existed, much of high performance computing (HPC) relied on message passing, which allows multiple computers to collaborate on a single problem. Even now message passing is a large part of HPC, and has been given even more power by the presence of multiple cores.
1. Message Passing
One programming technique to achieve parallelism is called message passing. In message passing, different processes communicate with one another through messages. These messages are tagged pieces of data sent across a network. Since this technology is network-based, it allows processes on many different machines to communicate with one-another, and in turn for multiple computers to run a coordinated effort to execute a program. In addition, on a multi-core machine a message passing program can send messages between multiple processes running on a single machine.
There are a large number of libraries for message passing, and different institutions may be using upwards of ten of these at a time. This code is called the message passing interface, or MPI. There are a number of proprietary implementations, but there are also open source implementations that are community-maintained. One of these, Open MPI, is the result of the convergence of multiple MPI projects. Open MPI implements the MPI-2.1 (current) standard and is actively maintained, making it an attractive option for doing message passing. Fortunately, different implementations of MPI are code-compatible if they follow the standard, so any MPI-2.1 implementation should work for this lesson.
2. Example
This lesson will explain how to use MPI through two examples that demonstrate the basic concepts of both the library and the message passing. The first example shows how to initialize and finalize MPI, while getting some information about the environment.
// File: mpi01.cpp
#include
#include
using std::cout;
using std::endl;
int main(int argc, char ** argv)
{
int rank = 0;
int size = 0;
int length = 0;
char name[MPI_MAX_PROCESSOR_NAME];
MPI::Init(argc, argv);
rank = MPI::COMM_WORLD.Get_rank();
size = MPI::COMM_WORLD.Get_size();
MPI::Get_processor_name(name, length);
cout ................
................
In order to avoid copyright disputes, this page is only a partial summary.
To fulfill the demand for quickly locating and searching documents.
It is intelligent file search solution for home and business.
Related download
- architecture design kansas state university
- python class room diary be easy in my python class
- kendriya vidyalaya sangathan kolkata region
- primary care management module user manual
- informatics practices new 065 class xii
- operating system laboratory dept of computer engineering
- assignment no
- top 10 most frequently asked questions about np billing
Related searches
- personal financial management marine net pdf
- company net worth lookup
- comenity net dental first financing
- marine net financial management pdf
- amazon net sales 2017
- average net profit small business
- amazon net profit 2018
- marine net personal finance answers
- hong kong net scheme
- business net worth lookup
- free net worth search
- company net worth search