Introduction to MPI and Openmp

Introduction to MPI and Openmp

Introduction to MPI and OpenMP myson @ postech.ac.kr CSE700-PL @ POSTECH Programming Language Laboratory – p.1/18 Outline MPI and OpenMP Definition Characteristics Flow models Examples Compiling and Execution Resources Programming Language Laboratory – p.2/18 What are MPI and OpenMP? Message Passing Interface (MPI) - MPI is a library specification for message-passing, proposed as a standard by a broadly based committee of vendors, implementors, and users. Programming Language Laboratory – p.3/18 What are MPI and OpenMP? Open Multi Processing (OpenMP) - OpenMP is a specification for a set of compiler directives, library routines, and environment variables that can be used to specify shared memory parallelism in Fortran and C/C++ programs. Programming Language Laboratory – p.4/18 MPI vs. OpenMP MPI OpenMP Distributed memory model Shared memory model on Distributed network on Multi-core processors Message based Directive based Flexible and expressive Easier to program and debug Programming Language Laboratory – p.5/18 MPI Flow Model Message Passing - Send and Receive a message, size, type, source, dest, tag, communicator, status Programming Language Laboratory – p.6/18 OpenMP Flow Model Directives (C/C++) - #pragma omp directives [clauses] directives - parallel, for, single, etc. Programming Language Laboratory – p.7/18 A Simple Example A serial program #include<stdio.h> #define PID 0 main(){ int i; printf("Greetings from process %d!/n", PID); } Greetings from process 0 Programming Language Laboratory – p.8/18 A Simple Example(cont.) A parallel program using MPI (cont.) #include<mpi.h> main(int argc, char** argv){ . MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &my_rank); MPI_Comm_size(MPI_COMM_WORLD, &p); Parallel Region MPI_Finalize(); } Programming Language Laboratory – p.9/18 A Simple Example(cont.) A parallel program using MPI if ( my_rank != 0){ sprintf(message, "Greetings from process %d!", my_rank); dest = 0; MPI_Send(message, strlen(message)+1, MPI_CHAR, dest, tag, MPI_COMM_WORLD); } else{ /* my_rank = 0 */ for (source = 1; source < p; source++){ MPI_Recv(message, 100, MPI_CHAR, source, tag, MPI_COMM_WORLD, &status); printf("%s/n", message); } } Programming Language Laboratory – p.10/18 A Simple Example(cont.) A parallel program using MPI (cont.) Greetings from process 1 Greetings from process 2 Greetings from process 3 Programming Language Laboratory – p.11/18 A Simple Example(cont.) A parallel program using OpenMP #include<stdio.h> #include<omp.h> main(){ int id; #pragma omp parallel { id = omp_get_thread_num(); printf("Greetings from process %d!/n", id); } } Programming Language Laboratory – p.12/18 A Simple Example(cont.) A parallel program using OpenMP (cont.) Greetings from process 1 Greetings from process 0 Greetings from process 2 Greetings from process 3 Programming Language Laboratory – p.13/18 Which is better? Programming Language Laboratory – p.14/18 Compiling GCC and MPICH2 for MPI GCC-4.2 with library libgomp for OpenMP MPI mpicc -o example.out example.c OpenMP gcc-4.2 -o example.out example.c -fopenmp Programming Language Laboratory – p.15/18 Execution ∼/.mpd.conf for MPI execution vi(or emacs) ∼/.mpd.conf secretword=<your secretword> chmod 600 ∼/.mpd.conf MPI (using multi-core processors) mpdboot mpiexec -n #processes ./example.out mpdallexit OpenMP ./example.out Programming Language Laboratory – p.16/18 Resources Machine (Plquad: plquad.postech.ac.kr) Intel Core 2 Quad Q6600 (quad-core) 1G DDR RAM If you want to use it, email the instructors. Materials - resource tab on the course web-page MPI & OpenMP install guides MPI & OpenMP tutorials . Programming Language Laboratory – p.17/18 End Any Questions. ? Programming Language Laboratory – p.18/18.

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    18 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us