IPM Hompepage
Overview | Profiling vs. Tracing | Installation | Using IPM | Implementation | References
 


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;


Last changed: Fri, 04 Sep 2009 17:28:45 +0000 on shell-21011 by fuerling
Website maintained by: The IPM developers. To get help send email to: