Back to the top page

bginfo : BG/L library to retrieve runtime information

bginfo is a LGPL licensed library that provides you information such as version, setting or configuration corresponding to BG/L, which are detected (mostly) at runtime. Take a look at some sample outputs from bginfo.

This is very helpful when you want to keep your computational results with the current machine setting so that you can find the performance differences between each driver. Runtime status such as running mode(virtual or co-processor), number of CNs, number of IONs or version of installed software can be a factor that influences performance of your program. It's always a good idea to record the BG/L runtime information with each result so that you can compare the status between each experiment.

bginfo also provides the map of IO node and compute nodes. This mapping capablity give you an answer to your question like "what is the rank N's ION?", "which CNs are belonging to this ION?", "which CN is belonging to which ION?", etc. etc. With the CN-ION mapping capability, you can I/O benchmark against a specific set of IONs, instead of splitting by rank.

The source code is avalable from here. See also references (doxygen output). To understand this library, bginfo_print_info() in bginfo.c is a good start.

The current version of bginfo provides :

Sample program and output

Here is the most shortest sample code of bginfo library. A function bginfo_print_info_full() prints most of BG/information with commented key=value style. Alternatively, you can use bginfo_print_info() if you don't need full information.

sample program: bginfo-sample.c

#include <stdio.h>
#include "mpi.h"
#include "bginfo.h"

int main(int argc, char* argv[])          
{
  MPI_Init(&argc, &argv);

  bginfo_print_info_full();

  MPI_Finalize();
  return 0;
}

compile and submit

$ mpicc -Wall -o bginfo-sample bginfo-sample.c libbginfo.a
$ cqsub -t 10 -n 64 -m vn -e BGLMPI_MAPPING=TXYZ ./bginfo-sample

Here is sample output from the above code.

Full output from bginfo_print_info_full()

#
# [BG/L Information - full ]
#
# CURRENT_TIME_UTC="Mon Jan 30 21:47:20 2006"
# BGINFO_VERSION=0.6
# ZEPTO_VERSION=1.4
# ION_LINUX_VERSION="Linux version 2.6.5-ZeptoOS-1.4 (geeko@buildhost) (gcc version 3.3.4) #1 Mon Jan 30 15:04:37 CST 2006"
# DRIVER_VERSION=V1R2M1_020_2006-060110
# PERSONALITY_VERSION=11
#
# N_CNS=128
# MODE=virtual
# BGLMPI_MAPPING=TXYZ
# MEMORY_PER_CN=268435456
# TORUS_EXISTS_IN_XYZ=(0,0,0)
# TORUS_SIZE_XYZ=(8,4,2)
# USE_GLOBAL_INTS=0
# PSET_SIZE_XYZ=(4,4,2)
# N_CNS_IN_PSET=32
# N_PSET=2
#
# BLOCK_ID="R000_J102-64"
# N_IONS=2
# MTU=8000
# MEMORY_PER_ION=536870912
# CN_ION_RATIO=64
# UNEVEN_CI_RATIO=0
#
#
# ION_0_IP=172.30.1.47
# ION_1_IP=172.30.1.23
#
# ION_0_N_CNS=64
# ION_0_CNS_LIST="8 9 10 11 12 13 14 15 24 25 26 27 28 29 30 31 40 41 42 43 44 45 46 47 56 57 58 59 60 61 62 63 72 73 74 75 76 77 78 79 88 89 90 91 92 93 94 95 104 105 106 107 108 109 110 111 120 121 122 123 124 125 126 127 "
# ION_1_N_CNS=64
# ION_1_CNS_LIST="0 1 2 3 4 5 6 7 16 17 18 19 20 21 22 23 32 33 34 35 36 37 38 39 48 49 50 51 52 53 54 55 64 65 66 67 68 69 70 71 80 81 82 83 84 85 86 87 96 97 98 99 100 101 102 103 112 113 114 115 116 117 118 119 "
#

If you want to display a shorter version of information, use bginfo_print_info() instead of bginfo_print_info_full(). The result would like below. In most cases, information from bginfo_print_info() may be sufficient.

Basic output from bginfo_print_info()


#
# [BG/L Information - basic ]
#
# CURRENT_TIME_UTC="Mon Jan 30 21:47:20 2006"
# BGINFO_VERSION=0.6
# ZEPTO_VERSION=1.4
# DRIVER_VERSION=V1R2M1_020_2006-060110
#
# N_CNS=128
# MODE=virtual
# BGLMPI_MAPPING=TXYZ
# MEMORY_PER_CN=268435456
#
# BLOCK_ID="R000_J102-64"
# N_IONS=2
# MTU=8000
# MEMORY_PER_ION=536870912
# CN_ION_RATIO=64
# UNEVEN_CI_RATIO=0
#


Kazutomo Yoshii kazutomo@mcs.anl.gov
Last modified: Wed Feb 1 16:08:49 CST 2006