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

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

ตัวนับ Qualcomm Adreno

ในอุปกรณ์ที่มี GPU ของ Qualcomm Adreno ตัวนับที่น่าสนใจบางรายการ ได้แก่

ตัวนับ คำอธิบาย
การอ่านหน่วยความจำเวอร์เท็กซ์ แบนด์วิดท์ของข้อมูลเวอร์เท็กซ์ที่อ่านจากหน่วยความจำภายนอก
ไบต์/เวอร์เท็กซ์โดยเฉลี่ย ขนาดข้อมูลเวอร์เท็กซ์โดยเฉลี่ยในหน่วยไบต์
% การดึงข้อมูลเวอร์เท็กซ์หยุดชะงัก เปอร์เซ็นต์ของรอบสัญญาณนาฬิกาที่ GPU ถูกบล็อกในข้อมูลเวอร์เท็กซ์

ตัวนับ ARM Mali (อยู่ระหว่างดำเนินการ)

ในอุปกรณ์ที่มี GPU ของ ARM Mali ตัวนับที่น่าสนใจบางรายการ ได้แก่

ตัวนับ คำอธิบาย
การอ่าน/เขียนข้อมูลจากหน่วยความจำภายนอก ข้อมูลที่อ่านจากหน่วยความจำภายนอกโดยหน่วยการอ่าน/เขียนข้อมูล โดยเฉลี่ยในคอร์ของ Shader
การอ่าน/เขียนข้อมูลจากแคช L2 ข้อมูลที่อ่านจากแคช L2 โดยหน่วยการอ่าน/เขียนข้อมูล โดยเฉลี่ยในคอร์ของ Shader
[เพิ่มเติม]

หากต้องการคำนวณแบนด์วิดท์โดยรวมจากการอ่านข้อมูลโดยเฉลี่ย ให้คูณค่าตัวนับด้วยความกว้างของบัส (โดยปกติคือ 16 ไบต์) และจำนวนคอร์ของ Shader ทั้งหมด [เพิ่มเติม]

การวิเคราะห์ตัวนับ

หากต้องการวัดลักษณะการทำงานของตัวนับเหล่านี้ คุณสามารถวัดแบนด์วิดท์เฉลี่ยและแบนด์วิดท์สูงสุดในเฟรม GPU เดียว ซึ่งสามารถระบุได้ด้วยบล็อกที่ต่อเนื่องของการใช้ GPU

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

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

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

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

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

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