ב"ה

 

 

מעבדת מחקר לחישוב גמיש

(מעבדת ח"ג)

 

מטרות

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

 

מהו חישוב גמיש?

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

 

כמו כן, רצוי מאוד שיהיה אפשר להשתמש בשפה המבטאת חישוב גמיש כשפה (פשוטה) להגדרת חומרה. דבר זה ייתן גמישות שתאפשר לממש פתרונות בתוכנה ו/או בחומרה.

 

רקע

שפת SFL (שפה גמישה פשוטה, Simple Flexible Language) היא שפת תכנות המאפשרת ביצוע גמיש. השפה מאפשרת גם ליצור דיאגרמות בלוקים לחומרה מתוך תוכניות. פותח אב-טיפוס של קומפיילר לשפה זו. בהמשך התאמנו את החומר ופיתחנו קורסים על אלגוריתמים גמישים למתחילים.

 

השפה משיגה ביצוע גמיש על ידי שכלול החוקים הקשורים לתחום הקיום של משתנים, והגדרת המיקומים שבהם מותרים לאתחל אותם, שבו מותר לעדכן אותם, שבו מותר לקרוא אותם. עדכון של משתנים מתבצע על-ידי משפטי השמה מורכבים מתאימים, אשר בהינתן החוקים המשוכללים של תחום הקיום, יכולים להבטיח שהערכים הנקראים מתוך המשתנים מוגדרים היטב בסדר ביצוע כלשהו. דוגמאות למשפטי השמה מתאימים הם משפטי השמה חד-פעמיים, וכן משפטי השמה מורכבים כגון "and=” (וגם), “or=” (או), “+=” (חיבור), וכו'. כך, דרך זו יכולה להרחיב או להחליף משפטי השמה חד-פעמיים במשפטי השמה מורכבים מתאימים, ולהבטיח ערכים נקראים מוגדרים היטב בהינתן חוקי תחום הקיום הללו.

 

מחזור החיים של משתנה המאפשר ביצוע גמיש הוא:

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

2)    המשתנה מעודכן בעזרת משפטי השמה מורכבים מתאימים (באופן סדרתי בכל סדר שהוא; לפעמים במקביל - ראו למטה).

3)    המשתנה נקרא (במקביל).

4)    המשתנה משוחרר (פעם אחת בלבד).

 

נושאים בחקירה

אנחנו מתכוונים לרכז את מאמצי המחקר בנושאים הבאים:

 

שפה משובצת לחישוב גמיש

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


לפרטים נוספיפ ראה http://flexcomp.jct.ac.il/EFLimp .

 

תמיכה בחומרה לחישוב גמיש

בנינו אב טיפוס של ״זכרון או משותף״ (OR memory) בעזרת FPGA, שמימש את הפעולה OR= ללא נעילה. הושוו זמנים לבצע במקביל השמות רגילות ללא נעילה לעומת השמות רגילות עם נעילה. הביצועים ללא נעילה היו מספר פעמים מהר יותר מהביצועים עם נעילה. בחומרת FPGA, נעילה ושיחרור מתבצעים ע״י פונקציות שמאיטות מאד את הביצועים. בעניין המימוש של OR= שמאפשר חישוב מקבילי ללא נעילה, הביצועים היו איטיים יותר בשיעור של אחוזים אחדים  מהביצועים של השמות רגילות ללא נעילה. לכן צפוי שהביצועים של OR= ללא נעילה יהיו מספר פעמים מהר יותר מהביצועים של השמות רגילות עם נעילה. הערות אלו מתיחסות לתיזמונים של פקודות בודדות. בביצועים של תוכניות שלמות, המהירות השתפר ב- 30% עד 40% בשימוש של OR= לעומת השימוש בהשמות רגילות עם נעילה.

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

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


חומרים חינוכיים לחישוב גמיש

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

 

עבודות בביצוע

1) חקירה של שימושיות EFL עבור הישום של עצי משימה (Task Trees). 

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

3) יישום מבני נתונים מקביליים באמצעות EFL. 

4) פיתוח גרסה של טרום מהדר EFL באמצעות MPI. 

5) שילוב EFL עם זיכרון מסוג Transactional Memory. 

6) שכתוב חבילת DEEPSAM למציאת המינימום הגלובלי על פני השטח האנרגיה הפוטנציאלית של חלבונים באמצעות EFL.


פניות

אנא פנה ל- flexcomp@jct.ac.il כדי לקבל מידע נוסף.