Menganalisis penggunaan bandwidth memori vertex

Bandwidth memori data vertex dapat menjadi potensi hambatan untuk performa GPU game Anda. Ada beberapa penghitung dalam profil sistem AGI yang dapat membantu mendiagnosis masalah bandwidth memori vertex.

Penghitung Qualcomm Adreno

Di perangkat dengan GPU Qualcomm Adreno, beberapa penghitung penting mencakup:

Penghitung Deskripsi
Vertex Memory Read Bandwidth data vertex yang dibaca dari memori eksternal.
Average Bytes/Vertex Ukuran rata-rata data vertex, dalam byte.
% Vertex Fetch Stall Persentase siklus clock saat GPU diblokir pada data vertex.

Penghitung ARM Mali (WIP)

Di perangkat dengan GPU ARM Mali, beberapa penghitung penting mencakup:

Penghitung Deskripsi
Load/store read beats from external memory Data beats yang dibaca dari memori eksternal oleh unit load/store, dirata-ratakan di seluruh core shader.
Load/store read beats from L2 cache Data beats yang dibaca dari cache L2 oleh unit load/store, dirata-ratakan di seluruh core shader.
[Lainnya]

Untuk menghitung bandwidth keseluruhan dari rata-rata data beats yang dibaca, nilai penghitung dikalikan dengan lebar bus (biasanya 16 byte) dan dengan jumlah total core shader. [Lainnya]

Analisis penghitung

Untuk mengukur perilaku penghitung ini, Anda dapat mengukur bandwidth rata-rata dan puncak selama satu frame GPU, yang dapat dibatasi dengan blok Penggunaan GPU yang berdekatan.

Bandwidth baca memori vertex untuk satu frame, dengan nilai rata-rata 327 MBps dan nilai puncak 1,16 GBps
Gambar 1: Bandwidth baca memori vertex untuk satu frame, dengan nilai rata-rata 327 MBps dan nilai puncak 1,16 GBps

Sebaiknya gunakan bandwidth baca memori vertex puncak tidak lebih dari 1,5 GBps, dan bandwidth rata-rata tidak lebih dari 500 MBps. Nilai yang lebih tinggi adalah indikator salah satu dari beberapa masalah umum:

  • Ukuran vertex terlalu besar: Vertex mungkin memiliki atribut vertex yang besar atau jumlah atribut vertex yang besar, yang sangat memengaruhi waktu shading vertex.
  • Aliran atribut vertex tidak dipisah: Atribut vertex disisipkan ke dalam satu buffer, sehingga mengurangi efisiensi cache.
  • Terlalu banyak vertex yang dikirim per frame: Model yang kompleks dan/atau sejumlah besar model dapat menggunakan bandwidth yang lebih besar dan membutuhkan waktu lebih lama untuk di-shade.

Masalah ukuran vertex juga dapat didiagnosis melalui jalur Average Bytes / Vertex, yang sebaiknya tidak lebih dari 32 byte atau vertex.

Ukuran verteks rata-rata untuk satu frame, dengan nilai rata-rata 31,3 byte
Gambar 2: Ukuran vertex rata-rata untuk satu frame, dengan nilai rata-rata 31,3 byte

Cara terbaik untuk mendiagnosis masalah mana yang mungkin Anda hadapi adalah dengan mengambil pelacakan profil frame untuk menganalisis format vertex.