57
יייי יייייי יייייי – ייייי יי'2 יייייMPI יי ייייי ייייייי

מבוא לעיבוד מקבילי – הרצאה מס ' 2 תרגול MPI על המערך המקבילי

  • View
    241

  • Download
    6

Embed Size (px)

Citation preview

Page 1: מבוא לעיבוד מקבילי – הרצאה מס ' 2 תרגול MPI על המערך המקבילי

מבוא לעיבוד מקבילי – הרצאה מס' 2

על המערך המקביליMPIתרגול

Page 2: מבוא לעיבוד מקבילי – הרצאה מס ' 2 תרגול MPI על המערך המקבילי

מטרות השיעור

לוודא כי לכל זוג יש חשבון משתמש על המערך •המקבילי.

תרגול ביצוע משימות בסיסיות תחת מערכת •.Linuxההפעלה

הרצת תכניות מקביליות בסיסיות המשתמשות •.MPIב-

Page 3: מבוא לעיבוד מקבילי – הרצאה מס ' 2 תרגול MPI על המערך המקבילי

יעדים

יישור קו •

MPIהכרות ראשונית עם •

Page 4: מבוא לעיבוד מקבילי – הרצאה מס ' 2 תרגול MPI על המערך המקבילי

Basic Linux Commands – 1/5

Enter the systemlogin: username

password: passwd

Exit the systemexit

Text editorspico, vi, Emacs or

Edit on Windows then transfer with ftp

C Compilergcc –o file file.c

Page 5: מבוא לעיבוד מקבילי – הרצאה מס ' 2 תרגול MPI על המערך המקבילי

Basic Linux Commands – 2/5

DOSLinux

See filesdirls

ls -l

Copy filescopycp

Erase filesdelrm

Page 6: מבוא לעיבוד מקבילי – הרצאה מס ' 2 תרגול MPI על המערך המקבילי

Basic Linux Commands – 3/5DOSLinux

Make directory

mkdirmkdir

Remove directory

rmdirrmdir

More/Renamerenamemv

OS versionveruname -a

Page 7: מבוא לעיבוד מקבילי – הרצאה מס ' 2 תרגול MPI על המערך המקבילי

Basic Linux Commands – 4/5

• Getting help: man topic

• Look at the contents of a file: cat, more,head and tail

• Quit from man or more: q

• Where am I? pwd

• Clear the screen: clear

Page 8: מבוא לעיבוד מקבילי – הרצאה מס ' 2 תרגול MPI על המערך המקבילי

Basic Linux Commands – 5/5

• Redirection: >, >>

• Pipe: |

• telnet

• ftp

• ping

• chmod

• chown

Page 9: מבוא לעיבוד מקבילי – הרצאה מס ' 2 תרגול MPI על המערך המקבילי

Linux FAQ

http://www.ctssn.com/linux/linuxfaq.html

Page 10: מבוא לעיבוד מקבילי – הרצאה מס ' 2 תרגול MPI על המערך המקבילי

The vi EditorESC Puts you in command modeh, j, k, l Left, down, up, right or use the arrows keysw, W, b, B Forward, backward by word

0, $ First, last position of current line/pattern Search forward for pattern?pattern Search backward for patternn,N Repeat last search in same, opposite directionx Delete characterdd Delete current lineD Delete to end of linedw Delete wordp, P Put deleted text before, after cursoru Undo last command. Repeat the last command

i, a Insert text before, after cursor [Puts you into INPUT MODE]o, O Open new line for text below, above cursor [Puts you into INPUT MODE]

ZZ Save file and quit:w Save file:q! Quit, without saving changes

Page 11: מבוא לעיבוד מקבילי – הרצאה מס ' 2 תרגול MPI על המערך המקבילי

vi reference card

• Download and print:

• http://my.pages.de/vi-refcard.html

• http://vh224401.truman.edu/~dbindner/mirror/vi-ref.pdf

Page 12: מבוא לעיבוד מקבילי – הרצאה מס ' 2 תרגול MPI על המערך המקבילי

Our Parallel Cluster:The Dwarves

There are 12 computers with Linux operating system.

dwarf[1-12] or dwarf[1-12]m

