User Tools

Site Tools


faq:hint_insufficiently_exploiting_cpu_extensions

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
faq:hint_insufficiently_exploiting_cpu_extensions [2019/05/10 08:37]
tmueller
faq:hint_insufficiently_exploiting_cpu_extensions [2019/05/10 08:39] (current)
tmueller
Line 17: Line 17:
   * All compilers: you are already using something like ''​-march=native''​ or ''​-xHost''​ to have the compiler auto-detect the CPU and enable flags automatically but you still see this ''​HINT'',​ then this likely means that the CPU in the system you are building CP2K on has a smaller instruction set than the one running CP2K. To remedy the issue you have to use specific architecture flags for your compiler (consult your compiler documentation) instead of the auto-detection. This could mean that the final executable might not run on the build system anymore, but only on the target system.   * All compilers: you are already using something like ''​-march=native''​ or ''​-xHost''​ to have the compiler auto-detect the CPU and enable flags automatically but you still see this ''​HINT'',​ then this likely means that the CPU in the system you are building CP2K on has a smaller instruction set than the one running CP2K. To remedy the issue you have to use specific architecture flags for your compiler (consult your compiler documentation) instead of the auto-detection. This could mean that the final executable might not run on the build system anymore, but only on the target system.
   * Intel Compiler: Based on [[https://​software.intel.com/​en-us/​articles/​performance-tools-for-software-developers-intel-compiler-options-for-sse-generation-and-processor-specific-optimizations|their documentation]] it seems that the Intel compiler only enables support for SSE2 by default. Check the [[https://​software.intel.com/​en-us/​articles/​performance-tools-for-software-developers-intel-compiler-options-for-sse-generation-and-processor-specific-optimizations|documentation]] to see which flags you should be adding for your target CPU or add ''​-xHost''​ if your build and target hosts are the same (see point above).   * Intel Compiler: Based on [[https://​software.intel.com/​en-us/​articles/​performance-tools-for-software-developers-intel-compiler-options-for-sse-generation-and-processor-specific-optimizations|their documentation]] it seems that the Intel compiler only enables support for SSE2 by default. Check the [[https://​software.intel.com/​en-us/​articles/​performance-tools-for-software-developers-intel-compiler-options-for-sse-generation-and-processor-specific-optimizations|documentation]] to see which flags you should be adding for your target CPU or add ''​-xHost''​ if your build and target hosts are the same (see point above).
-  * GNU Compiler: ​By default (independently of the optimization level) ​''​gcc''​ and ''​gfortran'' ​only emit code using SSE2. Use either an appropriate ''​-march=...''​ flag or ''​-march=native''​ if your build and target hosts are the same (see first point).+  * GNU Compiler: ​Also the GNU compilers emit by default (independently of the optimization level) only SSE2 instructions at most. Use either an appropriate ''​-march=...''​ flag or ''​-march=native''​ if your build and target hosts are the same (see first point).
   * Libraries: the same points apply to third-party libraries used by CP2K.   * Libraries: the same points apply to third-party libraries used by CP2K.
faq/hint_insufficiently_exploiting_cpu_extensions.txt ยท Last modified: 2019/05/10 08:39 by tmueller