Kodumun derleyici tarafından vectorized olup olmadığını nasıl anlarım?


Yanıtlar:


10

Herhangi bir modern klasikin Intel derleyicisi ile -O3 -vec-report3. Üçüncü optimizasyon seviyesi, vektörleştirmeye çalıştığını garanti eder ve vektör raporu size ne yaptığını söyler.

Vektörizasyondaki GNU sayfası, optimizasyon seviyesi 3'te varsayılan olarak açık olduğunu, ancak vec-raporunun eşdeğerini bulamadığımı söylüyor.


Hızlı cevabınız için teşekkür ederim. -Vec-report3'ü bilmiyordum. Bu tür bir şey söz konusu olduğunda derleyici tercihiniz var mı (otomatik vektörleştirme)?
Matthew Emmett

Intel derleyicileri gerçekten iyidir, ancak yalnızca intel yongaları için. Sadece doğru pragmaları eklemelisiniz (#pragma ivdep en kolay) GCC 4.7 çok daha iyi oldu ama bir meslektaşı ile bazı kodlara bakarken hala hatalar var (openmp pragmas içinde vektörleşme yok gibi).
aterrel

1
Intel derleyicisinin AMD yongalarındaki vektörizasyonla nasıl çalıştığını iki kez kontrol etmenizi öneririm. Eski sorunların hala var olduğundan% 100 emin değilim.
Bill Barth

2
@BillBarth Evet, hala bir sorun var. (Birçok yerde, örneğin Optimizasyon Bildirimi Bkz software.intel.com/sites/products/collateral/hpc/compilers/... ). AMD, Intel'in rekabete aykırı olduklarını değil rekabete aykırı olduklarını ifşa etmesini gerektiren mahkeme savaşını kazandı. en.wikipedia.org/wiki/Intel_C%2B%2B_Compiler#Criticism Agner Sis, geçici çözümlerde: agner.org/optimize/blog/read.php?i=49
Jed Brown

@JedBrown, SSE'nin hala garip olduğunu, ancak AVX'in hikayesi nedir? Bu bağlantılar, her şeyin iyi olması gerektiğini gösteriyor (her iki şirket AVX'i uyguladığından), ancak bir Buldozer makinesinde test etmedim.
Bill Barth

8

GNU derleyici koleksiyonunun içinde, seçeneğine sahip bir olduğunu 0 ile 6 arasında sayı benzer bilgiler yazdırır / ' .-ftree-vectorizer-verbose=nniccifort


5

GNU derleyicileri ile ekleme -Wa,-ahl=asm.s, oluşturulan derleme kodunu dökecektir asm.s.

Intel derleyicileri ile ekleme -fcode-asm -Faasm.s, üretilen kodu dökecektir asm.s.

Daha sonra montaj kodunu inceleyebilir ve vektör kayan nokta işlemlerini arayabilirsiniz.


Kod çıkışının denetlenmesinin, kodun gerçekten vektörlenip belirlenmediğini belirlemenin tek güvenilir yolu olduğunu tamamen kabul ediyorum. Derleyicilerin kodu vektörleştirme iddiaları konusunda dürüst olmasını gerektiren hiçbir şey yoktur.
Jeff
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.