main

::ENVIRONMENT VARIABLE OPTIONS

There are some lesser used options available to MPICH which can be used to fine tune the performance to a specific machine.

MPICH.NT has the following environment variables used to set runtime options:

MPICH_NETMASK

Set this variable to the subnet ip address and mask you want to use to select the appropriate network adaptor on multi-nic hosts. The form is: IP/Mask, eg 192.0.0.0/8. The subnet ip address is the partial ip address specifying which bits represent the subnet part of an ip address. The mask part represents which bits are signifigant to determine the subnet. For example, 20 = 255.255.240.0

MPICH_USE_POLLING

Set this variable to 1 to enable polling. The default is to use event objects to wait on. Polling has lower latency but burns the CPU and can decrease performance in certain situations.

MPICH_SINGLETHREAD

Set this variable to 1 to cause the shared memory and via devices to be single threaded. Single threaded devices have much lower latency but they obey different progress rules than the multithreaded versions. They only make progress on messge passing when MPI calls are made. The multi-threaded devices make progress on messages asynchronously when the message arives.

MPICH_SHMQSIZE

This value is the size, in bytes, of the shared memory queue for each process. The default value is 1MB.

MPICH_MAXSHMMSG

This value is the largest message, measured in bytes, that can be put in the shared memory queue. This value must be less than or equal to MPICH_SHMQSIZE. Messages larger than this value are copied directly from the address space of the sender to the receiver. The default value is 15k.

MPICH_LONGVLONGTHRESH

This value is the message size, in bytes, when the message sending protocol changes from eager to rendezvous. The default value is 20k.

MPICH_NUMCOMMPORTS

This value is the number of completion port threads that will be launched by each process to handle all socket communication. The default is 2.

MPICH_VI_USE_POLLING

Set this variable to 1 to enable polling in the VIA device. The default is to use the wait interface. Polling has lower latency but burns the CPU and can decrease performance in certain situations.

Examples:

High performance ping pong shared memory test:

mpirun -localonly 2 -env "MPICH_USE_POLLING=1|MPICH_SINGLETHREAD=1" netpipe.exe

High performance ping pong via test

mpirun -np 2 -env "MPICH_USE_POLLING=1|MPICH_SINGLETHREAD=1|MPICH_VI_CLIQUES=*" netpipe.exe

main