Optimizing and Accelerating MATLAB

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

ישנם המון סוגים של שיתופי פעולה ומשימות שניתן לבצע, אבל הבקשה הנפוצה ביותר שמתקבלת מהלקוחות היא בהחלט הבקשה הבאה:

"כתבתי קוד, האם אתם יכולים לגרום לו לרוץ מהר יותר?"

נכנסים לעניינים – תופסים תאוצה!

בסרטון הקצר הבא ניתן לצפות בשיטות לעבודה יעילה ונכונה יותר ב-MATLAB.

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

השלב הראשון – לגלות מה מאט את הקוד

בבסיס כל רעיון האצת האלגוריתם שלנו מתנקז ל-2 שלבים עיקריים:

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

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

בעזרת MATLAB Profiler, תגלו בצורה אינטראקטיבית, נוחה וגרפית את זמני הביצועים של הקוד, דבר שעוזר לנו לחקור את הקוד ולראות היכן הוא "מתקשה" – ובהתאם, לשנות את אותם המקטעים הבעייתיים.

בוובינר הבא תוכלו לראות כיצד שימוש בטיפים הללו בין היתר מניב האצה בביצועי קוד ה-MATLAB שלנו.

6 טיפים קטנים להאצה משמעותית

  1. נסו להשתמש בפונקציות במקום בסקריפטים. באופן כללי, פונקציות עובדות מהר יותר.
  2. במקום לבצע resize למערכים באופן דינמי, בצעו פרה-אלוקציה (Pre-allocation) בזיכרון.
  3. צרו משתנה חדש במקום לשייך דאטה מסוג שונה למשתנה קיים.
  4. בצעו ווקטוריזציה (Vectorization) – השתמשו במטריצות ובפעולות ווקטוריות במקום להשתמש בלולאות for.
  5. הימנעו משימוש ביותר מדי הדפסות של דאטה על גבי המסך. במקום זה, בצעו שימוש מחדש ב-Graphics handles קיימים.
  6. הימנעו משימוש פרוגרמטי של cd ,addpath ו-rmpath ככל שניתן.

מהו עיבוד מקבילי?

בסרטונים הבאים תוכלו לקבל סקירה על נושא עיבוד מקבילי ב-MATLAB, נבחן כיצד ניתן לפתור בעיות חישוביות אינטנסיביות באופן מיטבי על פני מספר ליבות מעבדים של ה-CPU או בעזרת GPU.

בנוסף, נתעמק בטכניקות המרה של קוד הרץ באופן טורי לחישוב מקבילי ונציג כיצד למנף את החומרות שנמצאות ברשותנו, ונראה כיצד ניתן למעשה להריץ קוד  MATLAB בתצורות Cluster מבוזרות על גבי מחשבים, שרתים או בענן – ואת כל זה מבלי שנצטרך להכיר לפרטי פרטים טכניקות מתקדמות בקידוד מקבילי!

דוגמא מעשית – שננסה את מה שלמדנו?

ניתן להתנסות על ה-MATLAB אצלכם במחשב, להריצו דמו להאצת הקוד יחד עם מהנדסי האפליקציה שלנו בסיסטמטיקס

רוצים לצלול עמוק יותר לתחום?

הצטרפו אלינו לקורס מקצועי ומקיף בנושא עיבוד מקבילי עם MATLAB במרכז ההדרכה של בסיסטמטיקס – לפרטים נוספים לחצו כאן.

Try MATLAB, Simulink, and More

הורידו כבר היום גרסת ניסיון של Parallel Computing Toolbox, והתחילו להתנסות ולהאיץ את ביצועי הקוד שלכם.

מוזמנים לדבר ולשתף אותנו על אתגרים נוכחיים שאתם מתמודדים מולם בעבודה שלכם, פרויקטים קיימים – נשמח לתאם שיחה לייעץ ולעזור.

עצה נוספת, קטנה ומשמעותית

הודות ל-MATLAB Execution Engine, ולעוד אופטימיזציות שונות שהפלטפורמה עוברת, MATLAB בגרסאותיו האחרונות הינו מהיר מתמיד.
כפי שניתן לראות בגרף מטה, נעשים שיפורים בתחום ביצועי הפלטפורמה.

המשמעות של זה היא – ששדרוג לגרסה חדשה יותר יכול להניב ביצועים מהירים יותר מפי 2 מהביצועים הנוכחיים!

לקבלת מידע נוסף בנושא מלאו את הטופס