Apa yang baru dalam teknik optimisasi kompiler selama beberapa tahun terakhir?


14

Saya tertarik pada optimalisasi aliran data dan grafik aliran kontrol dan khususnya yang lebih kompleks secara komputasional. Tetapi juga akan menarik untuk mengetahui tentang penemuan terbaru di bidang optimasi lubang intip.


2
Dalam tesis saya ( slide ) saya telah membahas dan menerapkan grafik panggilan rata di LLVM; pada dasarnya ini adalah transformasi antar-prosedur yang menghilangkan gagasan "fungsi" karena menggabungkan semua kode bersama-sama, memungkinkan banyak kemungkinan menarik seperti gerakan kode antar-prosedur, konvensi panggilan yang dioptimalkan oleh situs, eksekusi stackless dan sebagainya.
CAFxX

@CAFxX: slide crash Open Office .. apakah Anda memiliki gambar daring?
Yttrill


Terima kasih, bisa melihat dengan itu, meskipun grafiknya baik-baik saja agar terlihat teksnya bagus.
Yttrill

Jawaban:


8

Saya tidak yakin bagaimana novel itu, atau jika terlalu banyak di sisi yang diterapkan untuk kepentingan Anda, tetapi Hoopl menunjukkan bagaimana pengoptimalan aliran kontrol / data dapat dimodulasi, dengan penyebaran fakta tentang simpul grafik kontrol yang independen dari pengoptimalan bahasa dan spesifik.

Mereka merujuk algoritma 2002 Lerner, Grove dan Chambers yang menyusun optimasi sederhana menjadi "superoptimisasi".



6

Ada sedikit kebangkitan dalam kompiler pengoptimal yang terverifikasi. Selain kertas Lerner (disebutkan dalam komentar sebelumnya), Anda mungkin melihat proyek CompCert yang dipimpin oleh Xavier Leroy. Mereka telah melakukan beberapa hal keren dengan menetapkan optimasi sebagai bukti yang dapat diperiksa oleh mesin (menggunakan Coq ). Saya belum membaca makalah, tetapi proyek The Verified Software Toolchain di Princeton juga tampaknya menghasilkan hasil yang menarik di bidang ini.


1
Kami juga sedang mengerjakan proyek yang mirip dengan CompCert: CerCo ( cerco.cs.unibo.it ). Tidak seperti CompCert, kami bertujuan untuk menghasilkan kompiler pelestarian biaya beton yang terverifikasi untuk subset besar C (CompCert hanya menunjukkan bahwa sifat ekstensional dari program sumber dipelihara oleh kompilasi). Kami juga menerapkan beberapa optimisasi loop yang cukup kompleks di kompiler, serta optimisasi "ringan" seperti yang digunakan CompCert, yang tentu saja perlu diverifikasi sebagai penghematan biaya.
Dominic Mulligan

5

Menyadari bahwa baz [i] + = force (foo [i], foo [j]) dalam loop FOR ganda memiliki hasil independen untuk (i, j) dan menyusun ulang panggilan ke dalam kurva pengisian ruang pada (i, j) ke mengurangi kesalahan cache.

Tidak cukup "lubang intip" tetapi mendapatkan perilaku lupa cache untuk "gratis" itu bagus.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.