dwarf1[m], dwarf3[m]-dwarf7[m] - Pentium II 300 MHz,

dwarf9[m]-dwarf12[m] - Pentium III 450 MHz (dual CPU),

dwarf2[m], dwarf8[m] - Pentium III 733 MHz (dual CPU).

Page 13: מבוא לעיבוד מקבילי – הרצאה מס ' 2 תרגול MPI על המערך המקבילי

The Dwarves Networking: Two Kinds of NICs

dwarf1 ..dwarf14 – nodes names using Fast Ethernet

dwarf1m .. dwarf12m – nodes names using Myrinet

dwarf13 and dwarf14 have only Ethernet cards (no myrinet!) – use them for editing!!

Page 14: מבוא לעיבוד מקבילי – הרצאה מס ' 2 תרגול MPI על המערך המקבילי

The Dwarves IP Addresses

• Fast Ethernet: 132.72.53.*

Where * is between 111 to 122

• Myrinet: 132.72.52.*

Where * is between 161 to 172

Page 15: מבוא לעיבוד מקבילי – הרצאה מס ' 2 תרגול MPI על המערך המקבילי

Connecting to the Dwarves

Page 16: מבוא לעיבוד מקבילי – הרצאה מס ' 2 תרגול MPI על המערך המקבילי

1תרגיל מס'

.telnetהתחבר לאחת מהתחנות תוך שימוש ב- •Hello Worldכתוב תכנית מחשב קצרה כגון: •בצע קומפילציה:•

gcc –o hello_world hello_world.cהרץ את התכנית ושמור הפלט:•

% ./hello_world > hello.txt

בדוק את הפלט על-ידי:•• more hello.txt

Page 17: מבוא לעיבוד מקבילי – הרצאה מס ' 2 תרגול MPI על המערך המקבילי

1/3 – 1פתרון תרגיל מס'

Page 18: מבוא לעיבוד מקבילי – הרצאה מס ' 2 תרגול MPI על המערך המקבילי

2/3 – 1פתרון תרגיל מס'

Page 19: מבוא לעיבוד מקבילי – הרצאה מס ' 2 תרגול MPI על המערך המקבילי

3/3 – 1פתרון תרגיל מס'

Page 20: מבוא לעיבוד מקבילי – הרצאה מס ' 2 תרגול MPI על המערך המקבילי

MPI-Quick reference card 1/2

Page 21: מבוא לעיבוד מקבילי – הרצאה מס ' 2 תרגול MPI על המערך המקבילי

MPI-Quick reference card 2/2

Page 22: מבוא לעיבוד מקבילי – הרצאה מס ' 2 תרגול MPI על המערך המקבילי

What is message passing?•Data transfer plus synchronization

Requires cooperation of sender and receiver

DataProcess 0

Process 1

May I Send?

Yes

DataDataDataDataDataDataDataData

Time

Page 23: מבוא לעיבוד מקבילי – הרצאה מס ' 2 תרגול MPI על המערך המקבילי

Point to Point: Basic Send/Receive

' מס תהליך1x

Send(&x,2);

תהליך מס' 2y

Recv(&y,1);

הזזת נתונים

Page 24: מבוא לעיבוד מקבילי – הרצאה מס ' 2 תרגול MPI על המערך המקבילי

Space-Time Diagram of a Message-Passing Program

Page 25: מבוא לעיבוד מקבילי – הרצאה מס ' 2 תרגול MPI על המערך המקבילי

MPI - Message Passing Library

• MPI is a standard not an implementation

• Popular implementations are LAM and MPICH

• MPICH is installed under /usr/local/mpich• Always put in the code: #include “mpi.h”• Compilation: mpicc –o filename file.c• Executing: mpirun –np N filename

Page 26: מבוא לעיבוד מקבילי – הרצאה מס ' 2 תרגול MPI על המערך המקבילי

MPI Naming Conventions

MPI_Xxxxx(parameter,...)

Example:MPI_Init(&argc,&argv).

Page 27: מבוא לעיבוד מקבילי – הרצאה מס ' 2 תרגול MPI על המערך המקבילי

The First 4 Functions of MPI

• MPI_Init

