summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDan FitzGerald <38731008+basicmanfitz@users.noreply.github.com>2018-05-21 17:00:10 -0400
committerAdam J. Stewart <ajstewart426@gmail.com>2018-05-21 16:00:10 -0500
commit8564be5479fade304379f6461ece03b8740230b4 (patch)
tree30c1ff9d53eb8161ff0d0ca64d68bb2ce9d52270
parentfba365dc6abf8f2ccbc535f8ab81abeaa7e8add4 (diff)
downloadspack-8564be5479fade304379f6461ece03b8740230b4.tar.gz
spack-8564be5479fade304379f6461ece03b8740230b4.tar.bz2
spack-8564be5479fade304379f6461ece03b8740230b4.tar.xz
spack-8564be5479fade304379f6461ece03b8740230b4.zip
Rename Tpetra C wrappers for *gemm Fortran functions in Trilinos 12.12.1 (#8228)
* Updated trilinos to compile/install with xl_r * Undo PGI patch added as part of Trilinos XL fix * Remove PGI related changes in Trilinos XL fix
-rw-r--r--var/spack/repos/builtin/packages/trilinos/package.py6
-rw-r--r--var/spack/repos/builtin/packages/trilinos/xlf_tpetra.patch289
2 files changed, 293 insertions, 2 deletions
diff --git a/var/spack/repos/builtin/packages/trilinos/package.py b/var/spack/repos/builtin/packages/trilinos/package.py
index 7b36aa19ab..21cae3a7a9 100644
--- a/var/spack/repos/builtin/packages/trilinos/package.py
+++ b/var/spack/repos/builtin/packages/trilinos/package.py
@@ -251,8 +251,10 @@ class Trilinos(CMakePackage):
depends_on('swig', when='+python')
patch('umfpack_from_suitesparse.patch', when='@11.14.1:12.8.1')
- patch('xlf_seacas.patch', when='@12.10.1%xl')
- patch('xlf_seacas.patch', when='@12.10.1%xl_r')
+ patch('xlf_seacas.patch', when='@12.10.1:%xl')
+ patch('xlf_seacas.patch', when='@12.10.1:%xl_r')
+ patch('xlf_tpetra.patch', when='@12.12.1:%xl')
+ patch('xlf_tpetra.patch', when='@12.12.1:%xl_r')
def url_for_version(self, version):
url = "https://github.com/trilinos/Trilinos/archive/trilinos-release-{0}.tar.gz"
diff --git a/var/spack/repos/builtin/packages/trilinos/xlf_tpetra.patch b/var/spack/repos/builtin/packages/trilinos/xlf_tpetra.patch
new file mode 100644
index 0000000000..364bd28cb0
--- /dev/null
+++ b/var/spack/repos/builtin/packages/trilinos/xlf_tpetra.patch
@@ -0,0 +1,289 @@
+--- a/packages/tpetra/core/src/Tpetra_Details_libGemm.cpp
++++ b/packages/tpetra/core/src/Tpetra_Details_libGemm.cpp
+@@ -108,19 +108,19 @@
+ namespace Impl {
+
+ void
+-cgemm (const char transA,
+- const char transB,
+- const int m,
+- const int n,
+- const int k,
+- const ::Kokkos::complex<float>& alpha,
+- const ::Kokkos::complex<float> A[],
+- const int lda,
+- const ::Kokkos::complex<float> B[],
+- const int ldb,
+- const ::Kokkos::complex<float>& beta,
+- ::Kokkos::complex<float> C[],
+- const int ldc)
++cgemm_fwrap (const char transA,
++ const char transB,
++ const int m,
++ const int n,
++ const int k,
++ const ::Kokkos::complex<float>& alpha,
++ const ::Kokkos::complex<float> A[],
++ const int lda,
++ const ::Kokkos::complex<float> B[],
++ const int ldb,
++ const ::Kokkos::complex<float>& beta,
++ ::Kokkos::complex<float> C[],
++ const int ldc)
+ {
+ #ifdef HAVE_TPETRA_INST_COMPLEX_FLOAT
+ TPETRACORE_CGEMM (&transA, &transB, &m, &n, &k, &alpha, A, &lda, B, &ldb, &beta, C, &ldc);
+@@ -131,55 +131,55 @@
+ }
+
+ void
+-dgemm (const char transA,
+- const char transB,
+- const int m,
+- const int n,
+- const int k,
+- const double alpha,
+- const double A[],
+- const int lda,
+- const double B[],
+- const int ldb,
+- const double beta,
+- double C[],
+- const int ldc)
++dgemm_fwrap (const char transA,
++ const char transB,
++ const int m,
++ const int n,
++ const int k,
++ const double alpha,
++ const double A[],
++ const int lda,
++ const double B[],
++ const int ldb,
++ const double beta,
++ double C[],
++ const int ldc)
+ {
+ TPETRACORE_DGEMM (&transA, &transB, &m, &n, &k, &alpha, A, &lda, B, &ldb, &beta, C, &ldc);
+ }
+
+ void
+-sgemm (const char transA,
+- const char transB,
+- const int m,
+- const int n,
+- const int k,
+- const float alpha,
+- const float A[],
+- const int lda,
+- const float B[],
+- const int ldb,
+- const float beta,
+- float C[],
+- const int ldc)
++sgemm_fwrap (const char transA,
++ const char transB,
++ const int m,
++ const int n,
++ const int k,
++ const float alpha,
++ const float A[],
++ const int lda,
++ const float B[],
++ const int ldb,
++ const float beta,
++ float C[],
++ const int ldc)
+ {
+ TPETRACORE_SGEMM (&transA, &transB, &m, &n, &k, &alpha, A, &lda, B, &ldb, &beta, C, &ldc);
+ }
+
+ void
+-zgemm (const char transA,
+- const char transB,
+- const int m,
+- const int n,
+- const int k,
+- const ::Kokkos::complex<double>& alpha,
+- const ::Kokkos::complex<double> A[],
+- const int lda,
+- const ::Kokkos::complex<double> B[],
+- const int ldb,
+- const ::Kokkos::complex<double>& beta,
+- ::Kokkos::complex<double> C[],
+- const int ldc)
++zgemm_fwrap (const char transA,
++ const char transB,
++ const int m,
++ const int n,
++ const int k,
++ const ::Kokkos::complex<double>& alpha,
++ const ::Kokkos::complex<double> A[],
++ const int lda,
++ const ::Kokkos::complex<double> B[],
++ const int ldb,
++ const ::Kokkos::complex<double>& beta,
++ ::Kokkos::complex<double> C[],
++ const int ldc)
+ {
+ #ifdef HAVE_TPETRA_INST_COMPLEX_DOUBLE
+ TPETRACORE_ZGEMM (&transA, &transB, &m, &n, &k, &alpha, A, &lda, B, &ldb, &beta, C, &ldc);
+
+--- a/packages/tpetra/core/src/Tpetra_Details_libGemm.hpp
++++ b/packages/tpetra/core/src/Tpetra_Details_libGemm.hpp
+@@ -99,67 +99,67 @@
+
+ /// \brief Wrapped version of the BLAS library's cgemm.
+ void
+-cgemm (const char char_transA,
+- const char char_transB,
+- const int m,
+- const int n,
+- const int k,
+- const ::Kokkos::complex<float>& alpha,
+- const ::Kokkos::complex<float> A[],
+- const int lda,
+- const ::Kokkos::complex<float> B[],
+- const int ldb,
+- const ::Kokkos::complex<float>& beta,
+- ::Kokkos::complex<float> C[],
+- const int ldc);
++cgemm_fwrap (const char char_transA,
++ const char char_transB,
++ const int m,
++ const int n,
++ const int k,
++ const ::Kokkos::complex<float>& alpha,
++ const ::Kokkos::complex<float> A[],
++ const int lda,
++ const ::Kokkos::complex<float> B[],
++ const int ldb,
++ const ::Kokkos::complex<float>& beta,
++ ::Kokkos::complex<float> C[],
++ const int ldc);
+
+ /// \brief Wrapped version of the BLAS library's dgemm.
+ void
+-dgemm (const char char_transA,
+- const char char_transB,
+- const int m,
+- const int n,
+- const int k,
+- const double alpha,
+- const double A[],
+- const int lda,
+- const double B[],
+- const int ldb,
+- const double beta,
+- double C[],
+- const int ldc);
++dgemm_fwrap (const char char_transA,
++ const char char_transB,
++ const int m,
++ const int n,
++ const int k,
++ const double alpha,
++ const double A[],
++ const int lda,
++ const double B[],
++ const int ldb,
++ const double beta,
++ double C[],
++ const int ldc);
+
+ /// \brief Wrapped version of the BLAS library's sgemm.
+ void
+-sgemm (const char char_transA,
+- const char char_transB,
+- const int m,
+- const int n,
+- const int k,
+- const float alpha,
+- const float A[],
+- const int lda,
+- const float B[],
+- const int ldb,
+- const float beta,
+- float C[],
+- const int ldc);
++sgemm_fwrap (const char char_transA,
++ const char char_transB,
++ const int m,
++ const int n,
++ const int k,
++ const float alpha,
++ const float A[],
++ const int lda,
++ const float B[],
++ const int ldb,
++ const float beta,
++ float C[],
++ const int ldc);
+
+ /// \brief Wrapped version of the BLAS library's zgemm.
+ void
+-zgemm (const char char_transA,
+- const char char_transB,
+- const int m,
+- const int n,
+- const int k,
+- const ::Kokkos::complex<double>& alpha,
+- const ::Kokkos::complex<double> A[],
+- const int lda,
+- const ::Kokkos::complex<double> B[],
+- const int ldb,
+- const ::Kokkos::complex<double>& beta,
+- ::Kokkos::complex<double> C[],
+- const int ldc);
++zgemm_fwrap (const char char_transA,
++ const char char_transB,
++ const int m,
++ const int n,
++ const int k,
++ const ::Kokkos::complex<double>& alpha,
++ const ::Kokkos::complex<double> A[],
++ const int lda,
++ const ::Kokkos::complex<double> B[],
++ const int ldb,
++ const ::Kokkos::complex<double>& beta,
++ ::Kokkos::complex<double> C[],
++ const int ldc);
+
+ /// \brief Wrapper for the above wrappers, templated on scalar type
+ /// (the type of each entry in the matrices).
+@@ -184,7 +184,7 @@
+ scalar_type C[],
+ const int ldc)
+ {
+- return cgemm (transA, transB, m, n, k, alpha, A, lda, B, ldb, beta, C, ldc);
++ return cgemm_fwrap (transA, transB, m, n, k, alpha, A, lda, B, ldb, beta, C, ldc);
+ }
+ };
+
+@@ -207,7 +207,7 @@
+ scalar_type C[],
+ const int ldc)
+ {
+- return dgemm (transA, transB, m, n, k, alpha, A, lda, B, ldb, beta, C, ldc);
++ return dgemm_fwrap (transA, transB, m, n, k, alpha, A, lda, B, ldb, beta, C, ldc);
+ }
+ };
+
+@@ -230,7 +230,7 @@
+ scalar_type C[],
+ const int ldc)
+ {
+- return sgemm (transA, transB, m, n, k, alpha, A, lda, B, ldb, beta, C, ldc);
++ return sgemm_fwrap (transA, transB, m, n, k, alpha, A, lda, B, ldb, beta, C, ldc);
+ }
+ };
+
+@@ -253,7 +253,7 @@
+ scalar_type C[],
+ const int ldc)
+ {
+- return zgemm (transA, transB, m, n, k, alpha, A, lda, B, ldb, beta, C, ldc);
++ return zgemm_fwrap (transA, transB, m, n, k, alpha, A, lda, B, ldb, beta, C, ldc);
+ }
+ };
+