===== GCC Optimization ===== === Compiler Options === To see all available (enabled) optimization flags for your CPU type (with your GCC version) you can use: gcc -c -Q -march=native -mtune=native --help=target or the extended version: gcc -v -Q -march=native --help=target ... and to get all compiler Flags which are used with your choosen optimization Flags you can test with: gcc -march= [-mtune= -FLAGS] -E -v - < /dev/null 2>&1 | grep cc1 Best results will be received with the **-march=native -mtune=native** compiler flag that effectively means to use all available optimization flags for the **local systems CPU** architecture. If you want to compile best optimized for a range of systems with diverent CPU architectures you can add a explicite architecture flag for the least common architecture you want to support. ^ CPU generation ^ architecture flag ^ sup. since gcc version ^ Ubuntu 12.0 ^ | Haswell iX-4xxx |''-march=core-avx2''| (min. gcc 4.8) | | | Ivy-Bridge iX-3xxx |''-march=core-avx-i'' | (min. gcc 4.6) | not working right! **use ''corei7-avx''** | | Sandy-Bridge iX-2xxx|''-march=corei7-avx'' | (min. gcc 4.6) | fully supported | | Ironlake (Xeons?)|''-march=corei7''| <-- preferable | | | Core with SSE3 |''-march=core2'' | | | Explanations and Flags for different CPUs and Instructionsets cann be found in the [http://gcc.gnu.org/onlinedocs/gcc/i386-and-x86_002d64-Options.html| online GCC documentation|_blank] == Magic -fPIC == When compiling libraries as static, this ''**lib.a**'' can be linked static in shared libraries if they all are compiled with the ''**-fPIC**'' flag. ("Position Independent code"). == Ubuntu 12.04.5 / GCC 4.6.3 == Supported optimized Parameters for all i5 (Sandy Bridge/Ivy Bridge). -march=corei7-avx -mcx16 -msahf -mno-movbe -maes -mpclmul -mpopcnt -mno-abm -mno-lwp -mno-fma -mno-fma4 -mno-xop -mno-bmi -mno-tbm -mavx -msse4.2 -msse4.1 \ --param l1-cache-size=32 --param l1-cache-line-size=64 --param l2-cache-size=6144 -fstack-protector -mtune=corei7-avx Parameters like corei7-avx-i, per description supported on Ivy Bridge, result in different unspecific Errors for example in ** Trilinos 11.4.3 and older **. == Fedora 20 / GCC 4.8.2 == Optimized Parameters for i5 Ivy Bridge (ww8stud*, ww8-2024-[1/2], ww8-2025-3, ww8-2027-2): -march=core-avx-i -mcx16 -msahf -mno-movbe -maes -mpclmul -mpopcnt -mno-abm -mno-lwp -mno-fma -mno-fma4 -mno-xop -mno-bmi -mno-bmi2 -mno-tbm -mavx -mno-avx2 -msse4.2 -msse4.1 \ -mno-lzcnt -mno-rtm -mno-hle -mrdrnd -mf16c -mfsgsbase -mno-rdseed -mno-prfchw -mno-adx -mfxsr -mxsave -mxsaveopt --param l1-cache-size=32 --param l1-cache-line-size=64 --param l2-cache-size=6144 -mtune=core-avx-i