Kami sangat menyarankan semua pengguna kami mulai dengan -O3 -xHost -ipo
ifort 11 dan ifort 12. Jika ada transformasi floating point tertentu yang diaktifkan oleh O3 yang memengaruhi ketepatan beberapa perhitungan Anda, Anda dapat mematikannya secara khusus dengan -fp-model precise -fp-model except
(atau, lebih drastis, -fp-model strict
) sementara mempertahankan optimasi lainnya yang dimungkinkan O3, seperti pemblokiran loop untuk cache, loop fusion dan unrolling, dan optimisasi akses memori.
Saya akan menyarankan mencoba hal-hal model floating point pada file individual dan mencari tahu di mana itu membuat perbedaan, daripada mematikannya secara global; itu bisa berupa benjolan kecepatan ~ 15%, dan Anda ingin dapat mempertahankannya di tempat yang tidak memengaruhi perhitungan Anda. Jika Anda tidak yakin di mana ketepatan dipengaruhi, Anda dapat bermain dengan menghidupkan dan mematikan flag model floating point untuk file-file itu, atau bermain dengan mode pembulatan .
Kami baru-baru ini memberikan ceramah singkat kepada pengguna kami tentang flag optimasi, dengan fokus pada kompiler gnu dan intel untuk x86; Anda dapat melihat slide dari pembicaraan itu di sini .
Kebetulan, sementara kita berbicara tentang memilih flag optimasi untuk kode Anda, kadang-kadang juga layak melihat output -vec-report untuk melihat di mana kompiler berusaha untuk membuat vektor loop dan tidak bisa; kadang-kadang ada perubahan kecil yang dapat Anda lakukan untuk loop Anda yang dapat mengakibatkan vektorisasi menjadi mungkin (yang dapat menjadi 4x speedup). Demikian pula untuk -opt-report yang lebih umum .