יום ראשון, 10 באוגוסט 2014

Compiler או Coder ? זו השאלה

אחת מהשאלות הנפוצות ביותר שאני נתקל בהן היא "מה ההבדל בין MATLAB Coder לבין MATLAB Compiler". באופן די מבלבל, השמות של שני הכלים מתחילים ב-"MATLAB Co" ומסתיימים ב-"er", אבל הם כמובן כלים אשר משמשים לדברים שונים, כפי שיוסבר בשורות הבאות.
מה יוצרים?
ה-
Compiler משמש ליצירת קבצי הרצה (סיומת .exe) וכן ליצירת C/C++ shared libraries מתוך קבצי MATAB. בשילוב עם כלי ה-Builder השונים, התוצר אף יכול להשתלב בסביבות Java, דוט נט, ואקסל, ובעזרת כלי בשם MATLAB Production Server – הוא גם יכול לפעול על מערכות Production.
לעומתו, ה-
Coder מאפשר להמיר קוד MATLAB ל-C/C++ Source Code קריא, יעיל ונייד (Portable) לפלטפורמות כמו צ'יפים, מעבדי Arm ושאר פלטפורמות אשר תומכות ב-ANSI/ISO C/C++ Code. כמובן שניתן לקמפל את הקוד אשר יוצר ה-Coder לקבלת exe או dll שמיועדים לפעול על desktops.
מהירות ריצה של התוצר
מבחינת מהירות ריצה, התוצר של ה-
Compiler, הזקוק ל-MATLAB Compiler Runtime (MCR) כדי לפעול, רץ פחות או יותר באותה מהירות בה רץ קוד ה-MATLAB, בעוד שזה של ה-Coder בעל פוטנציאל לרוץ מהר יותר (הדבר מאוד תלוי באלגוריתם, שכן יש פונקציות MATLAB-יות שעברו אופטימיזציה). באותה נשימה, כדאי להדגיש שתוצר ה-Compiler יכול לנצל ריבוי ליבות או GPU כדי לרוץ יותר מהר (באם הקוד המקורי השתמש ב-Parallel Computing Toolbox כדי לעשות זאת), ושקוד C אשר נוצר תוך שימוש ב-Coder, הרץ על מחשב מקומי מרובה ליבות, יכול להיתמך על ידי ממשק ה-OpenMP.
איזו פונקציונליות נתמכת ?
יתרון גדול של ה-
Compiler הוא שכמעט כל הפונקציונליות של MATLAB וה-Toolbox-ים השונים נתמכת על ידי הכלי, בעוד שאצל ה-Coder התמיכה פחות מקיפה (אך עדיין - כוללת מאות פונקציות, אופרטורים ו-System Objects). היתרון הזה קריטי אצל משתמשים אשר פיתחו ממשק משתמש גרפי (GUI), שכן אותו ניתן להפיץ רק עם ה-Compiler.
סיכום
שני הכלים מפותחים ונמכרים על ידי אותה חברה, משמע – הם אינם כלים מתחרים, אלא כלים משלימים, ופעמים רבות יצא לי לראות קריאה לפונקציה שהואצה על ידי המרתה לקוד
C (עם ה-Coder) נכללת בתוך GUI אשר מקומפל עם ה-Compiler. היתרון הגדול של שני הכלים הוא שהם מאפשרים למשתמש להפיץ את הקוד אשר כתב בסביבת MATLAB למחשבים שאין עליהם התקנה של MATLAB, וההפצה הזו אינה כרוכה בתשלום כלשהו למעט התשלום הראשון (והאחרון) בעבור הכלי – Compiler, Coder, או גם וגם...
ועכשיו, אחרי שהוסבר ההבדל בין ה-MATLAB Coder לבין ה-MATLAB Compiler - אם ברצונך לבחון את מידת ההתאמה של אחד מהכלים (או שניהם) עבורך, ללא התחייבות מצידך, עם (או בלי) ליווי של מהנדס מטעם סיסטמטיקס, ניתן לפנות אליי באמצעות royf@systematics.co.il
ובקרוב יהיה גם ניתן להירשם לסמינר מקצועי בנושא (ללא עלות מצידך) שיתקיים בחודש נובמבר 2014 בצפון ובמרכז. פרטים על הסמינר יפורסמו באתר סיסטמטיקס