1 / 15

עיבוד מקבילי 361-1-3621

עיבוד מקבילי 361-1-3621. סודוקו מקבילי. אלון גוטרמן אופיר אלון. מה זה סודוקו?. פאזל לוגי בו על הפותר למלא לוח מספרים כך שהמספרים 1-9 צריכים להופיע פעם אחת בלבד עבור: כל שורה כל עמודה כל קובייה בגודל 3 x 3. Figure 1: 9x9 Sudoku Puzzle with solution. מורכבות הבעיה.

ray
Download Presentation

עיבוד מקבילי 361-1-3621

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. עיבוד מקבילי361-1-3621 סודוקו מקבילי אלון גוטרמן אופיר אלון

  2. מה זה סודוקו? • פאזל לוגי בו על הפותר למלא לוח מספרים כך שהמספרים 1-9 צריכים להופיע פעם אחת בלבד עבור: • כל שורה • כל עמודה • כל קובייה בגודל 3x3 Figure 1: 9x9 Sudoku Puzzle with solution

  3. מורכבות הבעיה • מספר לוחות הסודוקו האפשריים הוא: 6,670,903,752,021,072,936,960 • במידה ולוקח 1usec למציאת פתרון יחיד, ניתן לראות שידרשו 211,532,970,320שנים למציאת כל הפתרונות האפשריים.

  4. אלגוריתם פתרון סריאלי אילוצי התפשטות וחיפוש (CPS – Constraint Propagation and Search ). • עבור כל תא, אם מספר כבר קיים בשורה, בטור או בקופסא (3x3) – נמחקת האפשרות שמספר זה יופי בתא. • עבור כל תא, אם עבור כל ה"שכנים" (מסומן בכחול) של אותו תא לא ניתן לשים מספר מסוים, אזי המספר המסוים חייב להופיע בתא זה. • במידה ולא נמצא דרך לבצע אילוץ לפי החוקים המתוארים למעלה, מנחשים מספר וחוזרים על התהליך.

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

  6. אלגוריתם פתרון מקבילי – Message Passing • כל תהליכון מקבל פאזל שונה לפי עקרון החיפוש (ניחוש). • כל תהליכון מבצע את האלגוריתם הסריאלי בנפרד מהתהליכונים האחרים. • ברגע שתהליכון מוצא פתרון, הוא מודיע לשאר התהליכונים להפסיק לחפש. • במידה ותהליכון סיים את החיפוש ולא נמצא פתרון מבוקש – הוא עוזר לתהליכון שעדיין בריצה, עד שימצא פתרון

  7. Message Passing - המשך • התהליכונים מבקשים אחד מהשני בקשה לעיבוד מידע בצורה מעגלית (0->1->2->…->n) כאשר הם מסיימים את העיבוד שלהם. • כאשר תהליכון מזהה שתהליכון אחר מבקש עבודה הוא יעביר לו חצי מהעבודה שנותרה לו נכון לאותו הרגע. • העברת המידע מבוצעת בסיבוכיות של O(n).

  8. אלגוריתם מקבילי עם זיכרון משותף – Using Locks • זיכרון משותף המכיל את כל הפאזלים • סנכרון הגישה לכל תהליך לעץ הראשי מבוצע על ידי פעולת נעילה רגעית של המידע בזיכרון • כל תהליך יכול לבצע את הפעולות: • לקחת ענף מהעץ לעיבוד עצמאי • להוסיף ענף לעץ המכיל פאזלים נוספים • במידה ותהליך גילה שהפתרון לא מצוי אצלו הוא יכול לזרוק את הפאזל שעליו עבד ולקחת פאזל חדש מהזיכרון המשותף.

  9. יתרונות שיטת Using Locks • אין צורך בתקשורת בין התהליכונים • תהליכון לא צריך לבקש מתהליכונים אחרים מידע לעיבוד • תהליכונים עובדים ללא הפרעות בקשה מתהליכונים אחרים קיימות שתי וריאציות לאלגוריתם Using Locks • Fine-grain locking – מבצעים נעילה על המידע בעץ עבור תהליכון מסוים לפני ביצוע פעולה כמו הכנסת או הוצאת פאזל, ומיד לאחר מכן משחררים. • Coarse grain locking – מבצעים נעילה רגעית של כל התהליכונים למעט תהליכון בודד, מאפשרים לו לקחת פאזל מהעץ ורק כאשר הוא מסיים מוחזר המידע לזיכרון המשותף והשאר יוצאים מנעילה.

  10. שיטת ביצוע הערכה ומדידות • מדידת הביצועים של האלגוריתמים השונים נעשה על מחשב בעל: Intel Core 2 Quad q9450 @ 2.66 GHz, 4 GB RAM , Linux Kernel • התוצאות מתייחסות לביצוע של 100 מדידות שונות של לוחות סודוקו מרושעים בגודל 16x16. • דיוק של מיקרו שניות במדידות.

  11. תוצאות

  12. תוצאות • זמן ריצה של האלגוריתם הסריאלי (CPS) הינו 17.5 שניות בממוצע • Message Passing • 2 תהליכונים: זמן ריצה ממוצע של 8.9 שניות וגורם האצה של 1.97. • 4 תהליכונים: זמן ריצה ממוצע של 4.8 שניות וגורם האצה של 3.64. • 5+ תהליכונים: זמן ריצה גדל ליניארית וגורם האצה קטן ליניארית. • Fine-grain locking • 2 תהליכונים: זמן ריצה ממוצע של 6.7 שניות וגורם האצה של 2.61. • 4 תהליכונים: זמן ריצה ממוצע של 3.8 שניות וגורם האצה של 4.6. • 5+ תהליכונים: אין שיפור ואין הרעה בזמן הריצה ובגורם ההאצה. • Coarse grain locking • ללא קשר למספר המעבדים – זמן הריצה ארוך יותר מהזמן הריצה של האלגוריתם הסריאלי.

  13. ניתוח תוצאות ומסקנות • קבלת Speed-up ליניארי עד שימוש ב4 תהליכונים. • fine-grain locking – היעיל ביותר כי כל התהליכונים תמיד עסוקים בביצוע פעולות ואין העברת מידע בין המעבדים. • "צוואר הבקבוק": • Message Passing • אופן בקשת והעברת המידע בין התהליכונים (0->1->2..->n) גורם להאטה בזמן הביצוע. • fine-grain locking • מעל 4 תהליכונים לא חל שיפור בביצוע בגלל "צוואר בקבוק" שנגרם כתוצאה משימוש ב-Locking של הזיכרון. • יעילות • מקבול האלגוריתם הסריאלי משפר ברוב המקרים משמעותית את זמני הריצה. • שימוש ביותר מ4 תהליכונים פוגע ביעילות.

  14. מקורות • http://individual.utoronto.ca/rafatrashid/Projects/2012/SudokuReport.pdf • http://alitarhini.wordpress.com/2011/04/06/parallel-depth-first-sudoku-solver-algorithm/ • http://www.andrew.cmu.edu/user/hmhuang/project_template/finalreport.html

More Related