חשמל ומחשבים עיבוד מקבלי

לחץ כאן לכל השאלות

הסבר בקצרה כל אחת מהפקודות הבאות: התייחס לקלט הנדרש והפלא המתקבל לאחר ביצוען: א. MPI_Comm_size(Comm,rank) ב. MPI_Bcast(buf,count,datatype,root,comm) ג. MPI_IRecv(buf,count,datatype,source,tag,comm,request) ד. MPI_Allgather(sendbuf,sendcount,sendtype,recvbuf,recvcount,recvtype,comm) ה. MPI_Reduce(sendbuf,recvbuf,count,datatype,op,root,comm) ו. MPI_Scatter(sendbuf, sendcnt, sendtype, recvbuf, recvcnt, recvtype, root, comm) ז. MPI_AlltoAll(sendbuf, sendcnt, sendtype, recvbuf, recvcnt, recvtype, comm) ח. MPI_Init(&argc,&argv)

1
done
מקבל משתנה rank ואת Communicator( Comm) ומכניס למשתנה rank את מספר התהליכים שמשתתפים בחישוב. משתנה Communicator מייצג קבוצה של תהליכים והאופי בו הם מחוברים. MPI_Bcast(buf,count,datatype,root,comm) 3.13.2 שולח הודעה אחידה מהתהליך הראשי לכל שאר התהליכים בקבוצה (כולל עצמו). הודעה אחידה נמצאת בקלט buf, מועבר ממשתנה root אל שאר המעבדים ב-Comm. סוג המשתנה ששולחים או מקבלים הוא מסוג datatype וכמות המידע היא במשתנה count MPI_IRecv(buf,count,datatype,source,tag,comm,request) פקודת לא חוסמת של קבלה של הודעה. מזהה אזור בזיכרון שישמש כבאפר, התהליך ממשיך מיד מבלי לחכות שההודעה תתקבל ותועתק ל-Count .buf – כמות המידע, datatype סוג המידע שמתקבל, source – המקור ממנו מקבלים את המידע, id – tag להודעה, משמש כדי להבדיל בין הודעות שונות שנשלחות, request – מיועד לפעולות wait/test. MPI_Allgather(sendbuf,sendcount,sendtype,recvbuf,recvcount,recvtype,comm) פקודת העברת נתונים, אוספת תוצאות מכל המעבדים ואת התוצאה שולחת לכל המעבדים בקבוצה. Sendbuf – הבאפר של המעבד הראשי. Sendcount – כמות המידע. Sendtype – סוג הטיפוס של המידע שנשלח. Recvbuf – הבאפר של המקבלים. Recvcount - כמות המידע של המקבלים. Recvtype – סוג טיפוס של המידע למקבלים. Comm – מקשר MPI_Reduce(sendbuf,recvbuf,count,datatype,op,root,comm) פקודת חישוב קולקטיבית, אוספת ערכים מכל המעבדים למעבד "ראשי" שמוגדר בroot בתוספת פקודה שמבצעים על הערכים שנאספו (כמו חיבור, חיסור, פעולות לוגיות וכו') Sendbuf – הבאפר של השולח, recvbuf – באפר המקבל, count – מספר הערכים, datatype – סוג הטיפוס של המידע, opcode – op, סוג הפקודה, root – המקור, מי שאוסף את המידע, comm – מקשר MPI_Scatter(sendbuf, sendcnt, sendtype, recvbuf, recvcnt, recvtype, root, comm) פקודה השולחת הודעות נבדלות אחת מהשנייה ממקור מסוים לכל שאר התהליכים בקבוצה, מבצעת סוג של פיצול המידע לשאר המעבדים, MPI_AlltoAll(sendbuf, sendcnt, sendtype, recvbuf, recvcnt, recvtype, comm) כל תהליך בקבוצה מבצע שליחה של נתונים שונים לתהליכים שונים. הפקודה מבצעת transpose על המטריצה שמורכבת מהווקטורים שבתוך כלל התהליכים MPI_Init(&argc,&argv) מאתחלת את סביבת עבודת ה-MPI, חייבת להיות בכל תוכנית MPI בהתחלה לפני ביצוע פונקציית MPI אחרת כלשהי, מופיעה פעם אחת. Argc – פוינטר למספר הארגומנטים, argv – פוינטר לווקטור הארגומנט
by
מיין לפי
by אייל יקיר
אייל יקיר 0 נקודות · יותר מ-6 חודשים
מוניטין: 45
מקבל משתנה rank ואת Communicator( Comm) ומכניס למשתנה rank את מספר התהליכים שמשתתפים בחישוב. משתנה Communicator מייצג קבוצה של תהליכים והאופי בו הם מחוברים. MPI_Bcast(buf,count,datatype,root,comm) 3.13.2 שולח הודעה אחידה מהתהליך הראשי לכל שאר התהליכים בקבוצה (כולל עצמו). הודעה אחידה נמצאת בקלט buf, מועבר ממשתנה root אל שאר המעבדים ב-Comm. סוג המשתנה ששולחים או מקבלים הוא מסוג datatype וכמות המידע היא במשתנה count MPI_IRecv(buf,count,datatype,source,tag,comm,request) פקודת לא חוסמת של קבלה של הודעה. מזהה אזור בזיכרון שישמש כבאפר, התהליך ממשיך מיד מבלי לחכות שההודעה תתקבל ותועתק ל-Count .buf – כמות המידע, datatype סוג המידע שמתקבל, source – המקור ממנו מקבלים את המידע, id – tag להודעה, משמש כדי להבדיל בין הודעות שונות שנשלחות, request – מיועד לפעולות wait/test. MPI_Allgather(sendbuf,sendcount,sendtype,recvbuf,recvcount,recvtype,comm) פקודת העברת נתונים, אוספת תוצאות מכל המעבדים ואת התוצאה שולחת לכל המעבדים בקבוצה. Sendbuf – הבאפר של המעבד הראשי. Sendcount – כמות המידע. Sendtype – סוג הטיפוס של המידע שנשלח. Recvbuf – הבאפר של המקבלים. Recvcount - כמות המידע של המקבלים. Recvtype – סוג טיפוס של המידע למקבלים. Comm – מקשר MPI_Reduce(sendbuf,recvbuf,count,datatype,op,root,comm) פקודת חישוב קולקטיבית, אוספת ערכים מכל המעבדים למעבד "ראשי" שמוגדר בroot בתוספת פקודה שמבצעים על הערכים שנאספו (כמו חיבור, חיסור, פעולות לוגיות וכו') Sendbuf – הבאפר של השולח, recvbuf – באפר המקבל, count – מספר הערכים, datatype – סוג הטיפוס של המידע, opcode – op, סוג הפקודה, root – המקור, מי שאוסף את המידע, comm – מקשר MPI_Scatter(sendbuf, sendcnt, sendtype, recvbuf, recvcnt, recvtype, root, comm) פקודה השולחת הודעות נבדלות אחת מהשנייה ממקור מסוים לכל שאר התהליכים בקבוצה, מבצעת סוג של פיצול המידע לשאר המעבדים, MPI_AlltoAll(sendbuf, sendcnt, sendtype, recvbuf, recvcnt, recvtype, comm) כל תהליך בקבוצה מבצע שליחה של נתונים שונים לתהליכים שונים. הפקודה מבצעת transpose על המטריצה שמורכבת מהווקטורים שבתוך כלל התהליכים MPI_Init(&argc,&argv) מאתחלת את סביבת עבודת ה-MPI, חייבת להיות בכל תוכנית MPI בהתחלה לפני ביצוע פונקציית MPI אחרת כלשהי, מופיעה פעם אחת. Argc – פוינטר למספר הארגומנטים, argv – פוינטר לווקטור הארגומנט
by

* השאלה נוספה בתאריך: 15-07-2023