แบนด์วิดท์ของหน่วยความจำของข้อมูลจุดยอดอาจเป็นจุดคอขวดที่อาจเกิดขึ้นสำหรับประสิทธิภาพ GPU ของเกม มีตัวนับบางอย่างในโปรไฟล์ระบบ AGI ที่ช่วยวินิจฉัยปัญหาแบนด์วิดท์ของหน่วยความจำ Vertex ได้
เคาน์เตอร์ Qualcomm Adreno
ในอุปกรณ์ที่มี GPU ของ Qualcomm Adreno ตัวนับที่สำคัญบางรายการ ได้แก่
ตัวนับ | คำอธิบาย |
---|---|
การอ่านหน่วยความจำของ Vertex | แบนด์วิดท์ของข้อมูลจุดยอดที่อ่านจากหน่วยความจำภายนอก |
ไบต์/จุดยอดโดยเฉลี่ย | ขนาดเฉลี่ยของข้อมูลจุดยอดในหน่วยไบต์ |
% การหยุดชะงักของการดึงข้อมูลจุดยอด | เปอร์เซ็นต์ของรอบสัญญาณนาฬิกาที่ GPU ถูกบล็อกในข้อมูลจุดยอด |
เคาน์เตอร์ ARM Mali (WIP)
ในอุปกรณ์ที่มี GPU ของ ARM Mali ตัวนับที่สำคัญบางรายการ ได้แก่
ตัวนับ | คำอธิบาย |
---|---|
โหลด/จัดเก็บจังหวะการอ่านจากหน่วยความจำภายนอก | ข้อมูลที่อ่านจากหน่วยความจำภายนอกโดยหน่วยโหลด/จัดเก็บ ซึ่งหาค่าเฉลี่ยจากแกน Shader |
โหลด/จัดเก็บการอ่านจากแคช L2 | หน่วยโหลด/จัดเก็บจะอ่านข้อมูลจากแคช L2 โดยเฉลี่ยใน Shader Core |
[เพิ่มเติม] |
หากต้องการคำนวณแบนด์วิดท์โดยรวมจากอัตราการอ่านเฉลี่ย ให้นำค่าตัวนับไปคูณกับความกว้างของบัส (โดยปกติคือ 16 ไบต์) และคูณด้วยจำนวน Shader Core ทั้งหมด [เพิ่มเติม]
การวิเคราะห์การโต้แย้ง
หากต้องการวัดพฤติกรรมของตัวนับเหล่านี้ คุณสามารถวัดแบนด์วิดท์เฉลี่ยและสูงสุด ตลอดเฟรม GPU เดียว ซึ่งสามารถระบุได้ด้วยบล็อกที่ต่อเนื่องของการใช้ GPU

เราขอแนะนำให้แบนด์วิดท์การอ่านหน่วยความจำของจุดสูงสุดไม่เกิน 1.5 GBps และแบนด์วิดท์เฉลี่ยไม่เกิน 500 MBps ค่าที่สูงขึ้นเป็นตัวบ่งชี้ปัญหาทั่วไปอย่างใดอย่างหนึ่งต่อไปนี้
- ขนาดเวอร์เท็กซ์ใหญ่เกินไป: เวอร์เท็กซ์อาจมีแอตทริบิวต์เวอร์เท็กซ์ขนาดใหญ่หรือมีแอตทริบิวต์เวอร์เท็กซ์จำนวนมาก ซึ่งส่งผลต่อเวลาการแรเงาเวอร์เท็กซ์เป็นอย่างมาก
- สตรีมแอตทริบิวต์เวอร์เท็กซ์ไม่ได้แยก: แอตทริบิวต์เวอร์เท็กซ์จะสอดแทรกอยู่ในบัฟเฟอร์เดียว ซึ่งจะลดประสิทธิภาพของแคช
- ส่งจุดยอดต่อเฟรมมากเกินไป: โมเดลที่ซับซ้อนและ/หรือโมเดลจำนวนมากอาจใช้แบนด์วิดท์มากขึ้นและใช้เวลานานขึ้นในการแรเงา
นอกจากนี้ คุณยังอาจวินิจฉัยปัญหาเกี่ยวกับขนาดของจุดยอดผ่านแทร็กไบต์เฉลี่ย / จุดยอด ซึ่งเราขอแนะนำว่าไม่ควรเกิน 32 ไบต์หรือจุดยอด

วิธีที่ดีที่สุดในการวินิจฉัยปัญหาที่คุณอาจพบคือการใช้การติดตามโปรไฟล์เฟรมเพื่อวิเคราะห์รูปแบบจุดยอด