• MPI_Finalize

• MPI_Comm_size

• MPI_Comm_rank

Page 28: מבוא לעיבוד מקבילי – הרצאה מס ' 2 תרגול MPI על המערך המקבילי

The First 4 Functions Syntax

• int MPI_Init(*argc, ***argv)

• int MPI_Finilize()

• int MPI_Comm_size(MPI_Comm comm, int *size)

• int MPI_Comm_rank(MPI_Comm comm, int *rank)

Page 29: מבוא לעיבוד מקבילי – הרצאה מס ' 2 תרגול MPI על המערך המקבילי

MPI Communicator

A communicator is a handle representing a group of processors that can communicate with one another.

The communicator name is required as an argument to all point-to-point and collective operations.

The communicator specified in the send and receive calls must agree for communication to take place.

Processors can communicate only if they share a communicator.

Page 30: מבוא לעיבוד מקבילי – הרצאה מס ' 2 תרגול MPI על המערך המקבילי

Basic Point to Point Functions

• MPI_Send

• MPI_Recv• MPI_Send(void *buf, int count, MPI_Datatype

datatype, int dest, int tag, MPI_Comm comm);

• MPI_Recv(void *buf, int count, MPI_Datatype datatype, int source, int tag, MPI_Comm comm, MPI_Status status);

Page 31: מבוא לעיבוד מקבילי – הרצאה מס ' 2 תרגול MPI על המערך המקבילי

Basic Collective Functions

• MPI_Bcast

• MPI_Reduce

• The exact syntax:• MPI_Bcast(void *buf, int count, MPI_Datatype datatype, int

root, MPI_Comm comm);

• MPI_Reduce(void *sendbuf, void *recvbuf, int count, MPI_Datatype datatype, MPI_Op op, int root, MPI_Comm comm);

Page 32: מבוא לעיבוד מקבילי – הרצאה מס ' 2 תרגול MPI על המערך המקבילי

MPI Data typesMPI data type C TypeMPI_CHAR signed charMPI_SHORT signed short intMPI_INT signed intMPI_LONG signed long intMPI_UNSIGNED_CHAR unsigned charMPI_UNSIGNED_SHORT unsigned short intMPI_UNSIGNED unsigned intMPI_UNSIGNED_LONG unsigned long int MPI_FLOAT floatMPI_DOUBLE doubleMPI_LONG_DOUBLE long doubleMPI_BYTE (none)MPI_PACKED (none)

Page 33: מבוא לעיבוד מקבילי – הרצאה מס ' 2 תרגול MPI על המערך המקבילי

MPI Example: Mandelbrot

MPICH 1.2.1 Running on Windows NT (Dual Celeron 400MHz)

Compiled with Visual C++ 6.

Page 34: מבוא לעיבוד מקבילי – הרצאה מס ' 2 תרגול MPI על המערך המקבילי

Home Work #1 : MPI Tutorial

http://www-unix.mcs.anl.gov/mpi/tutorial/index.html

Four-up Postscript for Tutorial on MPI (tutorial4.ps)

Page 35: מבוא לעיבוד מקבילי – הרצאה מס ' 2 תרגול MPI על המערך המקבילי

2תרגיל מס'

:MPIהרצת תכנית קצרה ב- •

–Hello_Worldמקבילי כתוב תכנית בה כל מחשב יאמר שלום ויודיע •

את מספר התהליך שלו בריצה:Hello world from process 1 of 2

Page 36: מבוא לעיבוד מקבילי – הרצאה מס ' 2 תרגול MPI על המערך המקבילי

1/3 – 2פתרון תרגיל מס' #include <stdio.h>#include "mpi.h"int main( argc, argv )int argc;char **argv;{ int rank, size; MPI_Init( &argc, &argv ); MPI_Comm_size( MPI_COMM_WORLD, &size ); MPI_Comm_rank( MPI_COMM_WORLD, &rank ); printf( "Hello world from process %d of %d\n", rank, size ); MPI_Finalize(); return 0;}

Page 37: מבוא לעיבוד מקבילי – הרצאה מס ' 2 תרגול MPI על המערך המקבילי

2/3 – 2פתרון תרגיל מס'

