Freeing Communicators


A mistake related to MPI_Comm_free() is freeing them in different orders on the involved processes. The MPI standard specifies that MPI_Comm_free() must be entered by the processes in the communicator collectively. Some MPIs including Intel® MPI Library deadlock if this rule is broken, whereas others implement MPI_Comm_free() as a local call with no communication.

To ensure that this error is detected all the time, Intel® Trace Collector treats MPI_Comm_free() just like the other collective operations. There is no special error message for GLOBAL:COLLECTIVE:COMM_FREE_MISMATCH, it will be reported as a mismatch between collective calls (GLOBAL:COLLECTIVE:OPERATION_MISMATCH) or a deadlock, so GLOBAL:COLLECTIVE:COMM_FREE_MISMATCH just refers to the check which enables or disables this test, not a specific error instance.

Einzelheiten zur Compiler-Optimierung finden Sie in unserem Optimierungshinweis.