1 / 47

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

מבוא לעיבוד מקבילי – הרצאה מס' 2. 29.10.01 תרגול על המערך המקבילי. מטרות המפגש היום. לוודא כי לכל זוג יש חשבון משתמש על המערך המקבילי. תרגול ביצוע משימות בסיסיות תחת מערכת ההפעלה Linux . הרצת תכניות מקביליות בסיסיות המשתמשות ב- MPI. יעדים. יישור קו הכרות ראשונית עם MPI.

Download Presentation

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

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  2. מטרות המפגש היום • לוודא כי לכל זוג יש חשבון משתמש על המערך המקבילי. • תרגול ביצוע משימות בסיסיות תחת מערכת ההפעלה Linux. • הרצת תכניות מקביליות בסיסיות המשתמשות ב- MPI.

  3. יעדים • יישור קו • הכרות ראשונית עם MPI

  4. Basic Linux Commands – 1/5

  5. Basic Linux Commands – 2/5

  6. Basic Linux Commands – 3/5

  7. Basic Linux Commands – 4/5 • Getting help: man topic • Looking at the contents of a file: more • Quit from man or more: q • Where am I? pwd • Clear the screen: clear • Print the contents of a file: cat

  8. Basic Linux Commands – 5/5 • Redirection: >, >> • Pipe: | • telnet • ftp • ping • chmod • chown

  9. Linux FAQ http://www.ctssn.com/linux/linuxfaq.html

  10. ESC Puts you in command mode h, j, k, l Left, down, up, right or use the arrows keys w, W, b, B Forward, backward by word 0, $ First, last position of current line /pattern Search forward for pattern ?pattern Search backward for pattern n,N Repeat last search in same, opposite direction x Delete character dd Delete current line D Delete to end of line dw Delete word p, P Put deleted text before, after cursor u 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 The vi Editor

  11. 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).

  12. The Dwarves Networking: Two Kinds of NICs dwarf1 ..dwarf12 – nodes names for the Fast Ethernet link dwarf1m .. dwarf12m – nodes names for the Myrinet network

  13. 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

  14. Connecting to the Dwarves

  15. תרגיל מס' 1 • התחבר לאחת מהתחנות תוך שימוש ב- telnet. • כתוב תכנית מחשב קצרה כגון: Hello World • בצע קומפילציה: gcc –o hello_world hello_world.c • הרץ את התכנית ושמור הפלט: % ./hello_world > hello.txt • בדוק את הפלט על-ידי: • more hello.txt

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

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

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

  19. Data Process 0 Data May I Send? Data Data Data Data Data Data Data Process 1 Yes Time What is message passing? • Data transfer plus synchronization • Requires cooperation of sender and receiver

  20. Match Receive Y , P , t Addr ess Y Send X, Q, t Addr ess X Local pr ocess Local pr ocess addr ess space addr ess space Pr ocess P Pr ocess Q Message-Passing Abstraction • Send specifies buffer to be transmitted and receiving process • Recv specifies sending process and application storage to receive into • Memory to memory copy, but need to name processes • Optional tag on send and matching rule on receive • User process names local data and entities in process/tag space too • In simplest form, the send/recv match achieves pairwise synch event • Other variants too • Many overheads: copying, buffer management, protection

  21. Space-Time Diagram of a Message-Passing Program

  22. 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

  23. MPI Naming Conventions MPI_Xxxxx(parameter,...) Example:MPI_Init(&argc,&argv).

  24. The First 4 Functions of MPI • MPI_Init • MPI_Finalize • MPI_Comm_size • MPI_Comm_rank

  25. 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)

  26. 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.

  27. 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);

  28. 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);

  29. MPI Datatypes MPI DatatypeC Type MPI_CHAR signed char MPI_SHORT signed short int MPI_INT signed int MPI_LONG signed long int MPI_UNSIGNED_CHAR unsigned char MPI_UNSIGNED_SHORT unsigned short int MPI_UNSIGNED unsigned int MPI_UNSIGNED_LONG unsigned long int MPI_FLOAT float MPI_DOUBLE double MPI_LONG_DOUBLE long double MPI_BYTE (none) MPI_PACKED (none)

  30. MPI Example: Mandelbrot MPICH 1.2.1 Running on Windows NT (Dual Celeron 400MHz) Compiled with Visual C++ 6.

  31. Home Work #1 : MPI Tutorial http://www-unix.mcs.anl.gov/mpi/tutorial/index.html Four-up Postscript for Tutorial on MPI (tutorial4.ps)

  32. תרגיל מס' 2 • הרצת תכנית קצרה ב- MPI: • Hello_World מקבילי • כתוב תכנית בה כל מחשב יאמר שלום ויודיע את מספר התהליך שלו בריצה: Hello world from process 1 of 2

  33. פתרון תרגיל מס' 2 – 1/3 #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; }

  34. פתרון תרגיל מס' 2 – 2/3 The Makefile % make helloworld: helloworld.c mpicc -o helloworld helloworld.c clean: /bin/rm -f helloworld *.o

  35. 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 %

  36. תרגיל מס' 3: חישוב p • חישוב באמצעות אינטגרציה • נבצע אינטגרציה על הפונקציה f(x)=4/(1+x2) בין 0 ל- 1 על-ידי חלוקת התחום ל- n חלקים

  37. פתרון תרגיל מס' 3 • בפתרון השתמשנו בפונקציה למדידת זמן • הנקראת: MPI_Wtime() • ראה דוגמא לפתרון התרגיל תחת: /usr/local/mpich/examples/basic/cpi.c

  38. פתרון תרגיל מס' 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];

  39. פתרון תרגיל מס' 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;

  40. פתרון תרגיל מס' 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 {

  41. פתרון תרגיל מס' 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);

  42. פתרון תרגיל מס' 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 */

  43. תרגיל הגשה מס' 1 • העבודה תתבצע בזוגות • התרגיל יוגש באמצעות ה- Email תוך שבועיים – היום האחרון להגשה הוא יום ב' ה- 12/11/01. • יש לתעד את התכנית. • אמנם התרגיל הוא ללא ציון, אך הגשתו חובה!

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

  45. תרגיל הגשה מס' 1 • מעבד מס' 0 ירכז אליו את תוצאות הביניים הנשלחות מהמעבדים וידפיס את התוצאה הסופית. כמו-כן, יש להדפיס את גבולות האינטגרציה ומס' הטרפזים, n. • להריץ התכנית 3 פעמים עבור שלושה ערכים של n: n=100 ,1000 ,10000 • יש לצרף את הפלט של הריצות

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

  47. תרגיל הגשה מס' 1 • גבולות האינטגרציה הם: a=Min(ID1,ID2)/1000000 b=Max(ID1,ID2)/1000000 • כאשר ID1 ו- ID2 הם מספרי ת.ז. של המגישים, כולל ספרת ביקורת.

More Related