helloworld: helloworld.c

mpicc -o helloworld helloworld.c

clean:

/bin/rm -f helloworld *.o

% make

The Makefile

Page 38: מבוא לעיבוד מקבילי – הרצאה מס ' 2 תרגול MPI על המערך המקבילי

++C: מימוש ב- 2תרגיל מס'

Page 39: מבוא לעיבוד מקבילי – הרצאה מס ' 2 תרגול MPI על המערך המקבילי

Hello World - Execution% mpicc -o helloworld helloworld.c

% mpirun -np 4 helloworld

Hello world from process 0 of 4

Hello world from process 3 of 4

Hello world from process 1 of 4

Hello world from process 2 of 4

%

Page 40: מבוא לעיבוד מקבילי – הרצאה מס ' 2 תרגול MPI על המערך המקבילי

: חישוב 3תרגיל מס'

חישוב באמצעות אינטגרציה•

f(x)=4/(1+x2)נבצע אינטגרציה על הפונקציה • חלקיםn על-ידי חלוקת התחום ל- 1 ל- 0בין

4)1arctan()0arctan()1arctan(|)arctan(

1

1 10

1

02

xdxx

Page 41: מבוא לעיבוד מקבילי – הרצאה מס ' 2 תרגול MPI על המערך המקבילי

3פתרון תרגיל מס'

בפתרון השתמשנו בפונקציה למדידת זמן•)(MPI_Wtimeהנקראת: •

ראה דוגמא לפתרון התרגיל תחת:•

/usr/local/mpich/examples/basic/cpi.c

Page 42: מבוא לעיבוד מקבילי – הרצאה מס ' 2 תרגול MPI על המערך המקבילי

3פתרון תרגיל מס' #include "mpi.h"#include <stdio.h>#include <math.h>double f(double a){ return (4.0 / (1.0 + a*a));}

void main(int argc, char *argv[]){ int done = 0, n, myid, numprocs, i; double PI25DT = 3.141592653589793238462643; double mypi, pi, h, sum, x; double startwtime, endwtime; int namelen; char processor_name[MPI_MAX_PROCESSOR_NAME];

Page 43: מבוא לעיבוד מקבילי – הרצאה מס ' 2 תרגול MPI על המערך המקבילי

- המשך3פתרון תרגיל מס'

MPI_Init(&argc,&argv); MPI_Comm_size(MPI_COMM_WORLD,&numprocs); MPI_Comm_rank(MPI_COMM_WORLD,&myid); MPI_Get_processor_name(processor_name,&namelen);

fprintf(stderr,"Process %d on %s\n",myid, processor_name); fflush(stderr);

n = 0;

Page 44: מבוא לעיבוד מקבילי – הרצאה מס ' 2 תרגול MPI על המערך המקבילי

- המשך3פתרון תרגיל מס'

while (!done) { if (myid == 0) {

printf("Enter the number of intervals: (0 quits) ");fflush(stdout);scanf("%d",&n);startwtime = MPI_Wtime();

} MPI_Bcast(&n, 1, MPI_INT, 0, MPI_COMM_WORLD); if (n == 0) done = 1; else {

Page 45: מבוא לעיבוד מקבילי – הרצאה מס ' 2 תרגול MPI על המערך המקבילי

- המשך3פתרון תרגיל מס' h = 1.0 / (double) n; sum = 0.0; for (i = myid + 1; i <= n; i += numprocs) { x = h * ((double)i - 0.5); sum += f(x); } mypi = h * sum;

MPI_Reduce(&mypi, &pi, 1, MPI_DOUBLE, MPI_SUM, 0, MPI_COMM_WORLD);

Page 46: מבוא לעיבוד מקבילי – הרצאה מס ' 2 תרגול MPI על המערך המקבילי

- המשך3פתרון תרגיל מס'

if (myid == 0){

printf("pi is approximately %.16f, Error is %.16f\n",pi, fabs(pi - PI25DT));endwtime = MPI_Wtime();printf("wall clock time = %f\n",endwtime-startwtime);

} } /* end of if */ } /* end of while */ MPI_Finalize();} /* end of main */

Page 47: מבוא לעיבוד מקבילי – הרצאה מס ' 2 תרגול MPI על המערך המקבילי

תהליכים4הרצת

Page 48: מבוא לעיבוד מקבילי – הרצאה מס ' 2 תרגול MPI על המערך המקבילי

הרצת שני תהליכים על שני מעבדים

Page 49: מבוא לעיבוד מקבילי – הרצאה מס ' 2 תרגול MPI על המערך המקבילי

1/2הערכת ביצועי הריצה

Page 50: מבוא לעיבוד מקבילי – הרצאה מס ' 2 תרגול MPI על המערך המקבילי

2/2הערכת ביצועי הריצה

Page 51: מבוא לעיבוד מקבילי – הרצאה מס ' 2 תרגול MPI על המערך המקבילי

1תרגיל הגשה מס'

העבודה תתבצע בזוגות•

תוך שבועיים Emailהתרגיל יוגש באמצעות ה- •היום האחרון להגשה הוא עד לשיעור בעוד –

(.4שבועיים )שבוע

יש לתעד את התכנית.•

חובה!אמנם התרגיל הוא ללא ציון, אך הגשתו •

Page 52: מבוא לעיבוד מקבילי – הרצאה מס ' 2 תרגול MPI על המערך המקבילי

:1תרגיל הגשה מס'

מטרות התרגיל•:MPIהכרות ראשונית עם –

.Point-to-Pointפקודות תקשורת מסוג •

פקודות תקשורת קולקטיביות.•

.Master-workersמיקבול בשיטת –

Page 53: מבוא לעיבוד מקבילי – הרצאה מס ' 2 תרגול MPI על המערך המקבילי

:1תרגיל הגשה מס' אינטגרציה בשיטת הטרפז

כתוב תכנית מחשב מקבילית המבצעת אינטגרציה •לפולינום ממעלה שלישית (ראה בשיטת הטרפז

בהמשך). להעברת מסרים בין המעבדים MPIהשתמש בפקודות •

שנלמדו בשיעור:

Send, Recv, Bcast and Reduce Point-to-Pointבפעם הראשונה, השתמש בפקודות •

בלבד. בפעם השניה השתמש בפקודות קולקטיביות בלבד. השווה זמני ריצה בין שתי הפעמים.

Page 54: מבוא לעיבוד מקבילי – הרצאה מס ' 2 תרגול MPI על המערך המקבילי

1תרגיל הגשה מס'

יקבל מהמשתמש את תחום האינטגרציה 0מעבד מס' • טרפזים.n עם b ל- aלדוגמה, מ- ואת מס' הטרפזים:

ירכז אליו את תוצאות הביניים הנשלחות 0מעבד מס' •מהמעבדים וידפיס את התוצאה הסופית. כמו-כן, יש

.nלהדפיס את גבולות האינטגרציה ומס' הטרפזים,

כך שהשגיאה בתוצאה תהיה קטנה מ- n קבע את 0.001

יש לצרף את הפלט של הריצות ואת התוצאה •האנליטית.

Page 55: מבוא לעיבוד מקבילי – הרצאה מס ' 2 תרגול MPI על המערך המקבילי

1תרגיל הגשה מס'

הפונקציה עליה יש לבצע את האינטגרציה היא •פולינום ממעלה שלישית:

גבולות האינטגרציה הם לבחירתכם, אך ציינו •אותם בפלט.

להשוות עם התוצאה האנליטית!•

3

0

i

i

ix

Page 56: מבוא לעיבוד מקבילי – הרצאה מס ' 2 תרגול MPI על המערך המקבילי

:1תרגיל הגשה מס'

נקודות למחשבה:• עושה גם-כן חישוב או רק masterהאם ה- –

אדמיניסטרציה?האם ניתן להריץ את התכנית גם עם תהליך אחד –

בלבד

mpirun –np 1 exe1?

Page 57: מבוא לעיבוד מקבילי – הרצאה מס ' 2 תרגול MPI על המערך המקבילי

בשבוע הבא...

MPIלימוד •

השיעור יתקיים בכיתות הלימוד הרגילות•

חדר 90: שינוי חדר לימוד: בניין 1קבוצה מס' •127