Jump to content
Sign in to follow this  
yao

How do I force AcuSolve processes to run on a single core from each socket of a multi-core/multi-CPU machine?

Recommended Posts

The binding of processes to compute cores is not handled by AcuSolve itself. However, when using HP-MPI as the message passing interface, it is possible to control how the processes are distributed on each host. Consider an example involving 2 compute nodes having dual socket motherboards, and quad core processors in each socket (total of 8 cores per node). A typical core map is shown below, illustrating the socket ID and processor rank of each core:

 

Socket Id             CPU Rank
0                          0,2,4,6
1                          1,3,5,7

With this in mind, the following environment variable can be used to force HP-MPI to fill the cores by rank id:

setenv MPIRUN_OPTIONS="-cpu_bind=v,rank"

When this is set, the first process on the host will be assigned to socket 0 (filling the core with rank 0), the second process to socket 1 (filling the core with rank 1), and so on. The appropriate acuRun command to place 1 process on each socket of a dual socket quad core system would simply be:

acuRun -np 4 -hosts host1,host2

 

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
You are posting as a guest. If you have an account, please sign in.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

×
×
  • Create New...