- Ninja (Noise INJection Agent) is a tool for reproducing subtle and unintended mesage races
$ autogen.py
$ configure --prefix=<path to installation directory>
$ LD_PRELOAD=<path to installation directory>/lib/libninja.so srun -n <# procs> ./a.out
NIN_PATTERN:0: Network noise free1: Random network noiseNIN_RAND_RATIO: NIN_RAND_RATIO % of MPI sends are delayedNIN_RAND_DELAY: Selected messages are delayed by usleep(NIN_RAND_DELAY)
2: Smart network noise injectionNIN_MODEL_MODE0: Passive mode1: Active mode
NIN_DIR: Directory for send pattern learning files
NIN_LOCAL_NOISE:0: Local noise free1: Constant local noiseNIN_LOCAL_NOISE_AMOUNT: Run CPU intensive work for <NIN_LOCAL_NOISE_AMOUN> usec after send/recv/matching function
Kento Sato, Dong H. Ahn, Ignacio Laguna, Gregory L. Lee, Martin Schulz and Christopher M. Chambreau, “Noise Injection Techniques for Reproducing Subtle and Unintended Message Races”, Proceedings of the 20th ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming (PPoPP17), Austin, USA, Feb, 2017.