Christoph Stelz a3b6495e44 WIP | 3 months ago | |
---|---|---|
include | 3 months ago | |
src | 3 months ago | |
CMakeLists.txt | 4 months ago | |
README.md | 4 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);
61:
62: // Make actual assertion
> 63: debug_ipc_assert_equal_mpi_double_array(arr.data(), characters_per_rank);
64:
65: MPI_Barrier(MPI_COMM_WORLD);
66: MPI_Finalize();