Global Arrays Logo
Skip repetitive navigation links
 

The Global Arrays and ARMCI Support Page

The purpose of this page is to provide updated information on the operating system configurations/settings that are relevant for the Global Arrays and ARMCI users on different platforms.

If you have questions or need support/help/report-bug, contact the GA/ARMCI developers (hpctools AT pnl dot gov)


IBM BlueGene/L
gmake USE_INTEGER8=YES FC=blrts_xlf (enables 64-bit integer mode)
or
gmake (for plain 32 bit integer)

=============================================
# GA/ARMCI Env Settings
export BGLSYS_DRIVER=/bgl/BlueLight/ppcfloor
export BGLSYS_ROOT=${BGLSYS_DRIVER}/bglsys
export BLRTS_GNU_ROOT=${BGLSYS_DRIVER}/blrts-gnu
export BGDRIVER=${BGLSYS_DRIVER}
export BGCOMPILERS=${BLRTS_GNU_ROOT}/bin
export TARGET=BGL
export ARMCI_NETWORK=BGMLMPI
export USE_MPI=yes
export MPI_LIB=${BGLSYS_ROOT}/lib
export MPI_INCLUDE=${BGLSYS_ROOT}/include
export LIBMPI='-lfmpich_.rts -lmpich.rts -lmsglayer.rts -lrts.rts -ldevices.rts'

Cray XT3/XT4
Infiniband/OpenIB
Compiling GA/ARMCI with ARMCI_NETWORK=MPI-SPAWN

GM 2


Systems with QSnet interconnects
  1. Due to a bug in the Elan library (versions between and including 1.3 and 1.4.1), programs using this library can crash when transmiting 4-byte C Floats. Please contact Quadrics support for further information about this problem. Since ARMCI uses the Elan library on the QSnet interconnect, this bug can cause a problem if your system has version on. This problem does not occur with the 1.4.2 version.
  2. True64 (Compaq Alphaserver)

Linux

IBM SP SGI
In older versions of GA (<3.1) there is a possibility of conflict between the SGI implementation of MPI (but not others, MPICH for example) and ARMCI in their use of the SGI specific interprocessor communication facility called arena.The release 3.1 does not use arenas to avoid the problem.

If processors are oversubscribed (you are using more processes than processors), the SGI spin locks used for synchronization in GA are a very bad idea. In such a case Sys V semaphores work much better

SGI Altix
The default value of SMA_SYMMETRIC_SIZE is the total  machine  memory divided  by the number of processors on the system. If there is "shmalloc failed" error message when creating global array, increase the memory by setting the environment  variable SMA_SYMMETRIC_SIZE (in bytes) to the required amount not exceeding system limit. To know more about this variable.
    man shmalloc
    man intro_shmem

Sun
Solaris by default provides only 1MB limit for the largest shared memory segment. You need to increase  this value to do any useful work with GA. For example to make SHMMAX= 2GB, add either of the lines to /etc/system:
set shmsys:shminfo_shmmax=0x80000000 /* hexidecimal */
set shmsys:shminfo_shmmax=2147483648 /* decimal     */
After rebooting, you should be able to take advantage of the increased shared memory limits. For more info, please refer to the article in the SunWorld. Also see Note.

Compaq True64
Tru64 is another example of an OS with a pityfully small size of the shared memory limit. Here are instruction on how to modify shared memory max segment size to 256MB on  the Tru64 UNIX Version 4.0F:
1) create a file called /etc/sysconfig.shmmax
cat > /etc/sysconfig.shmmax << EOF
ipc:
shm-max = 268435456
EOF
You can check if the file created is OK by typing: /sbin/sysconfigdb -l -t /etc/sysconfig.shmmax
2) Modify kernel values: sysconfigdb -a -f /etc/sysconfig.shmmax ipc
3) Reboot
4) To check new values: /sbin/sysconfig -q ipc|egrep shm-max

More info is here.Also see Note.

HP-UX
In most HP-UX/11 installations, the defult limit  for the largest shared memory segment is 64MB. A system administrator should be able to easily increment this value to better suit the applications needs:
1) Start sam (HP System Administration Manager).
2) Go to Kernel Configuration, select Configurable Parameters. Click on the shmmax entry on the list.
3) From Actions menu select Modify Configurable Parameter. Click on the radio button Specify New Formula/Value and fill in a desired value for SHMMAX in the hexadecimal format e.g.,  0X8000000 (128MB).
4) Finally, select Process New Kernel from the Actions menu. It will apply the new value of SHHMAX into the kernel after rebooting the system.

The C compiler (commercial version) under HP-UX 10.2 performs incorrect address calculations for shared memory references. GNU gcc works fine. This problem manifests itself in global/testing/test.x failing. If it happens, GA has to recompiled with gcc.

Fujitsu VX/VPP
The code will not complile because of the missing header file. This file references MPlib library, a trade secret of Fujitsu. The GA/ARMCI binaries can be obtained from nobes@fecit.com.

Cray systems
  J90 and SV1 - MPI related issues:

FreeBSD
To increase the shared memory segments on FreeBSD the following two sysctl's should be added to the startup scripts (e.g. /etc/rc.local):
sysctl -w kern.ipc.shmmax=67108864
sysctl -w kern.ipc.shmall=16384
the first sysctl allocates 64Mbytes of memory, the second does the same thing in 4k pages (4k * 16384 = 64M), you must set both sysctl.



Note on SHMMAX: Setting very large values of SHMMAX is not recommended. In particular, it should not be bigger than the swap space or even the amount of physical memory in the system. For most applications, 128-256MB values should work fine.
Contact: Webmaster
Updated: March 2003