My apologies. I was incorrect in assuming only the Intel compiler was using the AES-NI intrinsics. I ran some code profiling on OS X and it showed that both the GNU and the Intel compilers were calling the AES-NI subroutines (Clang was the only compiler that failed to do so).
So to slightly rephrase my question... What could be going on that's causing GNU to outperform Intel so dramatically (any optimization flags to consider)? Also, has anyone else encountered such an unbalanced performance outcome between two compilers on the same machine (both utilizing AES-NI)? Regards, Gabe On Thursday, April 23, 2015 at 7:14:01 PM UTC-7, Gabriel Hackebeil wrote: > > I've run the benchmark tests after compiling Crypto++ 5.6.2 with the > latest versions of the Intel compilers (icpc 15.0.2), GNU g++ (4.9 and > 5.1), and Clang (Apple LLVM version 6.1.0). I'm basically interested in > getting the best possible performance for AES in CTR mode, and the results > of the benchmarks were surprising. In my limited understanding, use of the > AES-NI instruction set (which I believe only the Intel compiler can > utilize) is supposed to provide a big performance boost for AES. The > results do not show this. For the AES mode of interest (CTR), the > throughput I achieve (as reported by the benchmark test suite) is roughly: > > Clang: ~1 GiB/second > Intel: ~1.7 GiB/second > GNU: ~4.1 GiB/second > > Can someone explain why GNU has such a huge boost in performance (~2.5x) > over Intel, when GNU can not use the AES-NI instructions (I don't care much > about Clang)? I get the same results comparing Intel and GNU on a Linux VM. > Let me know if you need any relevant machine specs (Intel core i7 cpu). The > relevant compiler flags appearing on Linux vs OS X are shown below (the > performance results are the same on either operation system and I've played > with various optimization flags for each without much change in > performance). Can anyone enlighten me about the lack of performance boost > from AES-NI? > > *On Linux VM:* > GNU: > $ make CXX=g++ > $ g++ -DNDEBUG -g -O2 -march=native -pipe -c ... > > Intel: > $ make CXX=icpc > $ icpc -DNDEBUG -g -O2 -wd68 -wd186 -wd279 -wd327 -pipe ... > > *On OS X:* > GNU: (the "-Wa,-q" is to get around assembler errors) > $ make CXX="g++-5.1 -Wa,-q" > $ g++-5.1 -Wa,-q -DNDEBUG -g -O2 -arch x86_64 -DCRYPTOPP_DISABLE_ASM -pipe > ... > > Intel: > $ make CXX=icpc > $ icpc -DNDEBUG -g -O2 -wd68 -wd186 -wd279 -wd327 -DCRYPTOPP_DISABLE_ASM > -c ... > -- -- You received this message because you are subscribed to the "Crypto++ Users" Google Group. To unsubscribe, send an email to [email protected]. More information about Crypto++ and this group is available at http://www.cryptopp.com. --- You received this message because you are subscribed to the Google Groups "Crypto++ Users" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.
