Bulan lalu saya menjalankan sejumlah tolok ukur pengoptimalan kompiler GCC 12 untuk kompiler stabil terbaru ini di atas workstation AMD Ryzen Threadripper 3990X. Tes tersebut mencakup berbagai tingkat optimasi serta optimasi link-time (LTO). Beberapa pendukung Phoronix Premium juga meminta untuk melihat beberapa benchmark baru GCC 12 Profile Guided Optimization (PGO), jadi di sini, di artikel ini adalah hasil benchmark PGO tersebut.
Compiler Profile Guided Optimizations (PGO) pertama-tama mengandalkan pengumpulan profil untuk basis kode yang sedang dibangun selama eksekusi program dan memanfaatkan data penggunaan run-time yang dikumpulkan untuk memberi umpan balik ke kompiler pada build berikutnya untuk membuat keputusan pengoptimalan yang lebih baik . PGO bisa sangat bermanfaat dengan asumsi profil akurat dikumpulkan untuk penggunaan dunia nyata dari perangkat lunak yang diberikan dan tidak terlalu banyak variasi dalam jalur kode yang diambil.
Dengan tolok ukur ini, pertama kali menjalankan semua tolok ukur dengan "-O3 -march=native -flto" untuk angka dasar, membangun kembali semua tolok ukur dengan dukungan PGO yang diaktifkan untuk pembuatan profil dan mengulangi pengujian sambil mengabaikan angka-angka tersebut selama pembuatan profil , dan terakhir adalah membangun kembali semua tolok ukur dengan menggunakan profil PGO yang dikumpulkan untuk setiap tolok ukur dan mengulangi tolok ukur untuk melihat manfaat kinerja dari PGO di GCC 12.
Selain mengganti CFLAGS/CXXFLAGS terkait PGO, secara keseluruhan "-O3 -march=native -flto" digunakan untuk flag compiler untuk melihat pengoptimalan compiler agresif pada sistem pengujian Ryzen Threadripper 3990X dengan GCC 12 aktif Stasiun Kerja Fedora36.
Mirip dengan tolok ukur kompiler PGO sebelumnya di Phoronix, pengoptimalan yang dipandu profil dapat bermanfaat untuk lebih meningkatkan kinerja perangkat lunak yang sedang diuji - dengan asumsi Anda dapat mengumpulkan profil yang memadai, dll.
Keuntungan PGO dapat sangat bervariasi meskipun tergantung pada profil dan basis kode tertentu, jadi tidak semua kasus itu bermanfaat terutama karena waktu tambahan yang dibutuhkan untuk menghasilkan profil dan membangun kembali.
Hanya dalam beberapa kasus binari yang dioptimalkan PGO lebih lambat.
Jadi, jika Anda mengejar kinerja ekstra dan telah melakukan tingkat pengoptimalan yang lebih tinggi, -march=native, dan penyetelan LTO, PGO adalah jalan lain yang layak untuk ditempuh yang akan membantu beberapa beban kerja yang sensitif terhadap kinerja jika Anda tidak keberatan dengan lebih banyak keterlibatan. proses pembuatan/pembuatan profil.
Itulah berita seputar Benchmark Pengoptimalan Terpandu Profil GCC 12 Dengan AMD Threadripper 3990X, semoga bermanfaat. Disadur dari Phoronix.com.