No Description

Christoph Stelz 667724addb Remove all flushes 4 months ago
include eb496006f8 Simplify API, only consider order of ranks. No global indices. 4 months ago
src 667724addb Remove all flushes 4 months ago
CMakeLists.txt d2bbc03a8c Switch to fork of backwardcpp with fixed line format 5 months ago d37a3ed49b Add environment variables to example 5 months ago


Allows to compare values between two running process to track divergence. One process serves as reference (root), the other (client) sends its values over a named pipe.

See ipc_debug.h for available sub routines.

Test program that compares ASCII characters distributed over MPI cluster:

terminalA $ mkfifo /tmp/pipe
terminalA $ IPC_DEBUG_ROOT=1 IPC_DEBUG_FILE=/tmp/pipe mpirun -np 3 --use-hwthread-cpus build/mpi_test 123123
terminalB $ IPC_DEBUG_FILE=/tmp/pipe mpirun -np 2 --use-hwthread-cpus build/mpi_test 123125
[IPCDBG] Assertion failed in vector  at index 5. Root has 51 but client has 52
#5    Source "/home/christoph/Studium/HiWi2/ipc-debug/src/mpi_test.cpp", line 63, in main
         60:     debug_ipc_mpi_set_data_distribution(start_index, characters_per_rank);
         62:     // Make actual assertion
      >  63:     debug_ipc_assert_equal_mpi_double_array(, characters_per_rank);
         65:     MPI_Barrier(MPI_COMM_WORLD);
         66:     MPI_Finalize();