הגדרה של אופטימיזציה מודרכת באמצעות פרופיל ב-Visual Studio

ב-AGDE הוספנו ב-AGDE תמיכה באופטימיזציה מודרכת לפרופיל גרסה 22.2.71.

איתור הגדרות ה-PGO

פותחים את הגדרות הפרויקט ב-Solution Explorer.

תפריט המאפיינים של הכלי לבדיקת פתרונות של Visual Studio Solution של
פרויקט.

איור 1: החלון של Visual Studio Solution Explorer.

צריך לוודא שהפלטפורמה מוגדרת לתצורת Android (לדוגמה, Android-arm64-v8a).

בחלונית השמאלית, בוחרים באפשרות Configuration Properties > 'מאפייני הגדרה > כללי. חיפוש של קבוצת הנכסים שנקראת PGO.

תיבת הדו-שיח של מאפייני הפרויקט שבה מוצגים המאפיינים הכלליים וההגדרות של PGO
מודגש

איור 2: תיבת הדו-שיח של מאפייני הפרויקט.

הפעלת בניית מודלים של PGO-Instrumented בפרויקט

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

לוחצים על Configuration Manager... (מנהל ההגדרות) בתיבת הדו-שיח של הדף 'מאפיין'.

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

איור 3: תיבת הדו-שיח של מנהל ההגדרות.

בתיבת הדו-שיח 'מנהל התצורה', בוחרים באפשרות Active פתרון הגדרות אישיות ובוחרים <New...>.

תיבת הדו-שיח &#39;מנהל התצורה&#39;, שכוללת את ההגדרה Active Solution Configuration
והאפשרות החדשה נפתחה.
מודגשת.

איור 4: יצירת תצורת build חדשה.

... ויוצרים תצורה חדשה עם PGO-Instrument.

תיבת הדו-שיח &#39;הגדרת הפתרון החדש&#39;, שיוצרת גרסת build חדשה של PGO-Instrument
על סמך גרסת ה-build הקיימת של הגרסה
הגדרה

איור 5: תיבת הדו-שיח של הגדרת הפתרון החדש.

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

תיבת הדו-שיח של מאפייני הפרויקט, שנפתחת להגדרות הכלליות, עם ה-PGO
ההגדרות שמוצגות, ומצב &#39;אופטימיזציה מודרכת&#39; בפרופיל מוגדר ל-
עם אינסטרומנטציה.

איור 6: תיבת הדו-שיח של מאפייני הפרויקט, שמדגישה את ההגדרות של PGO.

בהגדרה פרופילים מודרכים לאופטימיזציה של פרופיל, מזינים את הנתיב אל כדי לכתוב בה את קובץ הנתונים הגולמיים של פרופיל הפלט במכשיר Android. בדרך כלל הערך הזה צריך להיות משהו כמו /data/data/<package name>/cache/ – כאשר <package name> הוא שם החבילה המלא של APK – לדוגמה, com.google.sample.tunnel.

למידע מעמיק יותר על אופן הפעולה, עיינו במאמר קלנג תיעוד.

כתיבת נתוני פרופיל במכשירים של PGO במכשיר

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

לאפליקציה שלך, עליך לקרוא במפורש ל-__llvm_profile_write_file כדי לכתוב נתוני הפרופיל. הסמל הזה זמין רק כשיוצרים מכשיר PGO build. כדי להקל על התהליך, מומלץ להשתמש בדפוס הבא כאשר קדימה, מצהיר/ה על __llvm_profile_write_file.

#ifdef PGO_INSTRUMENT
extern "C" int __llvm_profile_write_file(void);
#else
extern "C" int __llvm_profile_write_file(void) { return 0; }
#endif

קריאה לפונקציה הזו כותבת את נתוני הפרופיל בתיקייה שציינת מוקדם יותר.

ביצוע הרצת פרופיל

כדי ליצור את הפרופיל, מריצים את ה-APK שנוצר באמצעות PGO-instrumentation מכשיר היעד. לאחר הפעלת הקוד לשביעות רצונך, הפעילה את הקריאה לפונקציה __llvm_profile_write_file, האפליקציה לכתוב את נתוני הפרופיל באחסון.

בשלב הזה, מעתיקים את הפרופילים שוב מהמכשיר לשימוש של המהדר.

הכנת נתוני פרופיל לשימוש על ידי המהדר

בשימוש מבודד, כלי שורת הפקודה llvm-profdata שנשלח כחלק של Clang/LLVM ב-Android NDK משמשים להכנת קבצים של נתוני פרופילים לשימוש. על ידי המהדר במהלך אופטימיזציה מודרכת פרופיל של build.

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

בניית הפרויקט עם אופטימיזציה מודרכת פרופיל מופעלת

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

יוצרים הגדרה חדשה של פרויקט ל-PGO-Optimized Build, כך שרק אתם לפתח במצב הזה כשיש צורך.

תיבת הדו-שיח &#39;הגדרת הפתרון החדש&#39;, שיוצרת תצורת build על סמך
את גרסת ה-build של הגרסה, אבל הפעם עם אופטימיזציה ל-PGO בתור ה-build החדש
שם ההגדרה האישית.

איור 7: יצירת הגדרה חדשה של build מותאם ל-PGO.

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

תיבת הדו-שיח של מאפייני הפרויקט, שנפתחת להגדרות הכלליות, עם ה-PGO
ההגדרות שמוצגות, ומצב &#39;אופטימיזציה מודרכת&#39; בפרופיל מוגדר ל-
בוצעה אופטימיזציה

איור 8: הגדרת מצב האופטימיזציה של PGO ל'אופטימיזציה'.

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

אפשר להעתיק את הקבצים של נתוני הפרופיל לפרויקט מהמכשיר באמצעות ADB, או באמצעות הכלי Android Device Explorer.

שימוש באופטימיזציה מודרכת בפרופיל מחוץ ל-AGDE

אם אתם משתמשים במערכת build שאינה נתמכת על ידי AGDE, יכול להיות שתצטרכו לערוך ישירות את ה-build. קלאנג תיעוד כולל את המתגים הנדרשים – -fprofile-generate, -fprofile-use

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