|
Log File Format
The IPM log files are written in an ASCII format that roughly follows
XML. The goal is to make a concise format that is easily parsed.
Log file examples:
Hashing Strategy
IPM uses a fixed size hash to store event information. The hashing
strategy aims at making inserts with very low overhead (in terms of
CPU time). Double open-address hashing is currently used. For each
event the region, call, rank, and buffer size are stroed in a 64bit
integer key. The hash maps this key in a roughly deterministic and
roughly uniform way to a number between 0 and MAXSIZE_HASH-1, where
MAXSIZE_HASH is a prime number. The default size is 32573. In practice
fewer than the maximum number of entries should be stored in the hash
since the number of collisions increases as the hash becomes full.
For example the event -> key -> hkey mapping for MPI events is as
follows:
A key (64 bit int) is generated from the description of the event:
#define IPM_MPI_HASH_KEY(key,region,call,rank,size) { \
key = region; key = key << 8; \
key |= call; key = key << 16; \
key |= rank; key = key << 32; \
key |= size; \
}
A hash table index, hkey, is computed from the key
hkey = (key%MAXSIZE_HASH+collisions*(1+key%(MAXSIZE_HASH-2)))%MAXSIZE_HASH
Which has been benchmarked as performing well (low overhead).
typedef struct ipm_hash_ent {
IPM_KEY_TYPE key;
IPM_COUNT_TYPE count;
double t_tot, t_min, t_max;
} ipm_hash_ent;
|