ניתוח השימוש ברוחב הפס של הזיכרון ב-Vertex

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

מונים של Qualcomm Adreno

במכשירים עם מעבדי GPU מסוג Qualcomm Adreno, חלק מהמונים הבולטים כוללים:

מונה תיאור
קריאת זיכרון ב-Vertex רוחב הפס של נתוני הקודקודים שנקראים מזיכרון חיצוני.
בייטים בממוצע לקודקוד הגודל הממוצע של נתוני הקודקוד, בבייטים.
‫% Vertex Fetch Stall אחוז מחזורי השעון שבהם ה-GPU חסום בנתוני קודקודים.

מונים של ARM Mali (בשלבי פיתוח)

במכשירים עם מעבדי ARM Mali GPU, חלק מהמדדים הבולטים כוללים:

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

כדי לחשב את רוחב הפס הכולל מתוך ממוצע הפעימות של הקריאה, מכפילים את ערך הדלפק ברוחב האפיק (בדרך כלל 16 בייט) ובמספר הכולל של ליבות ההצללה. [עוד]

ניתוח נגדי

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

רוחב הפס של קריאת הזיכרון של Vertex עבור פריים יחיד, עם ערך ממוצע של 327MBps וערך שיא של 1.16GBps
איור 1: רוחב פס של קריאת זיכרון ב-Vertex עבור פריים יחיד, עם ערך ממוצע של 327MBps וערך שיא של 1.16GBps

מומלץ להגדיר רוחב פס מקסימלי לקריאת זיכרון של קודקוד שלא יעלה על 1.5GBps, ורוחב פס ממוצע שלא יעלה על 500MBps. ערכים גבוהים יותר מצביעים על אחת מכמה בעיות נפוצות:

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

אפשר גם לאבחן בעיות בגודל הקודקוד באמצעות המדד Average Bytes / Vertex (בייטים בממוצע לקודקוד). מומלץ שהערך של המדד הזה לא יעלה על 32 בייטים או קודקודים.

הגודל הממוצע של קודקוד לפריים בודד, עם ערך ממוצע של 31.3 בייטים
איור 2: גודל ממוצע של קודקוד לפריים בודד, עם ערך ממוצע של 31.3 בייט

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