QuantumATK Forum

QuantumATK => General Questions and Answers => Topic started by: esp on January 23, 2012, 20:42

Title: MKL ?
Post by: esp on January 23, 2012, 20:42
on this page: http://quantumwise.com/documents/tutorials/latest/ParallelGuide/index.html/chap.quick.html

it talks about parallel implementation, then at the bottom it mentions:

"MKL will detect the presence of a multi-core processor and enable OpenMP automatically. It is recommended to let the software figure out itself how many threads to use optimally."

So I have a machine which has an equivalent of 24 cores ... so then should I run my jobs with the mpiexec -n parameter or not? should I .. "let the software figure out itself" ?

 ???
Title: Re: MKL ?
Post by: Anders Blom on January 23, 2012, 21:21
You're mixing apples and pears a little bit :) OpenMP threading over cores has nothing to do with "mpiexec".

mpiexec -n 4 tells ATK to parallelize the calculation over 4 MPI processes. These 4 processes can run on separate machines, sockets or cores depending on your hardware resources (and allocation scheme). If we, for the sake of argument, assume you have 4 sockets in this machine, each one being a six-core, then each MPI process will (probably) run on a separate socket, and each one can thread using OpenMP over the 6 cores on the socket.

So, if you only have a single machine, then it's a matter of finding the balance between memory (each MPI processes uses roughly the same amount of RAM as a serial process), sockets, and cores.

However, what we mean about "automatic" is the in most cases you never have to control the OpenMP threading using the MP environment variables; MKL is good at figuring it out the best way to run by itself. (An exception is if you use hyperthreading.)
Title: Re: MKL ?
Post by: esp on January 23, 2012, 21:54
Thank you.