16GB Ram total / 32 node cards = 500MB/node card
If you use the command "topology" you will see which module and node card each CPU is attached to. Here is how the machine looks face on:
| module # CPU # |
2 8-15 |
4 40-47 |
6 24-31 |
8 56-63 |
| module # CPU # |
1 0-7 |
3 32-39 |
5 16-23 |
7 48-55 |
It is advantagous to run, when possible, with modules that are close to one another to decrease the distance that each node will talk over. For example if you wanted to use 16 processors you would NOT want to work on cpus 0-7 and 56-63 simultaneously since these are the most widely separated modules.
A problem that has arisen lately is one where a single cpu user
allocates a large chunk of memory on the same node card where other
user's multi-cpu job is running. This is bad for both parties since the
cpus compete for the memory on that node card. In order to prevent this
from happening, every user should run his or her
jobs, both serial and parallel, on specific processors.
The following sections describe how to allocate specific CPUs for your
jobs.
First of all, users who wish to use large numbers of CPUs should first decide on which CPUs to run their jobs. Use one of the tools to check how the operating system is being used (ascii tools: top and osview or opengl/x-windows tools: gmemusage, gr_osview, gr_top).
Then, you start your job with either dplace or sysmp. An example of running dplace is this:
dplace -place pfile -mustrun a.out < in > out
where "a.out" is your executable, "in" and "out" the input and output files, and the file "pfile" looks like this:
#physical placement_file for 4 specific memories and 8 threads
memories 4 in topology physical near \
/hw/module/2/slot/n1/node \
/hw/module/2/slot/n2/node \
/hw/module/2/slot/n3/node \
/hw/module/2/slot/n4/node
threads 8
distribute threads across memories
This would run a code on 8 processors with 4 memory nodes, assigning
them to module 2 (CPU 8-15).
Of course, you need to modify the file to meet your CPU needs.
runon n a.out < in > out
where n is the CPU on which the job will run. Please make sure, using the system tools, that the CPU you choose is not already taken by another serial or parallel job.