Pada hari Khamis apabila melancarkan pemproses Genoa EPYC Genoa AMD Ke-4, AMD turut menerbitkan AOCC 4.0 sebagai versi terbaru Pengkompil C/C++ AMD Optimizing. Saya telah melakukannya sepanjang hari lalu dan terus menunjukkan kesan prestasi positif daripada penalaan pengkompil yang betul.

Keluaran AMD Optimizing C/C++ Compiler 4.0 terutamanya memperkenalkan sokongan dan pengoptimuman Zen 4″znver4″awal. Log perubahan awam hanya memanggilnya sebagai, sokongan dan pengoptimuman”pemproses Keluarga 19h AMD (seni bina teras AMD “Zen4”). Tidak jelas daripada itu sejauh mana pengoptimuman Zen 4 pada peringkat ini, terutamanya dengan AOCC sebagai sumber tertutup hiliran LLVM/Clang.

Selain AOCC 4.0 mempunyai Sokongan dan pengoptimuman Zen 4, terdapat penambahbaikan sokongan OpenMP 4.5 untuk Fortran, penambahbaikan penyahpepijatan/diagnostik, penalaan untuk Perpustakaan Matematik AMD 4.0, sokongan untuk varian vektor dan lib yang lebih pantas bagi Perpustakaan Matematik AMD, dan variasi yang dipertingkatkan bagi pelbagai skalar/vektor/transformasi gelung. Butiran lanjut tentang AOCC 4.0 melalui developer.amd.com.

Tiada Zen yang belum selesai 4 tampung (znver4) lagi untuk LLVM hulu.

AOCC 4.0 diperoleh daripada sumber LLVM/Clang 14.0.6 huluan. LLVM 15 dikeluarkan pada awal September manakala AOCC belum lagi berasaskan semula kepada keluaran ciri setengah tahun terbaharu itu. Untuk beberapa penanda aras awal, saya menjalankan beberapa penanda aras perbandingan pada Zen 4 antara AOCC 4.0 dan LLVM Clang 14.0 seperti yang dibungkus pada Ubuntu Linux.

Disebabkan pelayan Titanite menjadi satu-satunya EPYC 9004 saya platform ujian siri buat masa ini dan kerana sibuk menjalankan penanda aras lain, kerana mencuba AOCC 4.0 saya telah menjalankan penanda aras pada AMD Ryzen 9 7950X. AOCC 4.0 menyokong semua produk Ryzen/Threadripper/EPYC dan masih mengekalkan sokongan untuk pemproses Zen generasi terdahulu.

Semasa ujian semua CFLAGS/CXXFLAGS dikekalkan sama tetapi hanya membina semula semua perisian yang sedang diuji dengan AMD AOCC 4.0 atau LLVM Clang 14.0 huluan.

Memandangkan LLVM/Clang Git dan GCC Git huluan memperoleh lebih banyak pengoptimuman untuk Zen 4, saya sudah tentu akan menjalankan lebih besar dan perbandingan pengkompil yang lebih luas pada Zen 4–serta dijalankan pada pemproses siri EPYC 9004 yang lebih berkaitan juga.

Seperti keluaran AOCC yang lalu untuk Zen 1/2/3, AOCC 4.0 dengan Zen 4 membantu dalam memerah tambahan prestasi melebihi apa yang kini ditemui dalam penyusun sumber terbuka huluan:

LLVM Clang 14 sedang membina perisian dengan AVX-512 dan pelanjutan baharu lain didayakan, jadi untuk penanda aras AOCC vs. Clang ini ia melihat pada kesan penalaan/pengoptimuman AMD dan bukan sebarang perbezaan ISA.

AOCC 4.0 kelihatan seperti statik yang bagus rt untuk membantu memaksimumkan prestasi pemproses Zen 4 pada bahagian pengkompil.

