From b398eae7f96596e61b812e7809ec5d3f1afd9291 Mon Sep 17 00:00:00 2001 From: Alexis Montoison <35051714+amontoison@users.noreply.github.com> Date: Wed, 9 Apr 2025 03:32:45 -0500 Subject: [PATCH 01/10] [CI] Test Nvidia compilers --- .github/workflows/meson.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/meson.yml b/.github/workflows/meson.yml index 23e1f1f7..b7fa6a72 100644 --- a/.github/workflows/meson.yml +++ b/.github/workflows/meson.yml @@ -39,11 +39,11 @@ jobs: arch: 'arm64' metis: 64 allow_failure: true - # - os: ubuntu-latest - # compiler: nvidia-hpc - # compiler_version: '25.1' - # metis: 32 - # allow_failure: true + - os: ubuntu-latest + compiler: nvidia-hpc + compiler_version: '25.3' + metis: 32 + allow_failure: true runs-on: ${{ matrix.os }} steps: - name: Check out SPRAL From 9a64c5b4a3ac0363bbf6394a53c31f7cd00428c3 Mon Sep 17 00:00:00 2001 From: Alexis Montoison <35051714+amontoison@users.noreply.github.com> Date: Wed, 9 Apr 2025 03:54:02 -0500 Subject: [PATCH 02/10] Update ldlt_app.cxx --- src/ssids/cpu/kernels/ldlt_app.cxx | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/ssids/cpu/kernels/ldlt_app.cxx b/src/ssids/cpu/kernels/ldlt_app.cxx index aa419436..cb3af2e6 100644 --- a/src/ssids/cpu/kernels/ldlt_app.cxx +++ b/src/ssids/cpu/kernels/ldlt_app.cxx @@ -1457,8 +1457,7 @@ class LDLT { for (int iblk = jblk; iblk < mblk; iblk++) { // Calculate block index we depend on for i // (we only work with lower half of matrix) - int adep_idx = (blk < iblk) ? blk*block_size*lda + iblk*block_size - : iblk*block_size*lda + blk*block_size; + int adep_idx = (blk < iblk) ? blk*block_size*lda + iblk*block_size : iblk*block_size*lda + blk*block_size; #pragma omp task \ firstprivate(blk, iblk, jblk) \ shared(a, abort, cdata, backup, work) \ From b2a836217ad53a26af7a7b40e8a8696c7817ca18 Mon Sep 17 00:00:00 2001 From: Alexis Montoison <35051714+amontoison@users.noreply.github.com> Date: Wed, 9 Apr 2025 03:59:52 -0500 Subject: [PATCH 03/10] Update src/ssids/cpu/kernels/ldlt_app.cxx --- src/ssids/cpu/kernels/ldlt_app.cxx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ssids/cpu/kernels/ldlt_app.cxx b/src/ssids/cpu/kernels/ldlt_app.cxx index cb3af2e6..1fdf9a9e 100644 --- a/src/ssids/cpu/kernels/ldlt_app.cxx +++ b/src/ssids/cpu/kernels/ldlt_app.cxx @@ -1457,7 +1457,7 @@ class LDLT { for (int iblk = jblk; iblk < mblk; iblk++) { // Calculate block index we depend on for i // (we only work with lower half of matrix) - int adep_idx = (blk < iblk) ? blk*block_size*lda + iblk*block_size : iblk*block_size*lda + blk*block_size; + // int adep_idx = (blk < iblk) ? blk*block_size*lda + iblk*block_size : iblk*block_size*lda + blk*block_size; #pragma omp task \ firstprivate(blk, iblk, jblk) \ shared(a, abort, cdata, backup, work) \ From 80512970f16bfeede2f923dd55c3c322353e8b9a Mon Sep 17 00:00:00 2001 From: Alexis Montoison <35051714+amontoison@users.noreply.github.com> Date: Wed, 9 Apr 2025 04:02:13 -0500 Subject: [PATCH 04/10] Update src/ssids/cpu/kernels/ldlt_app.cxx --- src/ssids/cpu/kernels/ldlt_app.cxx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ssids/cpu/kernels/ldlt_app.cxx b/src/ssids/cpu/kernels/ldlt_app.cxx index 1fdf9a9e..b4d766cc 100644 --- a/src/ssids/cpu/kernels/ldlt_app.cxx +++ b/src/ssids/cpu/kernels/ldlt_app.cxx @@ -1457,7 +1457,7 @@ class LDLT { for (int iblk = jblk; iblk < mblk; iblk++) { // Calculate block index we depend on for i // (we only work with lower half of matrix) - // int adep_idx = (blk < iblk) ? blk*block_size*lda + iblk*block_size : iblk*block_size*lda + blk*block_size; + int adep_idx = (blk < iblk) ? (blk*block_size*lda + iblk*block_size) : (iblk*block_size*lda + blk*block_size); #pragma omp task \ firstprivate(blk, iblk, jblk) \ shared(a, abort, cdata, backup, work) \ From 8e342ed9f6d9ef81f074da50761675129e361416 Mon Sep 17 00:00:00 2001 From: Alexis Montoison <35051714+amontoison@users.noreply.github.com> Date: Wed, 9 Apr 2025 11:39:03 -0500 Subject: [PATCH 05/10] Update src/ssids/cpu/kernels/ldlt_app.cxx --- src/ssids/cpu/kernels/ldlt_app.cxx | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/ssids/cpu/kernels/ldlt_app.cxx b/src/ssids/cpu/kernels/ldlt_app.cxx index b4d766cc..9f5a14a0 100644 --- a/src/ssids/cpu/kernels/ldlt_app.cxx +++ b/src/ssids/cpu/kernels/ldlt_app.cxx @@ -1457,7 +1457,13 @@ class LDLT { for (int iblk = jblk; iblk < mblk; iblk++) { // Calculate block index we depend on for i // (we only work with lower half of matrix) - int adep_idx = (blk < iblk) ? (blk*block_size*lda + iblk*block_size) : (iblk*block_size*lda + blk*block_size); + int adep_idx; +if (blk < iblk) { + adep_idx = blk * block_size * lda + iblk * block_size; +} else { + adep_idx = iblk * block_size * lda + blk * block_size; +} + #pragma omp task \ firstprivate(blk, iblk, jblk) \ shared(a, abort, cdata, backup, work) \ From 7c742deb60eaceac22f22f8ef8aa51f6988fa670 Mon Sep 17 00:00:00 2001 From: Alexis Montoison <35051714+amontoison@users.noreply.github.com> Date: Wed, 9 Apr 2025 18:11:29 -0500 Subject: [PATCH 06/10] Update src/ssids/cpu/kernels/ldlt_app.cxx --- src/ssids/cpu/kernels/ldlt_app.cxx | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/ssids/cpu/kernels/ldlt_app.cxx b/src/ssids/cpu/kernels/ldlt_app.cxx index 9f5a14a0..e9944541 100644 --- a/src/ssids/cpu/kernels/ldlt_app.cxx +++ b/src/ssids/cpu/kernels/ldlt_app.cxx @@ -1458,11 +1458,11 @@ class LDLT { // Calculate block index we depend on for i // (we only work with lower half of matrix) int adep_idx; -if (blk < iblk) { - adep_idx = blk * block_size * lda + iblk * block_size; -} else { - adep_idx = iblk * block_size * lda + blk * block_size; -} + if (blk < iblk) { + adep_idx = blk * block_size * lda + iblk * block_size; + } else { + adep_idx = iblk * block_size * lda + blk * block_size; + } #pragma omp task \ firstprivate(blk, iblk, jblk) \ From 247813d35bb0b2357d98c87120983e4fb7223b98 Mon Sep 17 00:00:00 2001 From: Alexis Montoison Date: Wed, 9 Apr 2025 18:32:55 -0500 Subject: [PATCH 07/10] Help the compiler... --- src/ssids/cpu/kernels/ldlt_app.cxx | 64 ++++++++++++++++++++++-------- 1 file changed, 48 insertions(+), 16 deletions(-) diff --git a/src/ssids/cpu/kernels/ldlt_app.cxx b/src/ssids/cpu/kernels/ldlt_app.cxx index e9944541..6c92efbd 100644 --- a/src/ssids/cpu/kernels/ldlt_app.cxx +++ b/src/ssids/cpu/kernels/ldlt_app.cxx @@ -1316,7 +1316,9 @@ class LDLT { #ifdef PROFILE Profile::Task task("TA_LDLT_DIAG"); #endif - if (debug) printf("Factor(%d)\n", blk); + if (debug) { + printf("Factor(%d)\n", blk); + } BlockSpec dblk(blk, blk, m, n, cdata, a, lda, block_size); // Store a copy for recovery in case of a failed column dblk.backup(backup); @@ -1379,7 +1381,9 @@ class LDLT { #ifdef PROFILE Profile::Task task("TA_LDLT_APPLY"); #endif - if (debug) printf("ApplyT(%d,%d)\n", blk, jblk); + if (debug) { + printf("ApplyT(%d,%d)\n", blk, jblk); + } BlockSpec dblk(blk, blk, m, n, cdata, a, lda, block_size); BlockSpec cblk(blk, jblk, m, n, cdata, a, lda, block_size); // Apply row permutation from factorization of dblk and in @@ -1412,7 +1416,9 @@ class LDLT { #ifdef PROFILE Profile::Task task("TA_LDLT_APPLY"); #endif - if (debug) printf("ApplyN(%d,%d)\n", iblk, blk); + if (debug) { + printf("ApplyN(%d,%d)\n", iblk, blk); + } BlockSpec dblk(blk, blk, m, n, cdata, a, lda, block_size); BlockSpec rblk(iblk, blk, m, n, cdata, a, lda, block_size); // Apply column permutation from factorization of dblk and in @@ -1611,7 +1617,9 @@ class LDLT { // Factor diagonal: depend on perm[blk*block_size] as we init npass { - if(debug) printf("Factor(%d)\n", blk); + if (debug) { + printf("Factor(%d)\n", blk); + } BlockSpec dblk(blk, blk, m, n, cdata, a, lda, block_size); // Store a copy for recovery in case of a failed column dblk.backup(backup); @@ -1626,7 +1634,9 @@ class LDLT { // Loop over off-diagonal blocks applying pivot for(int jblk=0; jblk Date: Wed, 9 Apr 2025 18:43:16 -0500 Subject: [PATCH 08/10] Don't test with nvfortran --- .github/workflows/meson.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/meson.yml b/.github/workflows/meson.yml index b7fa6a72..59fe47c4 100644 --- a/.github/workflows/meson.yml +++ b/.github/workflows/meson.yml @@ -39,11 +39,11 @@ jobs: arch: 'arm64' metis: 64 allow_failure: true - - os: ubuntu-latest - compiler: nvidia-hpc - compiler_version: '25.3' - metis: 32 - allow_failure: true + # - os: ubuntu-latest + # compiler: nvidia-hpc + # compiler_version: '25.3' + # metis: 32 + # allow_failure: true runs-on: ${{ matrix.os }} steps: - name: Check out SPRAL From e5dc2bc0811bd90244a37d291d8742fcba18a957 Mon Sep 17 00:00:00 2001 From: Alexis Montoison Date: Thu, 7 Aug 2025 10:56:05 -0500 Subject: [PATCH 09/10] Try nvc++ 25.7 --- .github/workflows/meson.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/meson.yml b/.github/workflows/meson.yml index 59fe47c4..de8c5acb 100644 --- a/.github/workflows/meson.yml +++ b/.github/workflows/meson.yml @@ -39,11 +39,11 @@ jobs: arch: 'arm64' metis: 64 allow_failure: true - # - os: ubuntu-latest - # compiler: nvidia-hpc - # compiler_version: '25.3' - # metis: 32 - # allow_failure: true + - os: ubuntu-latest + compiler: nvidia-hpc + compiler_version: '25.7' + metis: 32 + allow_failure: true runs-on: ${{ matrix.os }} steps: - name: Check out SPRAL From bb6d11de9bbd6dee5485ea644a62be4736bc0696 Mon Sep 17 00:00:00 2001 From: Alexis Montoison Date: Fri, 8 Aug 2025 10:48:53 -0500 Subject: [PATCH 10/10] Update meson.yml --- .github/workflows/meson.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/meson.yml b/.github/workflows/meson.yml index de8c5acb..b66667e3 100644 --- a/.github/workflows/meson.yml +++ b/.github/workflows/meson.yml @@ -141,6 +141,7 @@ jobs: METIS64="false" LIBBLAS="blas32" LIBLAPACK="lapack32" + OPENMP="true" CSTD="c99" CPPSTD="c++11" LD_CLASSIC="" @@ -162,6 +163,7 @@ jobs: LIBLAPACK="mkl_rt" fi if [[ "${{matrix.compiler}}" == "nvidia-hpc" ]]; then + OPENMP="false" CSTD="none" CPPSTD="none" fi @@ -183,7 +185,8 @@ jobs: -Dc_std=$CSTD \ -Dcpp_std=$CPPSTD \ -Dfortran_link_args=${LD_CLASSIC} \ - -Dcpp_link_args=${LD_CLASSIC} + -Dcpp_link_args=${LD_CLASSIC} \ + -Dopenmp=${OPENMP} - name: Build SPRAL shell: bash