Source: armci-mpi Version: 0.3.1~beta-7 Severity: serious Tags: patch upstream fixed-upstream Forwarded: https://github.com/pmodels/armci-mpi/pull/47 Justification: Prevents mpich migration
Hello, The test_mpi_indexed_gets test is currently failing spuriously in debian unstable due to an uninitialized value, e.g. https://ci.debian.net/packages/a/armci-mpi/testing/amd64/44486187/ , preventing the newer mpich version from migrating to unstable. I have forwarded a fix to upstream https://github.com/pmodels/armci-mpi/pull/47 which is already merged. Unless somebody objects, I'll NMU it. Samuel -- System Information: Debian Release: trixie/sid APT prefers testing APT policy: (990, 'testing'), (500, 'unstable-debug'), (500, 'unreleased'), (500, 'testing-debug'), (500, 'stable-security'), (500, 'stable-debug'), (500, 'oldstable-proposed-updates-debug'), (500, 'oldstable-proposed-updates'), (500, 'oldoldstable'), (500, 'buildd-unstable'), (500, 'unstable'), (500, 'stable'), (500, 'oldstable'), (1, 'experimental-debug'), (1, 'buildd-experimental'), (1, 'experimental') Architecture: amd64 (x86_64) Foreign Architectures: i386, arm64 Kernel: Linux 6.8.0 (SMP w/8 CPU threads; PREEMPT) Kernel taint flags: TAINT_OOT_MODULE, TAINT_UNSIGNED_MODULE Locale: LANG=fr_FR.UTF-8, LC_CTYPE=fr_FR.UTF-8 (charmap=UTF-8), LANGUAGE not set Shell: /bin/sh linked to /usr/bin/dash Init: systemd (via /run/systemd/system) LSM: AppArmor: enabled
commit 80cc91748392aec9eced295eb531548a565dac0e Author: Samuel Thibault <samuel.thiba...@ens-lyon.org> Date: Sat Mar 30 16:35:11 2024 +0100 tests/mpi/test_mpi_indexed_gets.c: Fix reception buffer initialization loc_buf was completely uninitialized, while the second and third loop nests are checking that the values are 1.0 + rank. With luck it would be zero, and thus the actual - expected > 1e-10 check would pass (since the difference is then negative). With less luck the check would spuriously fail for the part that is not overwritten by the MPI_Get. Signed-off-by: Samuel Thibault <samuel.thiba...@ens-lyon.org> commit 9c0f6b08ba706a7c2f3e74d325cfd2a010300108 Author: Samuel Thibault <samuel.thiba...@ens-lyon.org> Date: Sat Mar 30 16:38:58 2024 +0100 tests/mpi: Fix comparison of floating-double types In case the actual value is zero and the expected value is positive, the check would spuriously succeed. Signed-off-by: Samuel Thibault <samuel.thiba...@ens-lyon.org> commit cd001a46801fed9f406ea57238a131b0a0e063fe Author: Samuel Thibault <samuel.thiba...@ens-lyon.org> Date: Sat Mar 30 16:41:58 2024 +0100 tests/mpi/test_mpi_indexed_gets.c: Strengthen test Now that it is fixed, we can make it actually perform strided accesses. Signed-off-by: Samuel Thibault <samuel.thiba...@ens-lyon.org> diff --git a/tests/mpi/test_mpi_indexed_gets.c b/tests/mpi/test_mpi_indexed_gets.c index dc1bd9d..3570492 100644 --- a/tests/mpi/test_mpi_indexed_gets.c +++ b/tests/mpi/test_mpi_indexed_gets.c @@ -44,8 +44,10 @@ int main(int argc, char **argv) { if (rank == 0) printf("MPI RMA Strided Get Test:\n"); - for (i = 0; i < XDIM*YDIM; i++) + for (i = 0; i < XDIM*YDIM; i++) { *(win_buf + i) = 1.0 + rank; + *(loc_buf + i) = 1.0 + rank; + } MPI_Win_create(win_buf, bufsize, 1, MPI_INFO_NULL, MPI_COMM_WORLD, &buf_win); diff --git a/tests/mpi/test_mpi_accs.c b/tests/mpi/test_mpi_accs.c index ee9b0a9..730a632 100644 --- a/tests/mpi/test_mpi_accs.c +++ b/tests/mpi/test_mpi_accs.c @@ -55,7 +55,7 @@ int main(int argc, char **argv) { for (j = 0; j < YDIM; j++) { const double actual = *(buffer + i + j*XDIM); const double expected = (1.0 + rank) + (1.0 + ((rank+nranks-1)%nranks)) * (ITERATIONS); - if (actual - expected > 1e-10) { + if (fabs(actual - expected) > 1e-10) { printf("%d: Data validation failed at [%d, %d] expected=%f actual=%f\n", rank, j, i, expected, actual); errors++; diff --git a/tests/mpi/test_mpi_indexed_accs.c b/tests/mpi/test_mpi_indexed_accs.c index 78c06bd..0fc3baa 100644 --- a/tests/mpi/test_mpi_indexed_accs.c +++ b/tests/mpi/test_mpi_indexed_accs.c @@ -97,7 +97,7 @@ int main(int argc, char **argv) { for (j = 0; j < SUB_YDIM; j++) { const double actual = *(win_buf + i + j*XDIM); const double expected = (1.0 + rank) + (1.0 + ((rank+nranks-1)%nranks)) * (ITERATIONS); - if (actual - expected > 1e-10) { + if (fabs(actual - expected) > 1e-10) { printf("%d: Data validation failed at [%d, %d] expected=%f actual=%f\n", rank, j, i, expected, actual); errors++; @@ -109,7 +109,7 @@ int main(int argc, char **argv) { for (j = 0; j < SUB_YDIM; j++) { const double actual = *(win_buf + i + j*XDIM); const double expected = 1.0 + rank; - if (actual - expected > 1e-10) { + if (fabs(actual - expected) > 1e-10) { printf("%d: Data validation failed at [%d, %d] expected=%f actual=%f\n", rank, j, i, expected, actual); errors++; @@ -121,7 +121,7 @@ int main(int argc, char **argv) { for (j = SUB_YDIM; j < YDIM; j++) { const double actual = *(win_buf + i + j*XDIM); const double expected = 1.0 + rank; - if (actual - expected > 1e-10) { + if (fabs(actual - expected) > 1e-10) { printf("%d: Data validation failed at [%d, %d] expected=%f actual=%f\n", rank, j, i, expected, actual); errors++; diff --git a/tests/mpi/test_mpi_indexed_gets.c b/tests/mpi/test_mpi_indexed_gets.c index 3570492..99ac294 100644 --- a/tests/mpi/test_mpi_indexed_gets.c +++ b/tests/mpi/test_mpi_indexed_gets.c @@ -90,7 +90,7 @@ int main(int argc, char **argv) { for (j = 0; j < SUB_YDIM; j++) { const double actual = *(loc_buf + i + j*XDIM); const double expected = (1.0 + peer); - if (actual - expected > 1e-10) { + if (fabs(actual - expected) > 1e-10) { printf("%d: Data validation failed at [%d, %d] expected=%f actual=%f\n", rank, j, i, expected, actual); errors++; @@ -102,7 +102,7 @@ int main(int argc, char **argv) { for (j = 0; j < SUB_YDIM; j++) { const double actual = *(loc_buf + i + j*XDIM); const double expected = 1.0 + rank; - if (actual - expected > 1e-10) { + if (fabs(actual - expected) > 1e-10) { printf("%d: Data validation failed at [%d, %d] expected=%f actual=%f\n", rank, j, i, expected, actual); errors++; @@ -114,7 +114,7 @@ int main(int argc, char **argv) { for (j = SUB_YDIM; j < YDIM; j++) { const double actual = *(loc_buf + i + j*XDIM); const double expected = 1.0 + rank; - if (actual - expected > 1e-10) { + if (fabs(actual - expected) > 1e-10) { printf("%d: Data validation failed at [%d, %d] expected=%f actual=%f\n", rank, j, i, expected, actual); errors++; diff --git a/tests/mpi/test_mpi_indexed_puts_gets.c b/tests/mpi/test_mpi_indexed_puts_gets.c index d14988c..ea791dd 100644 --- a/tests/mpi/test_mpi_indexed_puts_gets.c +++ b/tests/mpi/test_mpi_indexed_puts_gets.c @@ -92,7 +92,7 @@ int main(int argc, char **argv) { for (j = 0; j < SUB_YDIM; j++) { const double actual = *(win_buf + i + j*XDIM); const double expected = (1.0 + ((rank+nranks-1)%nranks)); - if (actual - expected > 1e-10) { + if (fabs(actual - expected) > 1e-10) { printf("%d: Data validation failed at [%d, %d] expected=%f actual=%f\n", rank, j, i, expected, actual); errors++; @@ -104,7 +104,7 @@ int main(int argc, char **argv) { for (j = 0; j < SUB_YDIM; j++) { const double actual = *(win_buf + i + j*XDIM); const double expected = 1.0 + rank; - if (actual - expected > 1e-10) { + if (fabs(actual - expected) > 1e-10) { printf("%d: Data validation failed at [%d, %d] expected=%f actual=%f\n", rank, j, i, expected, actual); errors++; @@ -116,7 +116,7 @@ int main(int argc, char **argv) { for (j = SUB_YDIM; j < YDIM; j++) { const double actual = *(win_buf + i + j*XDIM); const double expected = 1.0 + rank; - if (actual - expected > 1e-10) { + if (fabs(actual - expected) > 1e-10) { printf("%d: Data validation failed at [%d, %d] expected=%f actual=%f\n", rank, j, i, expected, actual); errors++; diff --git a/tests/mpi/test_mpi_subarray_accs.c b/tests/mpi/test_mpi_subarray_accs.c index 0eb5397..ddc4b4f 100644 --- a/tests/mpi/test_mpi_subarray_accs.c +++ b/tests/mpi/test_mpi_subarray_accs.c @@ -90,7 +90,7 @@ int main(int argc, char **argv) { for (j = 0; j < SUB_YDIM; j++) { const double actual = *(win_buf + i + j*XDIM); const double expected = (1.0 + rank) + (1.0 + ((rank+nranks-1)%nranks)) * (ITERATIONS); - if (actual - expected > 1e-10) { + if (fabs(actual - expected) > 1e-10) { printf("%d: Data validation failed at [%d, %d] expected=%f actual=%f\n", rank, j, i, expected, actual); errors++; @@ -102,7 +102,7 @@ int main(int argc, char **argv) { for (j = 0; j < SUB_YDIM; j++) { const double actual = *(win_buf + i + j*XDIM); const double expected = 1.0 + rank; - if (actual - expected > 1e-10) { + if (fabs(actual - expected) > 1e-10) { printf("%d: Data validation failed at [%d, %d] expected=%f actual=%f\n", rank, j, i, expected, actual); errors++; @@ -114,7 +114,7 @@ int main(int argc, char **argv) { for (j = SUB_YDIM; j < YDIM; j++) { const double actual = *(win_buf + i + j*XDIM); const double expected = 1.0 + rank; - if (actual - expected > 1e-10) { + if (fabs(actual - expected) > 1e-10) { printf("%d: Data validation failed at [%d, %d] expected=%f actual=%f\n", rank, j, i, expected, actual); errors++; diff --git a/tests/mpi/test_mpi_indexed_gets.c b/tests/mpi/test_mpi_indexed_gets.c index 99ac294..19c6158 100644 --- a/tests/mpi/test_mpi_indexed_gets.c +++ b/tests/mpi/test_mpi_indexed_gets.c @@ -19,7 +19,7 @@ #define XDIM 8 #define YDIM 1024 -#define SUB_XDIM 8 +#define SUB_XDIM 4 #define SUB_YDIM 256 int main(int argc, char **argv) {