AOCC 4.0 telah menunjukkan beberapa peningkatan yang bagus di samping prestasi AMD Ryzen 9 7950X Linux yang sudah hebat:

Terdapat keuntungan prestasi yang kecil hingga besar yang mungkin dalam menggunakan AOCC 4.0 ke atas pengkompil LLVM Clang 14 huluan yang berasaskannya. Semoga GCC tidak lama lagi akan melihat jadual kos yang ditala untuk Zen 4 untuk pendayaan Znver4 awalnya dan kemudian masih menunggu pada pendayaan LLVM/Clang znver4 huluan dan sebarang penalaan di sana.

Cerita panjang pendek, AOCC 4.0 kelihatan hebat sekurang-kurangnya pada ujian awal saya yang dijalankan pada AMD Ryzen 9 7950X. Sebagai tambahan kepada laluan AOCC sebagai pengkompil tertumpu AMD yang dioptimumkan, saya terus berharap-dan menekan-untuk AMD memastikan penyusun sumber terbuka GCC dan LLVM/Clang huluan melihat sokongan yang tepat pada masanya dan dihormati. AMD benar-benar menandakan semua kotak yang betul dengan pelaksanaan perkakasan mereka sekarang manakala pada bahagian Linux/perisian sumber terbuka mereka masih menunjukkan ruang untuk penambahbaikan, terutamanya jika mereka mahu memadankan tradisi dan tahap sokongan yang telah lama dinikmati oleh pelanggan Intel Linux untuk kualiti sokongan sumber terbuka huluan semasa pelancaran. AMD bagi pihak mereka telah bertambah baik dari segi perisian dan pengambilan berterusan mereka (mengikuti gelombang awal kejayaan EPYC dalam pusat data yang membolehkan pelaburan meningkat) sudah tentu berusaha untuk mengarahkan kapal ke arah itu.

Di samping itu, saya secara peribadi terus agak bingung mengapa AMD menunggu sehingga pelancaran EPYC kemudian sebelum menyiarkan AOCC 4.0 dan bukannya menarik perhatian pada mulanya apabila siri Ryzen 7000 mula-mula muncul. Pelaksanaan lebih awal boleh membawa kepada pengalaman yang lebih baik untuk mana-mana desktop/stesen kerja pembangun dan yang mungkin menggunakan siri Ryzen 7000 sebagai batu penilaian/loncatan untuk mula menyediakan pangkalan kod perisian mereka sendiri untuk Zen 4 dengan pelayan EPYC akhirnya. Begitu juga dengan Zen 3 dalam menunggu Milan sebelum menerbitkan AOCC 3.0 dengan jarak beberapa bulan yang membolehkan desktop pembangun Ryzen, mereka yang menjalankan pengedaran Linux berasaskan sumber, pembangun pengkompil sumber terbuka lebih banyak masa untuk memprofilkan perbezaan dalam kod yang dihasilkan, dan yang lain boleh membantu”menendang tayar”pada AOCC baharu sebelum ketersediaan EPYC. Mengapa tidak menghantarnya lebih awal sebagai”beta”AOCC untuk ujian Ryzen? Saya bayangkan ini juga berpunca daripada sumber kejuruteraan dan memerlukan sepanjang masa mereka dapat menyelesaikan pengoptimuman pengkompil.

Nantikan lebih banyak tanda aras AOCC 4.0 daripada EPYC Genoa dan perbandingan pengkompil yang lebih besar termasuk Clang-15/GCC-13/etc pada Zen 4 kerana sokongan untuk semua penyusun ini melihat peningkatan. Memandangkan penanda aras AMD EPYC 9654 dan 9554 Genoa semalam, agak menyeronokkan untuk melihat sejauh mana secara keseluruhannya lebih pantas set penanda aras besar itu apabila memanfaatkan AOCC 4.0 berbanding GCC 12 seperti yang digunakan untuk pengkompil sistem pada semua pemproses yang diuji tersebut.

Categories: IT Info