From 8564be5479fade304379f6461ece03b8740230b4 Mon Sep 17 00:00:00 2001 From: Dan FitzGerald <38731008+basicmanfitz@users.noreply.github.com> Date: Mon, 21 May 2018 17:00:10 -0400 Subject: 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 --- .../repos/builtin/packages/trilinos/package.py | 6 +- .../builtin/packages/trilinos/xlf_tpetra.patch | 289 +++++++++++++++++++++ 2 files changed, 293 insertions(+), 2 deletions(-) create mode 100644 var/spack/repos/builtin/packages/trilinos/xlf_tpetra.patch 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& alpha, +- const ::Kokkos::complex A[], +- const int lda, +- const ::Kokkos::complex B[], +- const int ldb, +- const ::Kokkos::complex& beta, +- ::Kokkos::complex C[], +- const int ldc) ++cgemm_fwrap (const char transA, ++ const char transB, ++ const int m, ++ const int n, ++ const int k, ++ const ::Kokkos::complex& alpha, ++ const ::Kokkos::complex A[], ++ const int lda, ++ const ::Kokkos::complex B[], ++ const int ldb, ++ const ::Kokkos::complex& beta, ++ ::Kokkos::complex 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& alpha, +- const ::Kokkos::complex A[], +- const int lda, +- const ::Kokkos::complex B[], +- const int ldb, +- const ::Kokkos::complex& beta, +- ::Kokkos::complex C[], +- const int ldc) ++zgemm_fwrap (const char transA, ++ const char transB, ++ const int m, ++ const int n, ++ const int k, ++ const ::Kokkos::complex& alpha, ++ const ::Kokkos::complex A[], ++ const int lda, ++ const ::Kokkos::complex B[], ++ const int ldb, ++ const ::Kokkos::complex& beta, ++ ::Kokkos::complex 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& alpha, +- const ::Kokkos::complex A[], +- const int lda, +- const ::Kokkos::complex B[], +- const int ldb, +- const ::Kokkos::complex& beta, +- ::Kokkos::complex 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& alpha, ++ const ::Kokkos::complex A[], ++ const int lda, ++ const ::Kokkos::complex B[], ++ const int ldb, ++ const ::Kokkos::complex& beta, ++ ::Kokkos::complex 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& alpha, +- const ::Kokkos::complex A[], +- const int lda, +- const ::Kokkos::complex B[], +- const int ldb, +- const ::Kokkos::complex& beta, +- ::Kokkos::complex 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& alpha, ++ const ::Kokkos::complex A[], ++ const int lda, ++ const ::Kokkos::complex B[], ++ const int ldb, ++ const ::Kokkos::complex& beta, ++ ::Kokkos::complex 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); + } + }; + -- cgit v1.2.3-60-g2f50