בתשובה לדורון יערי, 13/06/00 18:50
כמה מילים על סידרי גודל 5997
אני חושב שבכל זאת אנו מתחילים להתכנס.
בוא נניח שהמהירות שאתה כנראה מדבר עליה היא מהירות ביצוע פעולות עשרוניות (flop כנראה פלוטינג פוינט), ושהנתון לגבי הקרי בן ה 15 שנה הוא נכון. (פעולות פשוטות יותר יכולות להיות במחזור אחד או שניים כלומר אם מדובר בפעולה בסיסית ניתן לפעמים, למדוד את מהירות המחשב הביתי בן ימנו ב 800 פעולות בשניה.)
אם אכן אתה מדבר על פעולות כאלה המספר שנתת, מאתיים מליון פעולות בשניה, לגבי הפנטיום בן ימנו הוא סביר.
אבל אני חושש שהייתה לך בעיה דווקא בפעולות הכפל והחילוק.
נעזוב לרגע את ריבוי המעבדים במחשב שאותו הזכרתי, ונשווה את הקרי ההוא עם מעבד בודד בן ימנו, וניקח את המספרים שאתה עצמך מביא.
160 כפול 10 חלקי 200 הם 8 בדיוק.
היה פה מישהו אחר שטען (אגב, טענה פנטסטית) שריבוי מאבדים מאיץ את מהירות החישוב אקספוננציאלית בהרבה יותר מהכפלה במיספרם. אתה עברת לקיצוניות הפוכה. אתה טוען שריבוי המעבדים מאט את הקצב . . . כל הזמן אתם מנסים להעלות את קצב המחשב "שלהם" ולהוריד את קצב המחשבים "שלי" ע"י דברים והיפוכם.
אם ניקח "ממוצע" של השקפותיכם ונניח שישנה הכפלה במהירות בדיוק כמספר המעבדים נגיע למסקנה שמחשב עם שמונה מעבדים כאלה עובד בדיוק כמו אותו מחשב על מלפני 15 שנה.
לשאלותיך, המחשב רב המעבדים שאותו הזכרתי משמש כשרת, ומדובר במערכת הפעלה יוניקס. לא מדובר באיזו עבודת "התלאה", שנעשתה כאן, אלא במחשב שנקנה בצורתו זו.
כך או כך תחילת הפיתוח של פצצות נויטרון התחילה לפני שהקרי שעליו דברת היה יכול לעמוד לרשות המפתחים, ובהתחשב בקצב ההתפתחות המדהים בענף המחשבים, מה שעמד לרשותם נפל בהרבה מהיכולת שהבאת. פצצת מימן פותחה כפי שהזכרתי כבר בשנת 53 . אי אפשר בכלל להשוות את המחשבים של אז לאלו של ימנו.
ואולי עוד הערה. בעיות שניתנות לפתרון יעיל באמצעות ריבוי מעבדים יכולות להיפתר "ידנית" ע"י הרצתם בכמה מחשבים ללא כל קשר ביניהם, ללא שום טכנולוגיות ניהול על, ואפילו בלי רשתות "נוירוניות" או רשתות אינטרנט שגם בהם משתמשים למטרה הזאת. לדוגמה אם יש לנו המון מספרים שאנו רוצים לחשב את הממוצע שלהם, אפשר לחלק את קבצי המספרים בין כמה חברה כשלרשות כל אחד מהם עומד מחשב אישי. לבסוף, כולם יבואו עם מספר הסיכום ותתבצע פעולת סיכום הסיכומים והחילוק.
לכן , הנתונים שאתה עצמך מביא , מראים שללא שום טכנולוגיה נוספת אפשר לפתור בעיות דומות לאלה של המחשב ההוא באותו זמן. עליך רק לקנות עשרה מחשבים רגילים להושיב עליהם עשרה אנשים (או איש אחד וכסא עם גלגלים, כדי שהעובד שיאלץ לעבור ממחשב למחשב, לא יעשה עיצומים), ופצצת נויטרון יוצאת מבין אצבעותיך . . .
וממש לבסוף, למרות כל טענותיי והוויכוחים הארוכים שניהלתי בעניין, המספר שהבאת לגבי מחשב העל מלפני 15 שנה מאד מרשים ומעבר למה שהערכתי. רק כדי לשטוף אל העיניים, אם יש לך כתובת האתר שמכיל את המספר 1.6 gflops ושנת לידתו של מחשב העל שבו מדובר, אודה לך אם תציינו.
כמה מילים על סידרי גודל 6005
יחידת flop היא floating point operation כאשר מאפיינים קצב עבודה של מחשב ב MHz האינדיקציה היא למהירות השעון שלו. השעון הזה מסנכרן את הפעולות הבסיסיות ביותר של המחשב. פעולת חישוב מתבצעת ב 4 מחזורים כאילו (קריאת הפקודה, הבאת הנתונים, חישוב, הצבת התוצאה) כלומר מחשב של 800 MHz ייתן ביצועים של 200 Mflops קיימת טכנולוגיה בשם pipelining שמבצעת במקביל פעולות בסיסיות של פקודות שונות אבל עד כמה שידוע לי התמיכה של מחשבים אישיים בטכנולוגיה הזו היא מאוד עלובה (אולי בפנטיום 4 או 5). כלומר בשיא הביצועים מחשב ביתי ייתן 200 Mflops.

