Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Try to avoid rare bug on one ci node.
authorAugustin Degomme <adegomme@gmail.com>
Wed, 10 Jul 2019 12:59:57 +0000 (14:59 +0200)
committerAugustin Degomme <adegomme@gmail.com>
Wed, 10 Jul 2019 13:00:11 +0000 (15:00 +0200)
A guess is that the win_lock call by a process may be finishing the comms posted by the raccumulate call from the other process.
And this would mean having max(0,undefined) as a result if memory is not initialized before win_lock_all.
I didn't find anything saying lock_all should be blocking/collective, so I'm not modifying it for so little.
Other guess: something's rotten with locks, as I think we don't check properly for them before posting rma calls.

teshsuite/smpi/mpich3-test/rma/racc_local_comp.c

index a86c766..35c228a 100644 (file)
@@ -33,10 +33,9 @@ int main(int argc, char *argv[])
     MPI_Alloc_mem(MAX_SIZE * sizeof(int), MPI_INFO_NULL, &winbuf);
     MPI_Win_create(winbuf, MAX_SIZE * sizeof(int), sizeof(int), MPI_INFO_NULL,
                    MPI_COMM_WORLD, &window);
     MPI_Alloc_mem(MAX_SIZE * sizeof(int), MPI_INFO_NULL, &winbuf);
     MPI_Win_create(winbuf, MAX_SIZE * sizeof(int), sizeof(int), MPI_INFO_NULL,
                    MPI_COMM_WORLD, &window);
-
-    MPI_Win_lock_all(0, window);
     buf[0] = 0;
     winbuf[0]=0;
     buf[0] = 0;
     winbuf[0]=0;
+    MPI_Win_lock_all(0, window);
     /* Test Raccumulate local completion with small data.
      * Small data is always copied to header packet as immediate data. */
     if (rank == 1) {
     /* Test Raccumulate local completion with small data.
      * Small data is always copied to header packet as immediate data. */
     if (rank == 1) {