strumpack@3.1.1: add patch for Intel-19 build failure on cori (#11204)

Ref: https://github.com/spack/spack/issues/11202
This commit is contained in:
Satish Balay 2019-04-17 12:10:05 -05:00 committed by GitHub
parent 01ada1a3de
commit 4731041f88
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 48 additions and 0 deletions

View file

@ -0,0 +1,46 @@
commit 1b0c5884856709077d1130384ab0841f44f0f07b
Author: Pieter Ghysels <pghysels@lbl.gov>
Date: Mon Apr 8 11:09:37 2019 -0700
Fix for openmp collapse(2), the loop bounds should be constants,
cannot be functions.
This fixes a compilation issue with the Intel 19 compiler.
Thanks to Satish for reporting.
diff --git a/src/BLR/BLRMatrix.hpp b/src/BLR/BLRMatrix.hpp
index 75eb817..3b6b803 100644
--- a/src/BLR/BLRMatrix.hpp
+++ b/src/BLR/BLRMatrix.hpp
@@ -461,11 +461,13 @@ namespace strumpack {
DenseM_t dense() const {
DenseM_t A(rows(), cols());
+ auto cb = colblocks();
+ auto rb = rowblocks();
#if defined(STRUMPACK_USE_OPENMP_TASKLOOP)
#pragma omp taskloop collapse(2) default(shared)
#endif
- for (std::size_t j=0; j<colblocks(); j++)
- for (std::size_t i=0; i<rowblocks(); i++) {
+ for (std::size_t j=0; j<cb; j++)
+ for (std::size_t i=0; i<rb; i++) {
DenseMW_t Aij = tile(A, i, j);
tile(i, j).dense(Aij);
}
@@ -473,11 +475,13 @@ namespace strumpack {
}
void draw(std::ostream& of, std::size_t roff, std::size_t coff) const {
+ auto cb = colblocks();
+ auto rb = rowblocks();
#if defined(STRUMPACK_USE_OPENMP_TASKLOOP)
#pragma omp taskloop collapse(2) default(shared)
#endif
- for (std::size_t j=0; j<colblocks(); j++)
- for (std::size_t i=0; i<rowblocks(); i++) {
+ for (std::size_t j=0; j<cb; j++)
+ for (std::size_t i=0; i<rb; i++) {
tile(i, j).draw(of, roff+tileroff(i), coff+tilecoff(j));
}
}

View file

@ -60,6 +60,8 @@ class Strumpack(CMakePackage):
conflicts('+parmetis', when='~mpi') conflicts('+parmetis', when='~mpi')
patch('intel-19-compile.patch', when='@3.1.1')
def cmake_args(self): def cmake_args(self):
spec = self.spec spec = self.spec