ריבוי מעבדים דומה במידה מסוימת לעבודה בצוות. כאשר יש הנהגה נכונה (מע' הפעלה) וחלוקת עבודה טובה (אלגוריתם חישוב מקבילי מתאים לבעיה) ניתן לפתור בעיה בצורה הרבה יותר טובה מאשר בצורה טורית. במקרים מסוימים ריבוי מעבדים יאט את קצב העבודה. כאש מדובר בבעיה טורית קל יותר יהיה לכבות את רוב המעבדים ולתת לאחד לבצע את רוב העבודה (למשל בעיה מסוג של ספירה. כל איטרציה דורשת תוצאה של חישוב קודם וזהו אם יש יותר מידי מעבדים מערכת ההפעלה וההגנות שהיא מפעילה רק יעקבו את החישוב). בעיות גדולות (כמו ממוצע) ניתן לחלק לבעיות קטנות ולשפר את הזמן הכולל לפתרון אבל מכיוון שבחלוקה אנחנו מוסיפים חשובים (איסוף התוצאות חיבורם וחלוקה מחדש) אנחנו פוגעים בתפוקה בעיה כזו שמחולקת ל 10 מעבדים תיקח יותר מעשירית הזמן שהיה לוקח לפתור אותה במעבד אחד.
דוגמא לבעיה בעלת אופי מקבילי.
נניח שהבעיה שלנו היא 100 חלקיקים שיושבים במיכל. לגבי כל אחד צריך לחשב את השקול הכוחות בין כל חלקיק לחלקיק. כלומר נחזיק בזיכרון מבנה נתונים שיתאר את מצבי כל החלקיקים (מסה, מהירות מטען וכו') בכל איטרציה עוברים על המבנה ומחשבים את המצב הבא של כל חלקיק (כלומר 10000 פעולות חישוב). בצורה כזו ניתן להקטין את זמן העיבוד פי מספר המעבדים במחשב על (כל מעבד מחשב בנפרד עבור כל חלקיק ובסוף מעדכן את המבנה נתונים). לכאורה מדובר בבעיה פתירה גם במחשב רגיל, במקום יום שלם, המחשב ירוץ עשרה ימים ונקבל פתרון אבל בפועל זה לא עובד (מתי בפעם האחרנה ראית מחשב טוחן יותר מחצי שעה בלי להיתקע?). בעבודה עם רשת מחשבים אין טעם בכלל לנסות לפתור בעיה כזו מכיוון שבסוף כל איטרציה נצטרך לעדכן כל אחד מהמחשבים במצב של כל אחד מהחלקיקים כך שמאמצי התקשורת ייקחו הרבה יותר זמן מהחישובים.

ועכשיו השוס אין לי שום מושג בחישוב מקבילי. מה שתיארתי כאן הוא לא חישוב מקבילי אלא האלגוריתם הכי טרויאני לבעיה לא מאוד מסובכת (שבטח פותרים כמה כמוה בזמן תכנון פצצת נויטרון). אלגוריתמים מתקדמים יותר יפתרו את הבעיה הזו הרבה יותר מהר (אני מתכוון אקספוננציאלית אני לא מכיר אותם אבל אני מכיר אנשים שעשו על אלגוריתמים כאלו תזות של תואר שני ככה שיש בשר בעניין אם נדבר שוב בעוד שנה או שנתיים אני אדע יותר ואולי אוכל לתאר לך אחד כזה). בכל אופן אני מאוד שמח שצריך לעשות יותר מממוצע של הרבה מספרים כדי ליצר פצצות.

האתר של חברת קריי הוא http://www.cray.com/ הרצתי בו חיפוש על המילה history והגעתי למאמר המדובר.

חזרה לעמוד הראשי המאמר המלא

מערכת האייל הקורא אינה אחראית לתוכן תגובות שנכתבו בידי קוראים