วิเคราะห์การใช้งานแบนด์วิดท์หน่วยความจำของ Vertex

แบนด์วิดท์ของหน่วยความจำของข้อมูลจุดยอดอาจเป็นจุดคอขวดที่อาจเกิดขึ้นสำหรับประสิทธิภาพ 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

แบนด์วิดท์การอ่านหน่วยความจำของ Vertex สำหรับเฟรมเดียว โดยมีค่าเฉลี่ย 327 MBps และค่าสูงสุด 1.16 GBps
รูปที่ 1: แบนด์วิดท์การอ่านหน่วยความจำของ Vertex สำหรับเฟรมเดียว โดยมีค่าเฉลี่ย 327 MBps และค่าสูงสุด 1.16 GBps

เราขอแนะนำให้แบนด์วิดท์การอ่านหน่วยความจำของจุดสูงสุดไม่เกิน 1.5 GBps และแบนด์วิดท์เฉลี่ยไม่เกิน 500 MBps ค่าที่สูงขึ้นเป็นตัวบ่งชี้ปัญหาทั่วไปอย่างใดอย่างหนึ่งต่อไปนี้

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

นอกจากนี้ คุณยังอาจวินิจฉัยปัญหาเกี่ยวกับขนาดของจุดยอดผ่านแทร็กไบต์เฉลี่ย / จุดยอด ซึ่งเราขอแนะนำว่าไม่ควรเกิน 32 ไบต์หรือจุดยอด

ขนาดจุดยอดเฉลี่ยสำหรับเฟรมเดียว โดยมีค่าเฉลี่ย 31.3 ไบต์
รูปที่ 2: ขนาดจุดยอดเฉลี่ยสำหรับเฟรมเดียว โดยมีค่าเฉลี่ย 31.3 ไบต์

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