Insinyur Google Memperkenalkan Dukungan “Light AVX” Dalam LLVM

  • Post author:
  • Post category:Linux

Insinyur Google Ilya Tocar telah memperkenalkan gagasan dukungan AVX “ringan” dalam infrastruktur kompiler LLVM untuk memanfaatkan beberapa manfaat Advanced Vector Extensions (AVX) tetapi mencoba untuk menghindari dampak daya/frekuensi yang dimiliki oleh penggunaan AVX-512 pada generasi Intel yang lebih lama prosesor.
Digabung ke LLVM 16 Git kemarin — sesaat sebelum berakhirnya pengembangan fitur LLVM 16 — apakah ini memperkenalkan konsep AVX “ringan” ke kompiler sumber terbuka ini. Mode AVX ringan ini memungkinkan untuk menghasilkan beban/penyimpanan 256-bit bahkan jika preferensi diatur (melalui opsi kompiler -mprefer-vector-width=128) untuk memilih lebar vektor 128-bit.

Mode ringan AVX ini dapat diaktifkan untuk kompiler Dentang dengan meneruskan +allow-light-256-bit ke opsi kompiler -mattr=. Mode AVX ringan ini dihubungkan untuk digunakan pada prosesor Intel Icelake dan yang lebih lama di mana mungkin ada dampak kinerja (daya/frekuensi) saat menghadapi penggunaan AVX 256-bit/512-bit. CPU Intel yang lebih baru tidak memiliki masalah besar dengan penggunaan AVX-512 — jika Anda melewatkannya, lihat perbandingan benchmark AVX-512 Sapphire Rapids saya. Demikian pula, dukungan AVX-512 AMD yang diperkenalkan dengan prosesor Zen 4 juga tidak memiliki masalah frekuensi/daya dengan AVX-512.
Ilya Tocar menyimpulkan pekerjaan AVX ringan ini untuk LLVM dengan pesan komit:
Instruksi AVX/AVX512 dapat menyebabkan penurunan frekuensi, mis. Skylake. Besarnya penurunan frekuensi/kinerja tergantung pada instruksi (perkalian vs beban/penyimpanan) dan lebar vektor. Saat ini pengguna yang ingin menghindari penurunan ini dapat menentukan -mprefer-vector-width=128. Namun ini juga mencegah pembuatan instruksi selebar 256-bit, yang tidak memiliki penurunan frekuensi terkait (terutama memuat/menyimpan).
Tambahkan bendera penyetelan yang memungkinkan pembuatan/penyimpanan AVX 256-bit, bahkan ketika -mprefer-vector-width=128 disetel, untuk mempercepat memcpy&co. Diverifikasi bahwa menjalankan memcpy loop pada semua inti tidak memiliki dampak frekuensi dan nol penghitung perf CORE_POWER:LVL[12]_TURBO_LICENSE.
Membuat coping memory lebih cepat misalnya:
BM_memcpy_aligned/256 80,7 GB/dtk ± 3% 96,3 GB/dtk ± 9% +19,33% (p=0,000 n=9+9) Opsi AVX “ringan” ini untuk CPU Intel generasi sebelumnya akan ditemukan di LLVM 16.0 yaitu diharapkan untuk rilis sekitar 7 Maret.

Itulah berita seputar Insinyur Google Memperkenalkan Dukungan “Light AVX” Dalam LLVM, semoga bermanfaat. Disadur dari Phoronix.com.