Multi-threading not actually working on another machine

Alfio Lazzaro alfio.... at
Fri Feb 24 07:47:37 UTC 2017

Dear William,
CP2K uses OpenMP for the threading. The number of threads is set by using 
the environment variable OMP_NUM_THREADS and it goes at runtime, therefore 
there is no relation with the compilation (you can specify the number of 
threads at runtime). By default, if you don't set the variable, OpenMP 
assumes the maximum number of available threads on the system (8 and 40 in 
your case). That's why you see 40 threads. However, you should consider 
that it is very hard to get good scalability for such large number of 
threads (actually it depends on your workload), that's why in "average" 
(what you see from top command) you are using 8 corresponding fully loaded 

I can suggest to experiment with setting a different number of threads. 
Just use:

export OMP_NUM_THREADS=<any number between 1 and 40>

before running CP2K.

Another better solution would be to use MPI and OpenMP (psmp version), by 
using 4 MPI ranks and 10 threads (for example). Likely it would give you 
better performance...


Il giorno giovedì 23 febbraio 2017 22:48:01 UTC+1, William Tao ha scritto:
> Dear friends,
> I compiled the cp2k version 4.1 on a 8-core CPU machine.
> When I run the binary cp2k.ssmp on another machine with 40-core CPU, the 
> output prints that the number of threads is 40.
> However, when I check with "top" command, the process could use up to 800% 
> CPU.
> Does anybody know what is going on?
> William 
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <>

More information about the CP2K-user mailing list