From fe510d2b353db85f44c60b4084518ecfa526421f Mon Sep 17 00:00:00 2001 From: Vinh Dang Date: Fri, 13 Dec 2019 16:36:21 -0700 Subject: [PATCH 01/10] Add BLAS and cuBLAS interface for TRSM --- src/blas/KokkosBlas3_trsm.hpp | 184 +++++ src/blas/impl/KokkosBlas3_trsm_impl.hpp | 60 ++ src/blas/impl/KokkosBlas3_trsm_spec.hpp | 178 +++++ .../tpls/KokkosBlas3_trsm_tpl_spec_avail.hpp | 162 ++++ .../tpls/KokkosBlas3_trsm_tpl_spec_decl.hpp | 710 ++++++++++++++++++ src/impl/tpls/KokkosBlas_Host_tpl.cpp | 82 ++ src/impl/tpls/KokkosBlas_Host_tpl.hpp | 7 + unit_test/Makefile | 4 + unit_test/blas/Test_Blas3_trsm.hpp | 656 ++++++++++++++++ unit_test/cuda/Test_Cuda_Blas3_trsm.cpp | 4 + unit_test/openmp/Test_OpenMP_Blas3_trsm.cpp | 4 + unit_test/serial/Test_Serial_Blas3_trsm.cpp | 4 + unit_test/threads/Test_Threads_Blas3_trsm.cpp | 4 + 13 files changed, 2059 insertions(+) create mode 100644 src/blas/KokkosBlas3_trsm.hpp create mode 100644 src/blas/impl/KokkosBlas3_trsm_impl.hpp create mode 100644 src/blas/impl/KokkosBlas3_trsm_spec.hpp create mode 100644 src/impl/tpls/KokkosBlas3_trsm_tpl_spec_avail.hpp create mode 100644 src/impl/tpls/KokkosBlas3_trsm_tpl_spec_decl.hpp create mode 100644 unit_test/blas/Test_Blas3_trsm.hpp create mode 100644 unit_test/cuda/Test_Cuda_Blas3_trsm.cpp create mode 100644 unit_test/openmp/Test_OpenMP_Blas3_trsm.cpp create mode 100644 unit_test/serial/Test_Serial_Blas3_trsm.cpp create mode 100644 unit_test/threads/Test_Threads_Blas3_trsm.cpp diff --git a/src/blas/KokkosBlas3_trsm.hpp b/src/blas/KokkosBlas3_trsm.hpp new file mode 100644 index 0000000000..168ae768dd --- /dev/null +++ b/src/blas/KokkosBlas3_trsm.hpp @@ -0,0 +1,184 @@ +/* +//@HEADER +// ************************************************************************ +// +// KokkosKernels 0.9: Linear Algebra and Graph Kernels +// Copyright 2017 Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Siva Rajamanickam (srajama@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ +#ifndef KOKKOSBLAS3_TRSM_HPP_ +#define KOKKOSBLAS3_TRSM_HPP_ + +/// \file KokkosBlas3_trsm.hpp + +#include +#include +#include +#include +#include + +namespace KokkosBlas { + +/// \brief Solve triangular linear system with multiple RHSs: +/// op(A)*X = alpha*B if side == "L" or "l" +/// X*op(A) = alpha*B if side == "R" or "r" +/// +/// \tparam AViewType Input matrix, as a 2-D Kokkos::View +/// \tparam BViewType Input(RHS)/Output(solution) M-by-N matrix, as a 2-D Kokkos::View +/// +/// \param side [in] "L" or "l" indicates matrix A is on the left of X +/// "R" or "r" indicates matrix A is on the right of X +/// \param uplo [in] "U" or "u" indicates matrix A upper part is stored, the other part is not referenced +/// "L" or "l" indicates matrix A lower part is stored, the other part is not referenced +/// \param trans [in] "N" or "n" for non-transpose, "T" or "t" for transpose, "C" or "c" for conjugate transpose. +/// \param diag [in] "U" or "u" indicates the diagonal of A is assumed to be unit +// "N" or "n" indicated the diagonal of A is assumed to be non-unit +/// \param alpha [in] Input coefficient used for multiplication with B +/// \param A [in] Input matrix, as a 2-D Kokkos::View +/// If side == "L" or "l", matrix A is a M-by-M triangular matrix; +/// otherwise, matrix A is a N-by-N triangular matrix +/// \param B [in,out] Input/Output matrix, as a 2-D Kokkos::View +/// On entry, M-by-N matrix of multile RHS +/// On exit, overwritten with the solution X +template +void +trsm (const char side[], + const char uplo[], + const char trans[], + const char diag[], + typename BViewType::const_value_type& alpha, + const AViewType& A, + const BViewType& B) +{ + + static_assert (Kokkos::Impl::is_view::value, + "AViewType must be a Kokkos::View."); + static_assert (Kokkos::Impl::is_view::value, + "BViewType must be a Kokkos::View."); + static_assert (static_cast (AViewType::rank) == 2, + "AViewType must have rank 2."); + static_assert (static_cast (BViewType::rank) == 1 || static_cast (BViewType::rank) == 2, + "BViewType must have either rank 1 or rank 2."); + + // Check validity of indicator argument + bool valid_side = (side[0] == 'L' ) || (side[0] == 'l' )|| + (side[0] == 'R' ) || (side[0] == 'r' ); + bool valid_uplo = (uplo[0] == 'U' ) || (uplo[0] == 'u' )|| + (uplo[0] == 'L' ) || (uplo[0] == 'l' ); + bool valid_trans = (trans[0] == 'N') || (trans[0] == 'n')|| + (trans[0] == 'T') || (trans[0] == 't')|| + (trans[0] == 'C') || (trans[0] == 'c'); + bool valid_diag = (diag[0] == 'U' ) || (diag[0] == 'u' )|| + (diag[0] == 'N' ) || (diag[0] == 'n' ); + if(!valid_side) { + std::ostringstream os; + os << "KokkosBlas::trsm: side = '" << side[0] << "'. " << + "Valid values include 'L' or 'l' (A is on the left of X), " + "'R' or 'r' (A is on the right of X)."; + Kokkos::Impl::throw_runtime_exception (os.str ()); + } + if(!valid_uplo) { + std::ostringstream os; + os << "KokkosBlas::trsm: uplo = '" << uplo[0] << "'. " << + "Valid values include 'U' or 'u' (A is upper triangular), " + "'L' or 'l' (A is lower triangular)."; + Kokkos::Impl::throw_runtime_exception (os.str ()); + } + if(!valid_trans) { + std::ostringstream os; + os << "KokkosBlas::trsm: trans = '" << trans[0] << "'. " << + "Valid values include 'N' or 'n' (No transpose), 'T' or 't' (Transpose), " + "and 'C' or 'c' (Conjugate transpose)."; + Kokkos::Impl::throw_runtime_exception (os.str ()); + } + if(!valid_diag) { + std::ostringstream os; + os << "KokkosBlas::trsm: diag = '" << diag[0] << "'. " << + "Valid values include 'U' or 'u' (the diagonal of A is assumed to be unit), " + "'N' or 'n' (the diagonal of A is assumed to be non-unit)."; + Kokkos::Impl::throw_runtime_exception (os.str ()); + } + + // Check compatibility of dimensions at run time. + bool A_s = (side[0] == 'L' || side[0] == 'l'); + + int64_t A0 = A.extent(0); + int64_t A1 = A.extent(1); + int64_t B0 = B.extent(0); + int64_t B1 = B.extent(1); + + if ((A0 != A1) || ((A_s?B0:B1) != A1)) { + std::ostringstream os; + os << "KokkosBlas::trsm: Dimensions of A and B do not match: " + << "side: " << side[0] + << " A: " << A.extent(0) << " x " << A.extent(1) + << " B: " << B.extent(0) << " x " << B.extent(1); + Kokkos::Impl::throw_runtime_exception (os.str ()); + } + + // Return if degenerated matrices are provided + if((A.extent(0) == 0) || (A.extent(1) == 0) || (B.extent(0) == 0) || (B.extent(1) == 0)) + return; + + // Minimize the number of Impl::TRSM instantiations, by + // standardizing on particular View specializations for its template + // parameters. + using AVT = Kokkos::View >; + using BVT = Kokkos::View >; + + AVT A_i = A; + + if (BViewType::rank == 1) { + auto B_i = BVT(B.data(), B.extent(0), 1); + KokkosBlas::Impl::TRSM::trsm (side, uplo, trans, diag, alpha, A_i, B_i); + } + else { //BViewType::rank == 2 + auto B_i = BVT(B.data(), B.extent(0), B.extent(1)); + KokkosBlas::Impl::TRSM::trsm (side, uplo, trans, diag, alpha, A_i, B_i); + } +} + +} // namespace KokkosBlas + +#endif // KOKKOS_BLAS3_TRSM_HPP_ diff --git a/src/blas/impl/KokkosBlas3_trsm_impl.hpp b/src/blas/impl/KokkosBlas3_trsm_impl.hpp new file mode 100644 index 0000000000..48083d88c2 --- /dev/null +++ b/src/blas/impl/KokkosBlas3_trsm_impl.hpp @@ -0,0 +1,60 @@ +/* +//@HEADER +// ************************************************************************ +// +// KokkosKernels 0.9: Linear Algebra and Graph Kernels +// Copyright 2017 Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Siva Rajamanickam (srajama@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#ifndef KOKKOSBLAS3_TRSM_IMPL_HPP_ +#define KOKKOSBLAS3_TRSM_IMPL_HPP_ + +/// \file KokkosBlas3_trsm_impl.hpp +/// \brief Implementation(s) of triangular linear system solve (with multiple RHSs) . + +#include "KokkosKernels_config.h" +#include "Kokkos_Core.hpp" +#include "Kokkos_ArithTraits.hpp" + + +namespace KokkosBlas { +namespace Impl { + //TODO: Add the implementation of KokkosBlas::trsm later +} +} +#endif // KOKKOSBLAS3_TRSM_IMPL_HPP_ diff --git a/src/blas/impl/KokkosBlas3_trsm_spec.hpp b/src/blas/impl/KokkosBlas3_trsm_spec.hpp new file mode 100644 index 0000000000..1a92019611 --- /dev/null +++ b/src/blas/impl/KokkosBlas3_trsm_spec.hpp @@ -0,0 +1,178 @@ +/* +//@HEADER +// ************************************************************************ +// +// KokkosKernels 0.9: Linear Algebra and Graph Kernels +// Copyright 2017 Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Siva Rajamanickam (srajama@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ +#ifndef KOKKOSBLAS3_TRSM_SPEC_HPP_ +#define KOKKOSBLAS3_TRSM_SPEC_HPP_ + +#include "KokkosKernels_config.h" +#include "Kokkos_Core.hpp" +#include "Kokkos_InnerProductSpaceTraits.hpp" +#include + +#if !defined(KOKKOSKERNELS_ETI_ONLY) || KOKKOSKERNELS_IMPL_COMPILE_LIBRARY +#include +#endif + +namespace KokkosBlas { +namespace Impl { +// Specialization struct which defines whether a specialization exists +template +struct trsm_eti_spec_avail { + enum : bool { value = false }; +}; +} +} + +// +// Macro for declaration of full specialization availability +// KokkosBlas::Impl::TRSM. This is NOT for users!!! All +// the declarations of full specializations go in this header file. +// We may spread out definitions (see _INST macro below) across one or +// more .cpp files. +// +#define KOKKOSBLAS3_TRSM_ETI_SPEC_AVAIL_LAYOUT( SCALAR, LAYOUTA, LAYOUTB, EXEC_SPACE, MEM_SPACE ) \ + template<> \ + struct trsm_eti_spec_avail< \ + Kokkos::View, \ + Kokkos::MemoryTraits >, \ + Kokkos::View, \ + Kokkos::MemoryTraits > \ + > { enum : bool { value = true }; }; + +#define KOKKOSBLAS3_TRSM_ETI_SPEC_AVAIL( SCALAR, LAYOUT, EXEC_SPACE, MEM_SPACE ) \ + KOKKOSBLAS3_TRSM_ETI_SPEC_AVAIL_LAYOUT( SCALAR, LAYOUT, LAYOUT, EXEC_SPACE, MEM_SPACE) \ + KOKKOSBLAS3_TRSM_ETI_SPEC_AVAIL_LAYOUT( SCALAR, LAYOUT, LAYOUT, EXEC_SPACE, MEM_SPACE) + +// Include the actual specialization declarations +#include +//#include + +namespace KokkosBlas { +namespace Impl { + +// +// trsm +// + +//Unification layer +template::value, + bool eti_spec_avail = trsm_eti_spec_avail::value + > +struct TRSM{ + static void + trsm (const char side[], + const char uplo[], + const char trans[], + const char diag[], + typename BViewType::const_value_type& alpha, + const AViewType& A, + const BViewType& B); +}; + +// Implementation of KokkosBlas::trsm. +#if !defined(KOKKOSKERNELS_ETI_ONLY) || KOKKOSKERNELS_IMPL_COMPILE_LIBRARY +template::value, + bool eti_spec_avail = trsm_eti_spec_avail::value + > +struct TRSM { + static void + trsm (const char side[], + const char uplo[], + const char trans[], + const char diag[], + typename BViewType::const_value_type& alpha, + const AViewType& A, + const BViewType& B) + { + std::ostringstream os; + os << "KokkosBlas::trsm currently supports only TPL interface." + << "Please enable Host BLAS or cuBLAS." + << "KokkosKernels implmentation will be added in future release."; + Kokkos::Impl::throw_runtime_exception (os.str ()); + } +}; +#endif //!defined(KOKKOSKERNELS_ETI_ONLY) || KOKKOSKERNELS_IMPL_COMPILE_LIBRARY + +} // namespace Impl +} // namespace KokkosBlas + + +// +// Macro for declaration of full specialization of +// KokkosBlas::Impl::TRSM. This is NOT for users!!! +// All the declarations of full specializations go in this header +// file. We may spread out definitions (see _DEF macro below) across +// one or more .cpp files. +// + +#define KOKKOSBLAS3_TRSM_ETI_SPEC_DECL_LAYOUTS( SCALAR, LAYOUTA, LAYOUTB, EXEC_SPACE, MEM_SPACE ) \ +extern template struct TRSM< \ + Kokkos::View, \ + Kokkos::MemoryTraits >, \ + Kokkos::View, \ + Kokkos::MemoryTraits >, \ + false, true>; + +#define KOKKOSBLAS3_TRSM_ETI_SPEC_INST_LAYOUTS( SCALAR, LAYOUTA, LAYOUTB, EXEC_SPACE, MEM_SPACE ) \ +template struct TRSM< \ + Kokkos::View, \ + Kokkos::MemoryTraits >, \ + Kokkos::View, \ + Kokkos::MemoryTraits >, \ + false, true>; + +#define KOKKOSBLAS3_TRSM_ETI_SPEC_DECL( SCALAR, LAYOUT, EXEC_SPACE, MEM_SPACE ) \ + KOKKOSBLAS3_TRSM_ETI_SPEC_DECL_LAYOUTS(SCALAR, LAYOUT, LAYOUT, EXEC_SPACE, MEM_SPACE) \ + KOKKOSBLAS3_TRSM_ETI_SPEC_DECL_LAYOUTS(SCALAR, LAYOUT, LAYOUT, EXEC_SPACE, MEM_SPACE) + +#define KOKKOSBLAS3_TRSM_ETI_SPEC_INST( SCALAR, LAYOUT, EXEC_SPACE, MEM_SPACE ) \ + KOKKOSBLAS3_TRSM_ETI_SPEC_INST_LAYOUTS(SCALAR, LAYOUT, LAYOUT, EXEC_SPACE, MEM_SPACE) \ + KOKKOSBLAS3_TRSM_ETI_SPEC_INST_LAYOUTS(SCALAR, LAYOUT, LAYOUT, EXEC_SPACE, MEM_SPACE) + +#include +//#include + +#endif // KOKKOSBLAS3_TRSM_SPEC_HPP_ diff --git a/src/impl/tpls/KokkosBlas3_trsm_tpl_spec_avail.hpp b/src/impl/tpls/KokkosBlas3_trsm_tpl_spec_avail.hpp new file mode 100644 index 0000000000..3e08bd6a9f --- /dev/null +++ b/src/impl/tpls/KokkosBlas3_trsm_tpl_spec_avail.hpp @@ -0,0 +1,162 @@ +/* +//@HEADER +// ************************************************************************ +// +// KokkosKernels 0.9: Linear Algebra and Graph Kernels +// Copyright 2017 Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Siva Rajamanickam (srajama@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#ifndef KOKKOSBLAS3_TRSM_TPL_SPEC_AVAIL_HPP_ +#define KOKKOSBLAS3_TRSM_TPL_SPEC_AVAIL_HPP_ + +namespace KokkosBlas { +namespace Impl { + +// Specialization struct which defines whether a specialization exists +template +struct trsm_tpl_spec_avail { + enum : bool { value = false }; +}; + +// Generic Host side BLAS (could be MKL or whatever) +#ifdef KOKKOSKERNELS_ENABLE_TPL_BLAS + +#define KOKKOSBLAS3_TRSM_TPL_SPEC_AVAIL_BLAS( SCALAR , LAYOUTA, LAYOUTB, MEMSPACE ) \ +template \ +struct trsm_tpl_spec_avail< \ + Kokkos::View, \ + Kokkos::MemoryTraits >, \ + Kokkos::View, \ + Kokkos::MemoryTraits > \ + > { enum : bool { value = true }; }; + +#if defined (KOKKOSKERNELS_INST_DOUBLE) \ + && defined (KOKKOSKERNELS_INST_LAYOUTLEFT) + KOKKOSBLAS3_TRSM_TPL_SPEC_AVAIL_BLAS( double, Kokkos::LayoutLeft, Kokkos::LayoutLeft, Kokkos::HostSpace) +#endif +#if defined (KOKKOSKERNELS_INST_FLOAT) \ + && defined (KOKKOSKERNELS_INST_LAYOUTLEFT) + KOKKOSBLAS3_TRSM_TPL_SPEC_AVAIL_BLAS( float, Kokkos::LayoutLeft, Kokkos::LayoutLeft, Kokkos::HostSpace) +#endif +#if defined (KOKKOSKERNELS_INST_KOKKOS_COMPLEX_DOUBLE_) \ + && defined (KOKKOSKERNELS_INST_LAYOUTLEFT) + KOKKOSBLAS3_TRSM_TPL_SPEC_AVAIL_BLAS( Kokkos::complex, Kokkos::LayoutLeft, Kokkos::LayoutLeft, Kokkos::HostSpace) +#endif +#if defined (KOKKOSKERNELS_INST_KOKKOS_COMPLEX_FLOAT_) \ + && defined (KOKKOSKERNELS_INST_LAYOUTLEFT) + KOKKOSBLAS3_TRSM_TPL_SPEC_AVAIL_BLAS( Kokkos::complex, Kokkos::LayoutLeft, Kokkos::LayoutLeft, Kokkos::HostSpace) +#endif + +#if defined (KOKKOSKERNELS_INST_DOUBLE) \ + && defined (KOKKOSKERNELS_INST_LAYOUTRIGHT) + KOKKOSBLAS3_TRSM_TPL_SPEC_AVAIL_BLAS( double, Kokkos::LayoutRight, Kokkos::LayoutRight, Kokkos::HostSpace) +#endif +#if defined (KOKKOSKERNELS_INST_FLOAT) \ + && defined (KOKKOSKERNELS_INST_LAYOUTRIGHT) + KOKKOSBLAS3_TRSM_TPL_SPEC_AVAIL_BLAS( float, Kokkos::LayoutRight, Kokkos::LayoutRight, Kokkos::HostSpace) +#endif +#if defined (KOKKOSKERNELS_INST_KOKKOS_COMPLEX_DOUBLE_) \ + && defined (KOKKOSKERNELS_INST_LAYOUTRIGHT) + KOKKOSBLAS3_TRSM_TPL_SPEC_AVAIL_BLAS( Kokkos::complex, Kokkos::LayoutRight, Kokkos::LayoutRight, Kokkos::HostSpace) +#endif +#if defined (KOKKOSKERNELS_INST_KOKKOS_COMPLEX_FLOAT_) \ + && defined (KOKKOSKERNELS_INST_LAYOUTRIGHT) + KOKKOSBLAS3_TRSM_TPL_SPEC_AVAIL_BLAS( Kokkos::complex, Kokkos::LayoutRight, Kokkos::LayoutRight, Kokkos::HostSpace) +#endif + +#endif + +// cuBLAS +#ifdef KOKKOSKERNELS_ENABLE_TPL_CUBLAS + +#define KOKKOSBLAS3_TRSM_TPL_SPEC_AVAIL_CUBLAS( SCALAR , LAYOUTA, LAYOUTB, MEMSPACE ) \ +template \ +struct trsm_tpl_spec_avail< \ + Kokkos::View, \ + Kokkos::MemoryTraits >, \ + Kokkos::View, \ + Kokkos::MemoryTraits > \ + > { enum : bool { value = true }; }; + +#if defined (KOKKOSKERNELS_INST_DOUBLE) \ + && defined (KOKKOSKERNELS_INST_LAYOUTLEFT) + KOKKOSBLAS3_TRSM_TPL_SPEC_AVAIL_CUBLAS( double, Kokkos::LayoutLeft, Kokkos::LayoutLeft, Kokkos::CudaSpace) + KOKKOSBLAS3_TRSM_TPL_SPEC_AVAIL_CUBLAS( double, Kokkos::LayoutLeft, Kokkos::LayoutLeft, Kokkos::CudaUVMSpace) +#endif +#if defined (KOKKOSKERNELS_INST_FLOAT) \ + && defined (KOKKOSKERNELS_INST_LAYOUTLEFT) + KOKKOSBLAS3_TRSM_TPL_SPEC_AVAIL_CUBLAS( float, Kokkos::LayoutLeft, Kokkos::LayoutLeft, Kokkos::CudaSpace) + KOKKOSBLAS3_TRSM_TPL_SPEC_AVAIL_CUBLAS( float, Kokkos::LayoutLeft, Kokkos::LayoutLeft, Kokkos::CudaUVMSpace) +#endif +#if defined (KOKKOSKERNELS_INST_KOKKOS_COMPLEX_DOUBLE_) \ + && defined (KOKKOSKERNELS_INST_LAYOUTLEFT) + KOKKOSBLAS3_TRSM_TPL_SPEC_AVAIL_CUBLAS( Kokkos::complex, Kokkos::LayoutLeft, Kokkos::LayoutLeft, Kokkos::CudaSpace) + KOKKOSBLAS3_TRSM_TPL_SPEC_AVAIL_CUBLAS( Kokkos::complex, Kokkos::LayoutLeft, Kokkos::LayoutLeft, Kokkos::CudaUVMSpace) +#endif +#if defined (KOKKOSKERNELS_INST_KOKKOS_COMPLEX_FLOAT_) \ + && defined (KOKKOSKERNELS_INST_LAYOUTLEFT) + KOKKOSBLAS3_TRSM_TPL_SPEC_AVAIL_CUBLAS( Kokkos::complex, Kokkos::LayoutLeft, Kokkos::LayoutLeft, Kokkos::CudaSpace) + KOKKOSBLAS3_TRSM_TPL_SPEC_AVAIL_CUBLAS( Kokkos::complex, Kokkos::LayoutLeft, Kokkos::LayoutLeft, Kokkos::CudaUVMSpace) +#endif + +#if defined (KOKKOSKERNELS_INST_DOUBLE) \ + && defined (KOKKOSKERNELS_INST_LAYOUTRIGHT) + KOKKOSBLAS3_TRSM_TPL_SPEC_AVAIL_CUBLAS( double, Kokkos::LayoutRight, Kokkos::LayoutRight, Kokkos::CudaSpace) + KOKKOSBLAS3_TRSM_TPL_SPEC_AVAIL_CUBLAS( double, Kokkos::LayoutRight, Kokkos::LayoutRight, Kokkos::CudaUVMSpace) +#endif +#if defined (KOKKOSKERNELS_INST_FLOAT) \ + && defined (KOKKOSKERNELS_INST_LAYOUTRIGHT) + KOKKOSBLAS3_TRSM_TPL_SPEC_AVAIL_CUBLAS( float, Kokkos::LayoutRight, Kokkos::LayoutRight, Kokkos::CudaSpace) + KOKKOSBLAS3_TRSM_TPL_SPEC_AVAIL_CUBLAS( float, Kokkos::LayoutRight, Kokkos::LayoutRight, Kokkos::CudaUVMSpace) +#endif +#if defined (KOKKOSKERNELS_INST_KOKKOS_COMPLEX_DOUBLE_) \ + && defined (KOKKOSKERNELS_INST_LAYOUTRIGHT) + KOKKOSBLAS3_TRSM_TPL_SPEC_AVAIL_CUBLAS( Kokkos::complex, Kokkos::LayoutRight, Kokkos::LayoutRight, Kokkos::CudaSpace) + KOKKOSBLAS3_TRSM_TPL_SPEC_AVAIL_CUBLAS( Kokkos::complex, Kokkos::LayoutRight, Kokkos::LayoutRight, Kokkos::CudaUVMSpace) +#endif +#if defined (KOKKOSKERNELS_INST_KOKKOS_COMPLEX_FLOAT_) \ + && defined (KOKKOSKERNELS_INST_LAYOUTRIGHT) + KOKKOSBLAS3_TRSM_TPL_SPEC_AVAIL_CUBLAS( Kokkos::complex, Kokkos::LayoutRight, Kokkos::LayoutRight, Kokkos::CudaSpace) + KOKKOSBLAS3_TRSM_TPL_SPEC_AVAIL_CUBLAS( Kokkos::complex, Kokkos::LayoutRight, Kokkos::LayoutRight, Kokkos::CudaUVMSpace) +#endif + +#endif +} +} + +#endif diff --git a/src/impl/tpls/KokkosBlas3_trsm_tpl_spec_decl.hpp b/src/impl/tpls/KokkosBlas3_trsm_tpl_spec_decl.hpp new file mode 100644 index 0000000000..ab59d2f238 --- /dev/null +++ b/src/impl/tpls/KokkosBlas3_trsm_tpl_spec_decl.hpp @@ -0,0 +1,710 @@ +/* +//@HEADER +// ************************************************************************ +// +// KokkosKernels 0.9: Linear Algebra and Graph Kernels +// Copyright 2017 Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Siva Rajamanickam (srajama@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#ifndef KOKKOSBLAS3_TRSM_TPL_SPEC_DECL_HPP_ +#define KOKKOSBLAS3_TRSM_TPL_SPEC_DECL_HPP_ + +#ifdef KOKKOSKERNELS_ENABLE_TPL_BLAS +#include "KokkosBlas_Host_tpl.hpp" + +namespace KokkosBlas { +namespace Impl { + +#define KOKKOSBLAS3_DTRSM_BLAS( LAYOUTA, LAYOUTB, MEM_SPACE, ETI_SPEC_AVAIL ) \ +template \ +struct TRSM< \ + Kokkos::View, \ + Kokkos::MemoryTraits >, \ + Kokkos::View, \ + Kokkos::MemoryTraits >, \ + true, ETI_SPEC_AVAIL> { \ + typedef double SCALAR; \ + typedef Kokkos::View, \ + Kokkos::MemoryTraits > AViewType; \ + typedef Kokkos::View, \ + Kokkos::MemoryTraits > BViewType; \ + \ + static void \ + trsm (const char side[], \ + const char uplo[], \ + const char trans[], \ + const char diag[], \ + typename BViewType::const_value_type& alpha, \ + const AViewType& A, \ + const BViewType& B) { \ + \ + Kokkos::Profiling::pushRegion("KokkosBlas::trsm[TPL_BLAS,double]"); \ + const int M = static_cast (B.extent(0)); \ + const int N = static_cast (B.extent(1)); \ + \ + bool A_is_ll = std::is_same::value; \ + bool B_is_ll = std::is_same::value; \ + \ + const int AST = A_is_ll?A.stride(1):A.stride(0), LDA = (AST == 0) ? 1 : AST; \ + const int BST = B_is_ll?B.stride(1):B.stride(0), LDB = (BST == 0) ? 1 : BST; \ + \ + char side_; \ + char uplo_; \ + \ + if(A_is_ll) { \ + if ((side[0]=='L')||(side[0]=='l')) \ + side_ = 'L'; \ + else \ + side_ = 'R'; \ + if ((uplo[0]=='L')||(uplo[0]=='l')) \ + uplo_ = 'L'; \ + else \ + uplo_ = 'U'; \ + } \ + else { \ + if ((side[0]=='L')||(side[0]=='l')) \ + side_ = 'R'; \ + else \ + side_ = 'L'; \ + if ((uplo[0]=='L')||(uplo[0]=='l')) \ + uplo_ = 'U'; \ + else \ + uplo_ = 'L'; \ + } \ + \ + if(A_is_ll) \ + HostBlas::trsm(side_, uplo_, trans[0], diag[0], M, N, alpha, A.data(), LDA, B.data(), LDB); \ + else \ + HostBlas::trsm(side_, uplo_, trans[0], diag[0], N, M, alpha, A.data(), LDA, B.data(), LDB); \ + Kokkos::Profiling::popRegion(); \ + } \ +}; + +#define KOKKOSBLAS3_STRSM_BLAS( LAYOUTA, LAYOUTB, MEM_SPACE, ETI_SPEC_AVAIL ) \ +template \ +struct TRSM< \ + Kokkos::View, \ + Kokkos::MemoryTraits >, \ + Kokkos::View, \ + Kokkos::MemoryTraits >, \ + true, ETI_SPEC_AVAIL> { \ + typedef float SCALAR; \ + typedef Kokkos::View, \ + Kokkos::MemoryTraits > AViewType; \ + typedef Kokkos::View, \ + Kokkos::MemoryTraits > BViewType; \ + \ + static void \ + trsm (const char side[], \ + const char uplo[], \ + const char trans[], \ + const char diag[], \ + typename BViewType::const_value_type& alpha, \ + const AViewType& A, \ + const BViewType& B) { \ + \ + Kokkos::Profiling::pushRegion("KokkosBlas::trsm[TPL_BLAS,float]"); \ + const int M = static_cast (B.extent(0)); \ + const int N = static_cast (B.extent(1)); \ + \ + bool A_is_ll = std::is_same::value; \ + bool B_is_ll = std::is_same::value; \ + \ + const int AST = A_is_ll?A.stride(1):A.stride(0), LDA = (AST == 0) ? 1 : AST; \ + const int BST = B_is_ll?B.stride(1):B.stride(0), LDB = (BST == 0) ? 1 : BST; \ + \ + char side_; \ + char uplo_; \ + \ + if(A_is_ll) { \ + if ((side[0]=='L')||(side[0]=='l')) \ + side_ = 'L'; \ + else \ + side_ = 'R'; \ + if ((uplo[0]=='L')||(uplo[0]=='l')) \ + uplo_ = 'L'; \ + else \ + uplo_ = 'U'; \ + } \ + else { \ + if ((side[0]=='L')||(side[0]=='l')) \ + side_ = 'R'; \ + else \ + side_ = 'L'; \ + if ((uplo[0]=='L')||(uplo[0]=='l')) \ + uplo_ = 'U'; \ + else \ + uplo_ = 'L'; \ + } \ + \ + if(A_is_ll) \ + HostBlas::trsm(side_, uplo_, trans[0], diag[0], M, N, alpha, A.data(), LDA, B.data(), LDB); \ + else \ + HostBlas::trsm(side_, uplo_, trans[0], diag[0], N, M, alpha, A.data(), LDA, B.data(), LDB); \ + Kokkos::Profiling::popRegion(); \ + } \ +}; + +#define KOKKOSBLAS3_ZTRSM_BLAS( LAYOUTA, LAYOUTB, MEM_SPACE, ETI_SPEC_AVAIL ) \ +template \ +struct TRSM< \ + Kokkos::View**, LAYOUTA, Kokkos::Device, \ + Kokkos::MemoryTraits >, \ + Kokkos::View**, LAYOUTB, Kokkos::Device, \ + Kokkos::MemoryTraits >, \ + true, ETI_SPEC_AVAIL> { \ + typedef Kokkos::complex SCALAR; \ + typedef Kokkos::View, \ + Kokkos::MemoryTraits > AViewType; \ + typedef Kokkos::View, \ + Kokkos::MemoryTraits > BViewType; \ + \ + static void \ + trsm (const char side[], \ + const char uplo[], \ + const char trans[], \ + const char diag[], \ + typename BViewType::const_value_type& alpha, \ + const AViewType& A, \ + const BViewType& B) { \ + \ + Kokkos::Profiling::pushRegion("KokkosBlas::trsm[TPL_BLAS,complex]"); \ + const int M = static_cast (B.extent(0)); \ + const int N = static_cast (B.extent(1)); \ + \ + bool A_is_ll = std::is_same::value; \ + bool B_is_ll = std::is_same::value; \ + \ + const int AST = A_is_ll?A.stride(1):A.stride(0), LDA = (AST == 0) ? 1 : AST; \ + const int BST = B_is_ll?B.stride(1):B.stride(0), LDB = (BST == 0) ? 1 : BST; \ + \ + char side_; \ + char uplo_; \ + \ + if(A_is_ll) { \ + if ((side[0]=='L')||(side[0]=='l')) \ + side_ = 'L'; \ + else \ + side_ = 'R'; \ + if ((uplo[0]=='L')||(uplo[0]=='l')) \ + uplo_ = 'L'; \ + else \ + uplo_ = 'U'; \ + } \ + else { \ + if ((side[0]=='L')||(side[0]=='l')) \ + side_ = 'R'; \ + else \ + side_ = 'L'; \ + if ((uplo[0]=='L')||(uplo[0]=='l')) \ + uplo_ = 'U'; \ + else \ + uplo_ = 'L'; \ + } \ + \ + const std::complex alpha_val = alpha; \ + if(A_is_ll) \ + HostBlas >::trsm(side_, uplo_, trans[0], diag[0], M, N, alpha_val, reinterpret_cast*>(A.data()), LDA, reinterpret_cast*>(B.data()), LDB); \ + else \ + HostBlas >::trsm(side_, uplo_, trans[0], diag[0], N, M, alpha_val, reinterpret_cast*>(A.data()), LDA, reinterpret_cast*>(B.data()), LDB); \ + Kokkos::Profiling::popRegion(); \ + } \ +}; \ + +#define KOKKOSBLAS3_CTRSM_BLAS( LAYOUTA, LAYOUTB, MEM_SPACE, ETI_SPEC_AVAIL ) \ +template \ +struct TRSM< \ + Kokkos::View**, LAYOUTA, Kokkos::Device, \ + Kokkos::MemoryTraits >, \ + Kokkos::View**, LAYOUTB, Kokkos::Device, \ + Kokkos::MemoryTraits >, \ + true, ETI_SPEC_AVAIL> { \ + typedef Kokkos::complex SCALAR; \ + typedef Kokkos::View, \ + Kokkos::MemoryTraits > AViewType; \ + typedef Kokkos::View, \ + Kokkos::MemoryTraits > BViewType; \ + \ + static void \ + trsm (const char side[], \ + const char uplo[], \ + const char trans[], \ + const char diag[], \ + typename BViewType::const_value_type& alpha, \ + const AViewType& A, \ + const BViewType& B) { \ + \ + Kokkos::Profiling::pushRegion("KokkosBlas::trsm[TPL_BLAS,complex]"); \ + const int M = static_cast (B.extent(0)); \ + const int N = static_cast (B.extent(1)); \ + \ + bool A_is_ll = std::is_same::value; \ + bool B_is_ll = std::is_same::value; \ + \ + const int AST = A_is_ll?A.stride(1):A.stride(0), LDA = (AST == 0) ? 1 : AST; \ + const int BST = B_is_ll?B.stride(1):B.stride(0), LDB = (BST == 0) ? 1 : BST; \ + \ + char side_; \ + char uplo_; \ + \ + if(A_is_ll) { \ + if ((side[0]=='L')||(side[0]=='l')) \ + side_ = 'L'; \ + else \ + side_ = 'R'; \ + if ((uplo[0]=='L')||(uplo[0]=='l')) \ + uplo_ = 'L'; \ + else \ + uplo_ = 'U'; \ + } \ + else { \ + if ((side[0]=='L')||(side[0]=='l')) \ + side_ = 'R'; \ + else \ + side_ = 'L'; \ + if ((uplo[0]=='L')||(uplo[0]=='l')) \ + uplo_ = 'U'; \ + else \ + uplo_ = 'L'; \ + } \ + \ + const std::complex alpha_val = alpha; \ + if(A_is_ll) \ + HostBlas >::trsm(side_, uplo_, trans[0], diag[0], M, N, alpha_val, reinterpret_cast*>(A.data()), LDA, reinterpret_cast*>(B.data()), LDB); \ + else \ + HostBlas >::trsm(side_, uplo_, trans[0], diag[0], N, M, alpha_val, reinterpret_cast*>(A.data()), LDA, reinterpret_cast*>(B.data()), LDB); \ + Kokkos::Profiling::popRegion(); \ + } \ +}; + +KOKKOSBLAS3_DTRSM_BLAS( Kokkos::LayoutLeft, Kokkos::LayoutLeft, Kokkos::HostSpace, true) +KOKKOSBLAS3_DTRSM_BLAS( Kokkos::LayoutLeft, Kokkos::LayoutLeft, Kokkos::HostSpace, false) +KOKKOSBLAS3_DTRSM_BLAS( Kokkos::LayoutRight, Kokkos::LayoutRight, Kokkos::HostSpace, true) +KOKKOSBLAS3_DTRSM_BLAS( Kokkos::LayoutRight, Kokkos::LayoutRight, Kokkos::HostSpace, false) + +KOKKOSBLAS3_STRSM_BLAS( Kokkos::LayoutLeft, Kokkos::LayoutLeft, Kokkos::HostSpace, true) +KOKKOSBLAS3_STRSM_BLAS( Kokkos::LayoutLeft, Kokkos::LayoutLeft, Kokkos::HostSpace, false) +KOKKOSBLAS3_STRSM_BLAS( Kokkos::LayoutRight, Kokkos::LayoutRight, Kokkos::HostSpace, true) +KOKKOSBLAS3_STRSM_BLAS( Kokkos::LayoutRight, Kokkos::LayoutRight, Kokkos::HostSpace, false) + +KOKKOSBLAS3_ZTRSM_BLAS( Kokkos::LayoutLeft, Kokkos::LayoutLeft, Kokkos::HostSpace, true) +KOKKOSBLAS3_ZTRSM_BLAS( Kokkos::LayoutLeft, Kokkos::LayoutLeft, Kokkos::HostSpace, false) +KOKKOSBLAS3_ZTRSM_BLAS( Kokkos::LayoutRight, Kokkos::LayoutRight, Kokkos::HostSpace, true) +KOKKOSBLAS3_ZTRSM_BLAS( Kokkos::LayoutRight, Kokkos::LayoutRight, Kokkos::HostSpace, false) + +KOKKOSBLAS3_CTRSM_BLAS( Kokkos::LayoutLeft, Kokkos::LayoutLeft, Kokkos::HostSpace, true) +KOKKOSBLAS3_CTRSM_BLAS( Kokkos::LayoutLeft, Kokkos::LayoutLeft, Kokkos::HostSpace, false) +KOKKOSBLAS3_CTRSM_BLAS( Kokkos::LayoutRight, Kokkos::LayoutRight, Kokkos::HostSpace, true) +KOKKOSBLAS3_CTRSM_BLAS( Kokkos::LayoutRight, Kokkos::LayoutRight, Kokkos::HostSpace, false) + +} +} +#endif // KOKKOSKERNELS_ENABLE_TPL_BLAS + +// cuBLAS +#ifdef KOKKOSKERNELS_ENABLE_TPL_CUBLAS +#include + +namespace KokkosBlas { +namespace Impl { + +#define KOKKOSBLAS3_DTRSM_CUBLAS( LAYOUTA, LAYOUTB, MEM_SPACE, ETI_SPEC_AVAIL ) \ +template \ +struct TRSM< \ + Kokkos::View, \ + Kokkos::MemoryTraits >, \ + Kokkos::View, \ + Kokkos::MemoryTraits >, \ + true, ETI_SPEC_AVAIL> { \ + typedef double SCALAR; \ + typedef Kokkos::View, \ + Kokkos::MemoryTraits > AViewType; \ + typedef Kokkos::View, \ + Kokkos::MemoryTraits > BViewType; \ + \ + static void \ + trsm (const char side[], \ + const char uplo[], \ + const char trans[], \ + const char diag[], \ + typename BViewType::const_value_type& alpha, \ + const AViewType& A, \ + const BViewType& B) { \ + \ + Kokkos::Profiling::pushRegion("KokkosBlas::trsm[TPL_CUBLAS,double]"); \ + const int M = static_cast (B.extent(0)); \ + const int N = static_cast (B.extent(1)); \ + \ + bool A_is_ll = std::is_same::value; \ + bool B_is_ll = std::is_same::value; \ + \ + const int AST = A_is_ll?A.stride(1):A.stride(0), LDA = (AST == 0) ? 1 : AST; \ + const int BST = B_is_ll?B.stride(1):B.stride(0), LDB = (BST == 0) ? 1 : BST; \ + \ + cublasSideMode_t side_; \ + cublasFillMode_t uplo_; \ + cublasOperation_t trans_; \ + cublasDiagType_t diag_; \ + \ + if(A_is_ll) { \ + if ((side[0]=='L')||(side[0]=='l')) \ + side_ = CUBLAS_SIDE_LEFT; \ + else \ + side_ = CUBLAS_SIDE_RIGHT; \ + if ((uplo[0]=='L')||(uplo[0]=='l')) \ + uplo_ = CUBLAS_FILL_MODE_LOWER; \ + else \ + uplo_ = CUBLAS_FILL_MODE_UPPER; \ + } \ + else { \ + if ((side[0]=='L')||(side[0]=='l')) \ + side_ = CUBLAS_SIDE_RIGHT; \ + else \ + side_ = CUBLAS_SIDE_LEFT; \ + if ((uplo[0]=='L')||(uplo[0]=='l')) \ + uplo_ = CUBLAS_FILL_MODE_UPPER; \ + else \ + uplo_ = CUBLAS_FILL_MODE_LOWER; \ + } \ + \ + if ((trans[0]=='N')||(trans[0]=='n')) \ + trans_ = CUBLAS_OP_N; \ + else if ((trans[0]=='T')||(trans[0]=='t')) \ + trans_ = CUBLAS_OP_T; \ + else \ + trans_ = CUBLAS_OP_C; \ + if ((diag[0]=='U')||(diag[0]=='u')) \ + diag_ = CUBLAS_DIAG_UNIT; \ + else \ + diag_ = CUBLAS_DIAG_NON_UNIT; \ + \ + KokkosBlas::Impl::CudaBlasSingleton & s = KokkosBlas::Impl::CudaBlasSingleton::singleton(); \ + if(A_is_ll) \ + cublasDtrsm(s.handle, side_, uplo_, trans_, diag_, M, N, &alpha, A.data(), LDA, B.data(), LDB); \ + else \ + cublasDtrsm(s.handle, side_, uplo_, trans_, diag_, N, M, &alpha, A.data(), LDA, B.data(), LDB); \ + \ + Kokkos::Profiling::popRegion(); \ + } \ +}; + +#define KOKKOSBLAS3_STRSM_CUBLAS( LAYOUTA, LAYOUTB, MEM_SPACE, ETI_SPEC_AVAIL ) \ +template \ +struct TRSM< \ + Kokkos::View, \ + Kokkos::MemoryTraits >, \ + Kokkos::View, \ + Kokkos::MemoryTraits >, \ + true, ETI_SPEC_AVAIL> { \ + typedef float SCALAR; \ + typedef Kokkos::View, \ + Kokkos::MemoryTraits > AViewType; \ + typedef Kokkos::View, \ + Kokkos::MemoryTraits > BViewType; \ + \ + static void \ + trsm (const char side[], \ + const char uplo[], \ + const char trans[], \ + const char diag[], \ + typename BViewType::const_value_type& alpha, \ + const AViewType& A, \ + const BViewType& B) { \ + \ + Kokkos::Profiling::pushRegion("KokkosBlas::trsm[TPL_CUBLAS,float]"); \ + const int M = static_cast (B.extent(0)); \ + const int N = static_cast (B.extent(1)); \ + \ + bool A_is_ll = std::is_same::value; \ + bool B_is_ll = std::is_same::value; \ + \ + const int AST = A_is_ll?A.stride(1):A.stride(0), LDA = (AST == 0) ? 1 : AST; \ + const int BST = B_is_ll?B.stride(1):B.stride(0), LDB = (BST == 0) ? 1 : BST; \ + \ + cublasSideMode_t side_; \ + cublasFillMode_t uplo_; \ + cublasOperation_t trans_; \ + cublasDiagType_t diag_; \ + \ + if(A_is_ll) { \ + if ((side[0]=='L')||(side[0]=='l')) \ + side_ = CUBLAS_SIDE_LEFT; \ + else \ + side_ = CUBLAS_SIDE_RIGHT; \ + if ((uplo[0]=='L')||(uplo[0]=='l')) \ + uplo_ = CUBLAS_FILL_MODE_LOWER; \ + else \ + uplo_ = CUBLAS_FILL_MODE_UPPER; \ + } \ + else { \ + if ((side[0]=='L')||(side[0]=='l')) \ + side_ = CUBLAS_SIDE_RIGHT; \ + else \ + side_ = CUBLAS_SIDE_LEFT; \ + if ((uplo[0]=='L')||(uplo[0]=='l')) \ + uplo_ = CUBLAS_FILL_MODE_UPPER; \ + else \ + uplo_ = CUBLAS_FILL_MODE_LOWER; \ + } \ + \ + if ((trans[0]=='N')||(trans[0]=='n')) \ + trans_ = CUBLAS_OP_N; \ + else if ((trans[0]=='T')||(trans[0]=='t')) \ + trans_ = CUBLAS_OP_T; \ + else \ + trans_ = CUBLAS_OP_C; \ + if ((diag[0]=='U')||(diag[0]=='u')) \ + diag_ = CUBLAS_DIAG_UNIT; \ + else \ + diag_ = CUBLAS_DIAG_NON_UNIT; \ + \ + KokkosBlas::Impl::CudaBlasSingleton & s = KokkosBlas::Impl::CudaBlasSingleton::singleton(); \ + if(A_is_ll) \ + cublasStrsm(s.handle, side_, uplo_, trans_, diag_, M, N, &alpha, A.data(), LDA, B.data(), LDB); \ + else \ + cublasStrsm(s.handle, side_, uplo_, trans_, diag_, N, M, &alpha, A.data(), LDA, B.data(), LDB); \ + \ + Kokkos::Profiling::popRegion(); \ + } \ +}; + +#define KOKKOSBLAS3_ZTRSM_CUBLAS( LAYOUTA, LAYOUTB, MEM_SPACE, ETI_SPEC_AVAIL ) \ +template \ +struct TRSM< \ + Kokkos::View**, LAYOUTA, Kokkos::Device, \ + Kokkos::MemoryTraits >, \ + Kokkos::View**, LAYOUTB, Kokkos::Device, \ + Kokkos::MemoryTraits >, \ + true, ETI_SPEC_AVAIL> { \ + typedef Kokkos::complex SCALAR; \ + typedef Kokkos::View, \ + Kokkos::MemoryTraits > AViewType; \ + typedef Kokkos::View, \ + Kokkos::MemoryTraits > BViewType; \ + \ + static void \ + trsm (const char side[], \ + const char uplo[], \ + const char trans[], \ + const char diag[], \ + typename BViewType::const_value_type& alpha, \ + const AViewType& A, \ + const BViewType& B) { \ + \ + Kokkos::Profiling::pushRegion("KokkosBlas::trsm[TPL_CUBLAS,complex]"); \ + const int M = static_cast (B.extent(0)); \ + const int N = static_cast (B.extent(1)); \ + \ + bool A_is_ll = std::is_same::value; \ + bool B_is_ll = std::is_same::value; \ + \ + const int AST = A_is_ll?A.stride(1):A.stride(0), LDA = (AST == 0) ? 1 : AST; \ + const int BST = B_is_ll?B.stride(1):B.stride(0), LDB = (BST == 0) ? 1 : BST; \ + \ + cublasSideMode_t side_; \ + cublasFillMode_t uplo_; \ + cublasOperation_t trans_; \ + cublasDiagType_t diag_; \ + \ + if(A_is_ll) { \ + if ((side[0]=='L')||(side[0]=='l')) \ + side_ = CUBLAS_SIDE_LEFT; \ + else \ + side_ = CUBLAS_SIDE_RIGHT; \ + if ((uplo[0]=='L')||(uplo[0]=='l')) \ + uplo_ = CUBLAS_FILL_MODE_LOWER; \ + else \ + uplo_ = CUBLAS_FILL_MODE_UPPER; \ + } \ + else { \ + if ((side[0]=='L')||(side[0]=='l')) \ + side_ = CUBLAS_SIDE_RIGHT; \ + else \ + side_ = CUBLAS_SIDE_LEFT; \ + if ((uplo[0]=='L')||(uplo[0]=='l')) \ + uplo_ = CUBLAS_FILL_MODE_UPPER; \ + else \ + uplo_ = CUBLAS_FILL_MODE_LOWER; \ + } \ + \ + if ((trans[0]=='N')||(trans[0]=='n')) \ + trans_ = CUBLAS_OP_N; \ + else if ((trans[0]=='T')||(trans[0]=='t')) \ + trans_ = CUBLAS_OP_T; \ + else \ + trans_ = CUBLAS_OP_C; \ + if ((diag[0]=='U')||(diag[0]=='u')) \ + diag_ = CUBLAS_DIAG_UNIT; \ + else \ + diag_ = CUBLAS_DIAG_NON_UNIT; \ + \ + KokkosBlas::Impl::CudaBlasSingleton & s = KokkosBlas::Impl::CudaBlasSingleton::singleton(); \ + if(A_is_ll) \ + cublasZtrsm(s.handle, side_, uplo_, trans_, diag_, M, N, reinterpret_cast(&alpha), reinterpret_cast(A.data()), LDA, reinterpret_cast(B.data()), LDB); \ + else \ + cublasZtrsm(s.handle, side_, uplo_, trans_, diag_, N, M, reinterpret_cast(&alpha), reinterpret_cast(A.data()), LDA, reinterpret_cast(B.data()), LDB); \ + \ + Kokkos::Profiling::popRegion(); \ + } \ +}; \ + +#define KOKKOSBLAS3_CTRSM_CUBLAS( LAYOUTA, LAYOUTB, MEM_SPACE, ETI_SPEC_AVAIL ) \ +template \ +struct TRSM< \ + Kokkos::View**, LAYOUTA, Kokkos::Device, \ + Kokkos::MemoryTraits >, \ + Kokkos::View**, LAYOUTB, Kokkos::Device, \ + Kokkos::MemoryTraits >, \ + true, ETI_SPEC_AVAIL> { \ + typedef Kokkos::complex SCALAR; \ + typedef Kokkos::View, \ + Kokkos::MemoryTraits > AViewType; \ + typedef Kokkos::View, \ + Kokkos::MemoryTraits > BViewType; \ + \ + static void \ + trsm (const char side[], \ + const char uplo[], \ + const char trans[], \ + const char diag[], \ + typename BViewType::const_value_type& alpha, \ + const AViewType& A, \ + const BViewType& B) { \ + \ + Kokkos::Profiling::pushRegion("KokkosBlas::trsm[TPL_CUBLAS,complex]"); \ + const int M = static_cast (B.extent(0)); \ + const int N = static_cast (B.extent(1)); \ + \ + bool A_is_ll = std::is_same::value; \ + bool B_is_ll = std::is_same::value; \ + \ + const int AST = A_is_ll?A.stride(1):A.stride(0), LDA = (AST == 0) ? 1 : AST; \ + const int BST = B_is_ll?B.stride(1):B.stride(0), LDB = (BST == 0) ? 1 : BST; \ + \ + cublasSideMode_t side_; \ + cublasFillMode_t uplo_; \ + cublasOperation_t trans_; \ + cublasDiagType_t diag_; \ + \ + if(A_is_ll) { \ + if ((side[0]=='L')||(side[0]=='l')) \ + side_ = CUBLAS_SIDE_LEFT; \ + else \ + side_ = CUBLAS_SIDE_RIGHT; \ + if ((uplo[0]=='L')||(uplo[0]=='l')) \ + uplo_ = CUBLAS_FILL_MODE_LOWER; \ + else \ + uplo_ = CUBLAS_FILL_MODE_UPPER; \ + } \ + else { \ + if ((side[0]=='L')||(side[0]=='l')) \ + side_ = CUBLAS_SIDE_RIGHT; \ + else \ + side_ = CUBLAS_SIDE_LEFT; \ + if ((uplo[0]=='L')||(uplo[0]=='l')) \ + uplo_ = CUBLAS_FILL_MODE_UPPER; \ + else \ + uplo_ = CUBLAS_FILL_MODE_LOWER; \ + } \ + \ + if ((trans[0]=='N')||(trans[0]=='n')) \ + trans_ = CUBLAS_OP_N; \ + else if ((trans[0]=='T')||(trans[0]=='t')) \ + trans_ = CUBLAS_OP_T; \ + else \ + trans_ = CUBLAS_OP_C; \ + if ((diag[0]=='U')||(diag[0]=='u')) \ + diag_ = CUBLAS_DIAG_UNIT; \ + else \ + diag_ = CUBLAS_DIAG_NON_UNIT; \ + \ + KokkosBlas::Impl::CudaBlasSingleton & s = KokkosBlas::Impl::CudaBlasSingleton::singleton(); \ + if(A_is_ll) \ + cublasCtrsm(s.handle, side_, uplo_, trans_, diag_, M, N, reinterpret_cast(&alpha), reinterpret_cast(A.data()), LDA, reinterpret_cast(B.data()), LDB); \ + else \ + cublasCtrsm(s.handle, side_, uplo_, trans_, diag_, N, M, reinterpret_cast(&alpha), reinterpret_cast(A.data()), LDA, reinterpret_cast(B.data()), LDB); \ + \ + Kokkos::Profiling::popRegion(); \ + } \ +}; + +KOKKOSBLAS3_DTRSM_CUBLAS( Kokkos::LayoutLeft, Kokkos::LayoutLeft, Kokkos::CudaSpace, true) +KOKKOSBLAS3_DTRSM_CUBLAS( Kokkos::LayoutLeft, Kokkos::LayoutLeft, Kokkos::CudaSpace, false) +KOKKOSBLAS3_DTRSM_CUBLAS( Kokkos::LayoutRight, Kokkos::LayoutRight, Kokkos::CudaSpace, true) +KOKKOSBLAS3_DTRSM_CUBLAS( Kokkos::LayoutRight, Kokkos::LayoutRight, Kokkos::CudaSpace, false) + +KOKKOSBLAS3_DTRSM_CUBLAS( Kokkos::LayoutLeft, Kokkos::LayoutLeft, Kokkos::CudaUVMSpace, true) +KOKKOSBLAS3_DTRSM_CUBLAS( Kokkos::LayoutLeft, Kokkos::LayoutLeft, Kokkos::CudaUVMSpace, false) +KOKKOSBLAS3_DTRSM_CUBLAS( Kokkos::LayoutRight, Kokkos::LayoutRight, Kokkos::CudaUVMSpace, true) +KOKKOSBLAS3_DTRSM_CUBLAS( Kokkos::LayoutRight, Kokkos::LayoutRight, Kokkos::CudaUVMSpace, false) + +KOKKOSBLAS3_STRSM_CUBLAS( Kokkos::LayoutLeft, Kokkos::LayoutLeft, Kokkos::CudaSpace, true) +KOKKOSBLAS3_STRSM_CUBLAS( Kokkos::LayoutLeft, Kokkos::LayoutLeft, Kokkos::CudaSpace, false) +KOKKOSBLAS3_STRSM_CUBLAS( Kokkos::LayoutRight, Kokkos::LayoutRight, Kokkos::CudaSpace, true) +KOKKOSBLAS3_STRSM_CUBLAS( Kokkos::LayoutRight, Kokkos::LayoutRight, Kokkos::CudaSpace, false) + +KOKKOSBLAS3_STRSM_CUBLAS( Kokkos::LayoutLeft, Kokkos::LayoutLeft, Kokkos::CudaUVMSpace, true) +KOKKOSBLAS3_STRSM_CUBLAS( Kokkos::LayoutLeft, Kokkos::LayoutLeft, Kokkos::CudaUVMSpace, false) +KOKKOSBLAS3_STRSM_CUBLAS( Kokkos::LayoutRight, Kokkos::LayoutRight, Kokkos::CudaUVMSpace, true) +KOKKOSBLAS3_STRSM_CUBLAS( Kokkos::LayoutRight, Kokkos::LayoutRight, Kokkos::CudaUVMSpace, false) + +KOKKOSBLAS3_ZTRSM_CUBLAS( Kokkos::LayoutLeft, Kokkos::LayoutLeft, Kokkos::CudaSpace, true) +KOKKOSBLAS3_ZTRSM_CUBLAS( Kokkos::LayoutLeft, Kokkos::LayoutLeft, Kokkos::CudaSpace, false) +KOKKOSBLAS3_ZTRSM_CUBLAS( Kokkos::LayoutRight, Kokkos::LayoutRight, Kokkos::CudaSpace, true) +KOKKOSBLAS3_ZTRSM_CUBLAS( Kokkos::LayoutRight, Kokkos::LayoutRight, Kokkos::CudaSpace, false) + +KOKKOSBLAS3_ZTRSM_CUBLAS( Kokkos::LayoutLeft, Kokkos::LayoutLeft, Kokkos::CudaUVMSpace, true) +KOKKOSBLAS3_ZTRSM_CUBLAS( Kokkos::LayoutLeft, Kokkos::LayoutLeft, Kokkos::CudaUVMSpace, false) +KOKKOSBLAS3_ZTRSM_CUBLAS( Kokkos::LayoutRight, Kokkos::LayoutRight, Kokkos::CudaUVMSpace, true) +KOKKOSBLAS3_ZTRSM_CUBLAS( Kokkos::LayoutRight, Kokkos::LayoutRight, Kokkos::CudaUVMSpace, false) + +KOKKOSBLAS3_CTRSM_CUBLAS( Kokkos::LayoutLeft, Kokkos::LayoutLeft, Kokkos::CudaSpace, true) +KOKKOSBLAS3_CTRSM_CUBLAS( Kokkos::LayoutLeft, Kokkos::LayoutLeft, Kokkos::CudaSpace, false) +KOKKOSBLAS3_CTRSM_CUBLAS( Kokkos::LayoutRight, Kokkos::LayoutRight, Kokkos::CudaSpace, true) +KOKKOSBLAS3_CTRSM_CUBLAS( Kokkos::LayoutRight, Kokkos::LayoutRight, Kokkos::CudaSpace, false) + +KOKKOSBLAS3_CTRSM_CUBLAS( Kokkos::LayoutLeft, Kokkos::LayoutLeft, Kokkos::CudaUVMSpace, true) +KOKKOSBLAS3_CTRSM_CUBLAS( Kokkos::LayoutLeft, Kokkos::LayoutLeft, Kokkos::CudaUVMSpace, false) +KOKKOSBLAS3_CTRSM_CUBLAS( Kokkos::LayoutRight, Kokkos::LayoutRight, Kokkos::CudaUVMSpace, true) +KOKKOSBLAS3_CTRSM_CUBLAS( Kokkos::LayoutRight, Kokkos::LayoutRight, Kokkos::CudaUVMSpace, false) + +} +} +#endif // KOKKOSKERNELS_ENABLE_TPL_CUBLAS + +#endif diff --git a/src/impl/tpls/KokkosBlas_Host_tpl.cpp b/src/impl/tpls/KokkosBlas_Host_tpl.cpp index bed6c88504..2b7e6a2f61 100644 --- a/src/impl/tpls/KokkosBlas_Host_tpl.cpp +++ b/src/impl/tpls/KokkosBlas_Host_tpl.cpp @@ -225,6 +225,31 @@ extern "C" { const std::complex*, /* */ std::complex*, int* ); + /// + /// Trmm + /// + + void F77_BLAS_MANGLE(strmm,STRMM)( const char*, const char*, const char*, const char*, + int*, int*, + const float*, + const float*, int*, + /* */ float*, int* ); + void F77_BLAS_MANGLE(dtrmm,DTRMM)( const char*, const char*, const char*, const char*, + int*, int*, + const double*, + const double*, int*, + /* */ double*, int* ); + void F77_BLAS_MANGLE(ctrmm,CTRMM)( const char*, const char*, const char*, const char*, + int*, int*, + const std::complex*, + const std::complex*, int*, + /* */ std::complex*, int* ); + void F77_BLAS_MANGLE(ztrmm,ZTRMM)( const char*, const char*, const char*, const char*, + int*, int*, + const std::complex*, + const std::complex*, int*, + /* */ std::complex*, int* ); + /// /// Trsm /// @@ -335,6 +360,11 @@ extern "C" { #define F77_FUNC_CHERK F77_BLAS_MANGLE(cherk,CHERK) #define F77_FUNC_ZHERK F77_BLAS_MANGLE(zherk,ZHERK) +#define F77_FUNC_STRMM F77_BLAS_MANGLE(strmm,STRMM) +#define F77_FUNC_DTRMM F77_BLAS_MANGLE(dtrmm,DTRMM) +#define F77_FUNC_CTRMM F77_BLAS_MANGLE(ctrmm,CTRMM) +#define F77_FUNC_ZTRMM F77_BLAS_MANGLE(ztrmm,ZTRMM) + #define F77_FUNC_STRSM F77_BLAS_MANGLE(strsm,STRSM) #define F77_FUNC_DTRSM F77_BLAS_MANGLE(dtrsm,DTRSM) #define F77_FUNC_CTRSM F77_BLAS_MANGLE(ctrsm,CTRSM) @@ -454,6 +484,19 @@ namespace KokkosBlas { } template<> void + HostBlas::trmm(const char side, const char uplo, const char transa, const char diag, + int m, int n, + const float alpha, + const float *a, int lda, + /* */ float *b, int ldb) { + F77_FUNC_STRMM(&side, &uplo, &transa, &diag, + &m, &n, + &alpha, + a, &lda, + b, &ldb); + } + template<> + void HostBlas::trsm(const char side, const char uplo, const char transa, const char diag, int m, int n, const float alpha, @@ -581,6 +624,19 @@ namespace KokkosBlas { } template<> void + HostBlas::trmm(const char side, const char uplo, const char transa, const char diag, + int m, int n, + const double alpha, + const double *a, int lda, + /* */ double *b, int ldb) { + F77_FUNC_DTRMM(&side, &uplo, &transa, &diag, + &m, &n, + &alpha, + a, &lda, + b, &ldb); + } + template<> + void HostBlas::trsm(const char side, const char uplo, const char transa, const char diag, int m, int n, const double alpha, @@ -715,6 +771,19 @@ namespace KokkosBlas { } template<> void + HostBlas >::trmm(const char side, const char uplo, const char transa, const char diag, + int m, int n, + const std::complex alpha, + const std::complex *a, int lda, + /* */ std::complex *b, int ldb) { + F77_FUNC_CTRMM(&side, &uplo, &transa, &diag, + &m, &n, + &alpha, + (const std::complex*)a, &lda, + ( std::complex*)b, &ldb); + } + template<> + void HostBlas >::trsm(const char side, const char uplo, const char transa, const char diag, int m, int n, const std::complex alpha, @@ -850,6 +919,19 @@ namespace KokkosBlas { } template<> void + HostBlas >::trmm(const char side, const char uplo, const char transa, const char diag, + int m, int n, + const std::complex alpha, + const std::complex *a, int lda, + /* */ std::complex *b, int ldb) { + F77_FUNC_ZTRMM(&side, &uplo, &transa, &diag, + &m, &n, + &alpha, + (const std::complex*)a, &lda, + ( std::complex*)b, &ldb); + } + template<> + void HostBlas >::trsm(const char side, const char uplo, const char transa, const char diag, int m, int n, const std::complex alpha, diff --git a/src/impl/tpls/KokkosBlas_Host_tpl.hpp b/src/impl/tpls/KokkosBlas_Host_tpl.hpp index 4ab2fd2c1c..46227a5155 100644 --- a/src/impl/tpls/KokkosBlas_Host_tpl.hpp +++ b/src/impl/tpls/KokkosBlas_Host_tpl.hpp @@ -79,6 +79,13 @@ namespace KokkosBlas { const T beta, /* */ T *c, int ldc); + static + void trmm(const char side, const char uplo, const char transa, const char diag, + int m, int n, + const T alpha, + const T *a, int lda, + /* */ T *b, int ldb); + static void trsm(const char side, const char uplo, const char transa, const char diag, int m, int n, diff --git a/unit_test/Makefile b/unit_test/Makefile index a0832edd2b..f729c22e44 100644 --- a/unit_test/Makefile +++ b/unit_test/Makefile @@ -113,6 +113,7 @@ ifeq ($(KOKKOSKERNELS_INTERNAL_TEST_OPENMP), 1) OBJ_OPENMP += Test_OpenMP_Blas2_gemv.o OBJ_OPENMP += Test_OpenMP_Blas2_team_gemv.o OBJ_OPENMP += Test_OpenMP_Blas3_gemm.o + OBJ_OPENMP += Test_OpenMP_Blas3_trsm.o OBJ_OPENMP += Test_OpenMP_Blas_gesv.o OBJ_OPENMP += Test_OpenMP_Sparse_spmv.o OBJ_OPENMP += Test_OpenMP_Sparse_trsv.o @@ -229,6 +230,7 @@ ifeq ($(KOKKOSKERNELS_INTERNAL_TEST_CUDA), 1) OBJ_CUDA += Test_Cuda_Blas2_gemv.o OBJ_CUDA += Test_Cuda_Blas2_team_gemv.o OBJ_CUDA += Test_Cuda_Blas3_gemm.o #Not yet ready need to figure out how to handle CUBLAS + OBJ_CUDA += Test_Cuda_Blas3_trsm.o OBJ_CUDA += Test_Cuda_Blas_gesv.o OBJ_CUDA += Test_Cuda_Sparse_spmv.o #OBJ_CUDA += Test_Cuda_Sparse_trsv.o #removing trsv from cuda unit test as it runs only sequential. @@ -338,6 +340,7 @@ ifeq ($(KOKKOSKERNELS_INTERNAL_TEST_SERIAL), 1) OBJ_SERIAL += Test_Serial_Blas2_gemv.o OBJ_SERIAL += Test_Serial_Blas2_team_gemv.o OBJ_SERIAL += Test_Serial_Blas3_gemm.o + OBJ_SERIAL += Test_Serial_Blas3_trsm.o OBJ_SERIAL += Test_Serial_Blas_gesv.o OBJ_SERIAL += Test_Serial_Sparse_spmv.o OBJ_SERIAL += Test_Serial_Sparse_trsv.o @@ -454,6 +457,7 @@ ifeq ($(KOKKOSKERNELS_INTERNAL_TEST_THREADS), 1) OBJ_THREADS += Test_Threads_Blas2_gemv.o OBJ_THREADS += Test_Threads_Blas2_team_gemv.o OBJ_THREADS += Test_Threads_Blas3_gemm.o + OBJ_THREADS += Test_Threads_Blas3_trsm.o OBJ_THREADS += Test_Threads_Blas_gesv.o OBJ_THREADS += Test_Threads_Sparse_spmv.o OBJ_THREADS += Test_Threads_Sparse_trsv.o diff --git a/unit_test/blas/Test_Blas3_trsm.hpp b/unit_test/blas/Test_Blas3_trsm.hpp new file mode 100644 index 0000000000..0d82d926a1 --- /dev/null +++ b/unit_test/blas/Test_Blas3_trsm.hpp @@ -0,0 +1,656 @@ +#include +#include +#include +#include +#include + +namespace Test { + + template + struct UnitDiagTRSM { + ViewTypeA A_; + using ScalarA = typename ViewTypeA::value_type; + + UnitDiagTRSM (const ViewTypeA& A) : A_(A) {} + + KOKKOS_INLINE_FUNCTION + void operator() (const int& i) const { + A_(i,i) = ScalarA(1); + } + }; + template + struct NonUnitDiagTRSM { + ViewTypeA A_; + using ScalarA = typename ViewTypeA::value_type; + + NonUnitDiagTRSM (const ViewTypeA& A) : A_(A) {} + + KOKKOS_INLINE_FUNCTION + void operator() (const int& i) const { + A_(i,i) = A_(i,i)*1000; + } + }; + + //For convenient testing purpose, wrappers of BLAS trmm and + //cuBLAS trmm are used + //float + template + void trmm_wrapper (const char side[], + const char uplo[], + const char trans[], + const char diag[], + float& alpha, + const ViewTypeA& A, + const ViewTypeB& B) + { + const int M = static_cast (B.extent(0)); + const int N = static_cast (B.extent(1)); + + bool A_is_ll = std::is_same::value; + bool B_is_ll = std::is_same::value; + + const int AST = A_is_ll?A.stride(1):A.stride(0), LDA = (AST == 0) ? 1 : AST; + const int BST = B_is_ll?B.stride(1):B.stride(0), LDB = (BST == 0) ? 1 : BST; + +#ifdef KOKKOSKERNELS_ENABLE_TPL_CUBLAS + if( std::is_same< ExecSpace, Kokkos::Cuda >::value ) { + cublasHandle_t handle; + cublasStatus_t stat = cublasCreate(&handle); + if (stat != CUBLAS_STATUS_SUCCESS) + Kokkos::abort("CUBLAS initialization failed\n"); + + cublasSideMode_t side_; + cublasFillMode_t uplo_; + cublasOperation_t trans_; + cublasDiagType_t diag_; + + if(A_is_ll) { + if ((side[0]=='L')||(side[0]=='l')) side_ = CUBLAS_SIDE_LEFT; + else side_ = CUBLAS_SIDE_RIGHT; + if ((uplo[0]=='L')||(uplo[0]=='l')) uplo_ = CUBLAS_FILL_MODE_LOWER; + else uplo_ = CUBLAS_FILL_MODE_UPPER; + } else { + if ((side[0]=='L')||(side[0]=='l')) side_ = CUBLAS_SIDE_RIGHT; + else side_ = CUBLAS_SIDE_LEFT; + if ((uplo[0]=='L')||(uplo[0]=='l')) uplo_ = CUBLAS_FILL_MODE_UPPER; + else uplo_ = CUBLAS_FILL_MODE_LOWER; + } + if ((trans[0]=='N')||(trans[0]=='n')) trans_ = CUBLAS_OP_N; + else if ((trans[0]=='T')||(trans[0]=='t')) trans_ = CUBLAS_OP_T; + else trans_ = CUBLAS_OP_C; + if ((diag[0]=='U')||(diag[0]=='u')) diag_ = CUBLAS_DIAG_UNIT; + else diag_ = CUBLAS_DIAG_NON_UNIT; + + if(A_is_ll) + cublasStrmm(handle, side_, uplo_, trans_, diag_, M, N, &alpha, A.data(), LDA, B.data(), LDB, B.data(), LDB); + else + cublasStrmm(handle, side_, uplo_, trans_, diag_, N, M, &alpha, A.data(), LDA, B.data(), LDB, B.data(), LDB); + + cublasDestroy(handle); + } +#endif +#ifdef KOKKOSKERNELS_ENABLE_TPL_BLAS + if( std::is_same< MemSpace, Kokkos::HostSpace >::value ) { + char side_; + char uplo_; + + if(A_is_ll) { + if ((side[0]=='L')||(side[0]=='l')) side_ = 'L'; + else side_ = 'R'; + if ((uplo[0]=='L')||(uplo[0]=='l')) uplo_ = 'L'; + else uplo_ = 'U'; + } else { + if ((side[0]=='L')||(side[0]=='l')) side_ = 'R'; + else side_ = 'L'; + if ((uplo[0]=='L')||(uplo[0]=='l')) uplo_ = 'U'; + else uplo_ = 'L'; + } + + if(A_is_ll) + KokkosBlas::Impl::HostBlas::trmm(side_, uplo_, trans[0], diag[0], M, N, alpha, A.data(), LDA, B.data(), LDB); + else + KokkosBlas::Impl::HostBlas::trmm(side_, uplo_, trans[0], diag[0], N, M, alpha, A.data(), LDA, B.data(), LDB); + } +#endif + } + //double + template + void trmm_wrapper (const char side[], + const char uplo[], + const char trans[], + const char diag[], + double& alpha, + const ViewTypeA& A, + const ViewTypeB& B) + { + const int M = static_cast (B.extent(0)); + const int N = static_cast (B.extent(1)); + + bool A_is_ll = std::is_same::value; + bool B_is_ll = std::is_same::value; + + const int AST = A_is_ll?A.stride(1):A.stride(0), LDA = (AST == 0) ? 1 : AST; + const int BST = B_is_ll?B.stride(1):B.stride(0), LDB = (BST == 0) ? 1 : BST; + +#ifdef KOKKOSKERNELS_ENABLE_TPL_CUBLAS + if( std::is_same< ExecSpace, Kokkos::Cuda >::value ) { + cublasHandle_t handle; + cublasStatus_t stat = cublasCreate(&handle); + if (stat != CUBLAS_STATUS_SUCCESS) + Kokkos::abort("CUBLAS initialization failed\n"); + + cublasSideMode_t side_; + cublasFillMode_t uplo_; + cublasOperation_t trans_; + cublasDiagType_t diag_; + + if(A_is_ll) { + if ((side[0]=='L')||(side[0]=='l')) side_ = CUBLAS_SIDE_LEFT; + else side_ = CUBLAS_SIDE_RIGHT; + if ((uplo[0]=='L')||(uplo[0]=='l')) uplo_ = CUBLAS_FILL_MODE_LOWER; + else uplo_ = CUBLAS_FILL_MODE_UPPER; + } else { + if ((side[0]=='L')||(side[0]=='l')) side_ = CUBLAS_SIDE_RIGHT; + else side_ = CUBLAS_SIDE_LEFT; + if ((uplo[0]=='L')||(uplo[0]=='l')) uplo_ = CUBLAS_FILL_MODE_UPPER; + else uplo_ = CUBLAS_FILL_MODE_LOWER; + } + if ((trans[0]=='N')||(trans[0]=='n')) trans_ = CUBLAS_OP_N; + else if ((trans[0]=='T')||(trans[0]=='t')) trans_ = CUBLAS_OP_T; + else trans_ = CUBLAS_OP_C; + if ((diag[0]=='U')||(diag[0]=='u')) diag_ = CUBLAS_DIAG_UNIT; + else diag_ = CUBLAS_DIAG_NON_UNIT; + + if(A_is_ll) + cublasDtrmm(handle, side_, uplo_, trans_, diag_, M, N, &alpha, A.data(), LDA, B.data(), LDB, B.data(), LDB); + else + cublasDtrmm(handle, side_, uplo_, trans_, diag_, N, M, &alpha, A.data(), LDA, B.data(), LDB, B.data(), LDB); + + cublasDestroy(handle); + } +#endif +#ifdef KOKKOSKERNELS_ENABLE_TPL_BLAS + if( std::is_same< MemSpace, Kokkos::HostSpace >::value ) { + char side_; + char uplo_; + + if(A_is_ll) { + if ((side[0]=='L')||(side[0]=='l')) side_ = 'L'; + else side_ = 'R'; + if ((uplo[0]=='L')||(uplo[0]=='l')) uplo_ = 'L'; + else uplo_ = 'U'; + } else { + if ((side[0]=='L')||(side[0]=='l')) side_ = 'R'; + else side_ = 'L'; + if ((uplo[0]=='L')||(uplo[0]=='l')) uplo_ = 'U'; + else uplo_ = 'L'; + } + + if(A_is_ll) + KokkosBlas::Impl::HostBlas::trmm(side_, uplo_, trans[0], diag[0], M, N, alpha, A.data(), LDA, B.data(), LDB); + else + KokkosBlas::Impl::HostBlas::trmm(side_, uplo_, trans[0], diag[0], N, M, alpha, A.data(), LDA, B.data(), LDB); + } +#endif + } + //Kokkos::complex + template + void trmm_wrapper (const char side[], + const char uplo[], + const char trans[], + const char diag[], + Kokkos::complex& alpha, + const ViewTypeA& A, + const ViewTypeB& B) + { + const int M = static_cast (B.extent(0)); + const int N = static_cast (B.extent(1)); + + bool A_is_ll = std::is_same::value; + bool B_is_ll = std::is_same::value; + + const int AST = A_is_ll?A.stride(1):A.stride(0), LDA = (AST == 0) ? 1 : AST; + const int BST = B_is_ll?B.stride(1):B.stride(0), LDB = (BST == 0) ? 1 : BST; + +#ifdef KOKKOSKERNELS_ENABLE_TPL_CUBLAS + if( std::is_same< ExecSpace, Kokkos::Cuda >::value ) { + cublasHandle_t handle; + cublasStatus_t stat = cublasCreate(&handle); + if (stat != CUBLAS_STATUS_SUCCESS) + Kokkos::abort("CUBLAS initialization failed\n"); + + cublasSideMode_t side_; + cublasFillMode_t uplo_; + cublasOperation_t trans_; + cublasDiagType_t diag_; + + if(A_is_ll) { + if ((side[0]=='L')||(side[0]=='l')) side_ = CUBLAS_SIDE_LEFT; + else side_ = CUBLAS_SIDE_RIGHT; + if ((uplo[0]=='L')||(uplo[0]=='l')) uplo_ = CUBLAS_FILL_MODE_LOWER; + else uplo_ = CUBLAS_FILL_MODE_UPPER; + } else { + if ((side[0]=='L')||(side[0]=='l')) side_ = CUBLAS_SIDE_RIGHT; + else side_ = CUBLAS_SIDE_LEFT; + if ((uplo[0]=='L')||(uplo[0]=='l')) uplo_ = CUBLAS_FILL_MODE_UPPER; + else uplo_ = CUBLAS_FILL_MODE_LOWER; + } + if ((trans[0]=='N')||(trans[0]=='n')) trans_ = CUBLAS_OP_N; + else if ((trans[0]=='T')||(trans[0]=='t')) trans_ = CUBLAS_OP_T; + else trans_ = CUBLAS_OP_C; + if ((diag[0]=='U')||(diag[0]=='u')) diag_ = CUBLAS_DIAG_UNIT; + else diag_ = CUBLAS_DIAG_NON_UNIT; + + if(A_is_ll) + cublasCtrmm(handle, side_, uplo_, trans_, diag_, M, N, + reinterpret_cast(&alpha), + reinterpret_cast(A.data()), LDA, + reinterpret_cast(B.data()), LDB, + reinterpret_cast< cuComplex*>(B.data()), LDB); + else + cublasCtrmm(handle, side_, uplo_, trans_, diag_, N, M, + reinterpret_cast(&alpha), + reinterpret_cast(A.data()), LDA, + reinterpret_cast(B.data()), LDB, + reinterpret_cast< cuComplex*>(B.data()), LDB); + + cublasDestroy(handle); + } +#endif +#ifdef KOKKOSKERNELS_ENABLE_TPL_BLAS + if( std::is_same< MemSpace, Kokkos::HostSpace >::value ) { + char side_; + char uplo_; + + if(A_is_ll) { + if ((side[0]=='L')||(side[0]=='l')) side_ = 'L'; + else side_ = 'R'; + if ((uplo[0]=='L')||(uplo[0]=='l')) uplo_ = 'L'; + else uplo_ = 'U'; + } else { + if ((side[0]=='L')||(side[0]=='l')) side_ = 'R'; + else side_ = 'L'; + if ((uplo[0]=='L')||(uplo[0]=='l')) uplo_ = 'U'; + else uplo_ = 'L'; + } + + const std::complex alpha_val = alpha; + if(A_is_ll) + KokkosBlas::Impl::HostBlas >::trmm(side_, uplo_, trans[0], diag[0], M, N, alpha_val, reinterpret_cast*>(A.data()), LDA, reinterpret_cast*>(B.data()), LDB); + else + KokkosBlas::Impl::HostBlas >::trmm(side_, uplo_, trans[0], diag[0], N, M, alpha_val, reinterpret_cast*>(A.data()), LDA, reinterpret_cast*>(B.data()), LDB); + } +#endif + } + //Kokkos::complex + template + void trmm_wrapper (const char side[], + const char uplo[], + const char trans[], + const char diag[], + Kokkos::complex& alpha, + const ViewTypeA& A, + const ViewTypeB& B) + { + const int M = static_cast (B.extent(0)); + const int N = static_cast (B.extent(1)); + + bool A_is_ll = std::is_same::value; + bool B_is_ll = std::is_same::value; + + const int AST = A_is_ll?A.stride(1):A.stride(0), LDA = (AST == 0) ? 1 : AST; + const int BST = B_is_ll?B.stride(1):B.stride(0), LDB = (BST == 0) ? 1 : BST; + +#ifdef KOKKOSKERNELS_ENABLE_TPL_CUBLAS + if( std::is_same< ExecSpace, Kokkos::Cuda >::value ) { + cublasHandle_t handle; + cublasStatus_t stat = cublasCreate(&handle); + if (stat != CUBLAS_STATUS_SUCCESS) + Kokkos::abort("CUBLAS initialization failed\n"); + + cublasSideMode_t side_; + cublasFillMode_t uplo_; + cublasOperation_t trans_; + cublasDiagType_t diag_; + + if(A_is_ll) { + if ((side[0]=='L')||(side[0]=='l')) side_ = CUBLAS_SIDE_LEFT; + else side_ = CUBLAS_SIDE_RIGHT; + if ((uplo[0]=='L')||(uplo[0]=='l')) uplo_ = CUBLAS_FILL_MODE_LOWER; + else uplo_ = CUBLAS_FILL_MODE_UPPER; + } else { + if ((side[0]=='L')||(side[0]=='l')) side_ = CUBLAS_SIDE_RIGHT; + else side_ = CUBLAS_SIDE_LEFT; + if ((uplo[0]=='L')||(uplo[0]=='l')) uplo_ = CUBLAS_FILL_MODE_UPPER; + else uplo_ = CUBLAS_FILL_MODE_LOWER; + } + if ((trans[0]=='N')||(trans[0]=='n')) trans_ = CUBLAS_OP_N; + else if ((trans[0]=='T')||(trans[0]=='t')) trans_ = CUBLAS_OP_T; + else trans_ = CUBLAS_OP_C; + if ((diag[0]=='U')||(diag[0]=='u')) diag_ = CUBLAS_DIAG_UNIT; + else diag_ = CUBLAS_DIAG_NON_UNIT; + + if(A_is_ll) + cublasZtrmm(handle, side_, uplo_, trans_, diag_, M, N, + reinterpret_cast(&alpha), + reinterpret_cast(A.data()), LDA, + reinterpret_cast(B.data()), LDB, + reinterpret_cast< cuDoubleComplex*>(B.data()), LDB); + else + cublasZtrmm(handle, side_, uplo_, trans_, diag_, N, M, + reinterpret_cast(&alpha), + reinterpret_cast(A.data()), LDA, + reinterpret_cast(B.data()), LDB, + reinterpret_cast< cuDoubleComplex*>(B.data()), LDB); + + cublasDestroy(handle); + } +#endif +#ifdef KOKKOSKERNELS_ENABLE_TPL_BLAS + if( std::is_same< MemSpace, Kokkos::HostSpace >::value ) { + char side_; + char uplo_; + + if(A_is_ll) { + if ((side[0]=='L')||(side[0]=='l')) side_ = 'L'; + else side_ = 'R'; + if ((uplo[0]=='L')||(uplo[0]=='l')) uplo_ = 'L'; + else uplo_ = 'U'; + } else { + if ((side[0]=='L')||(side[0]=='l')) side_ = 'R'; + else side_ = 'L'; + if ((uplo[0]=='L')||(uplo[0]=='l')) uplo_ = 'U'; + else uplo_ = 'L'; + } + + const std::complex alpha_val = alpha; + if(A_is_ll) + KokkosBlas::Impl::HostBlas >::trmm(side_, uplo_, trans[0], diag[0], M, N, alpha_val, reinterpret_cast*>(A.data()), LDA, reinterpret_cast*>(B.data()), LDB); + else + KokkosBlas::Impl::HostBlas >::trmm(side_, uplo_, trans[0], diag[0], N, M, alpha_val, reinterpret_cast*>(A.data()), LDA, reinterpret_cast*>(B.data()), LDB); + } +#endif + } + + // + // + // + + template + void impl_test_trsm(const char* side, const char* uplo, const char* trans, const char* diag, + int M, int N, typename ViewTypeA::value_type alpha) { + + using execution_space = typename ViewTypeA::device_type::execution_space; + using memory_space = typename ViewTypeA::device_type::memory_space; + using ScalarA = typename ViewTypeA::value_type; + using ScalarB = typename ViewTypeB::value_type; + using APT = Kokkos::Details::ArithTraits; + using mag_type = typename APT::mag_type; + + double machine_eps = APT::epsilon(); + bool A_l = (side[0]=='L') || (side[0]=='l'); + int K = A_l?M:N; + + //printf("KokkosBlas::trsm test for alpha %lf, %c %c %c %c, M %d, N %d, eps %.12lf, ViewType: %s\n", double(APT::abs(alpha)),side[0],uplo[0],trans[0],diag[0],M,N,1.0e10 * machine_eps,typeid(ViewTypeA).name()); + + ViewTypeA A ("A", K,K); + ViewTypeB B ("B", M,N); + ViewTypeB X0 ("X0",M,N); + + typename ViewTypeB::HostMirror h_B = Kokkos::create_mirror_view(B); + typename ViewTypeB::HostMirror h_X0 = Kokkos::create_mirror_view(X0); + + uint64_t seed = Kokkos::Impl::clock_tic(); + Kokkos::Random_XorShift64_Pool rand_pool(seed); + + Kokkos::fill_random(A, rand_pool,ScalarA(0.01)); + if((diag[0]=='U')||(diag[0]=='u')) { + using functor_type = UnitDiagTRSM; + functor_type udtrsm(A); + Kokkos::parallel_for("KokkosBlas::Test::UnitDiagTRSM", Kokkos::RangePolicy(0,K), udtrsm); + } else {//(diag[0]=='N')||(diag[0]=='n') + using functor_type = NonUnitDiagTRSM; + functor_type nudtrsm(A); + Kokkos::parallel_for("KokkosBlas::Test::NonUnitDiagTRSM", Kokkos::RangePolicy(0,K), nudtrsm); + } + Kokkos::deep_copy(X0, ScalarA(1)); + + Kokkos::deep_copy(B, X0); + + ScalarA alpha_trmm = 1.0/alpha; + + Kokkos::fence(); + + trmm_wrapper(side, uplo, trans, diag, alpha_trmm, A, B); + + KokkosBlas::trsm(side, uplo, trans, diag, alpha, A, B); + + Kokkos::fence(); + + Kokkos::deep_copy(h_B, B); + Kokkos::deep_copy(h_X0, X0); + + // Checking vs ref on CPU, this eps is about 10^-6 + const mag_type eps = 1.0e10 * machine_eps; + bool test_flag = true; + for (int i=0; i eps ) { + test_flag = false; + //printf( " Error: abs_result( %.15lf ) != abs_solution( %.15lf ) at (i %ld, j %ld)\n", APT::abs(h_B(i,j)), APT::abs(h_X0(i,j)), i, j ); + break; + } + } + if (!test_flag) break; + } + ASSERT_EQ( test_flag, true ); + } +} + +template +int test_trsm(const char* mode, ScalarA alpha) { + +#if defined(KOKKOSKERNELS_INST_LAYOUTLEFT) || (!defined(KOKKOSKERNELS_ETI_ONLY) && !defined(KOKKOSKERNELS_IMPL_CHECK_ETI_CALLS)) + using view_type_a_ll = Kokkos::View; + using view_type_b_ll = Kokkos::View; + Test::impl_test_trsm(&mode[0],&mode[1],&mode[2],&mode[3],0,0,alpha); + Test::impl_test_trsm(&mode[0],&mode[1],&mode[2],&mode[3],101,1,alpha); + Test::impl_test_trsm(&mode[0],&mode[1],&mode[2],&mode[3],1,101,alpha); + Test::impl_test_trsm(&mode[0],&mode[1],&mode[2],&mode[3],101,19,alpha); + Test::impl_test_trsm(&mode[0],&mode[1],&mode[2],&mode[3],19,101,alpha); + Test::impl_test_trsm(&mode[0],&mode[1],&mode[2],&mode[3],3031,91,alpha); +#endif + +#if defined(KOKKOSKERNELS_INST_LAYOUTRIGHT) || (!defined(KOKKOSKERNELS_ETI_ONLY) && !defined(KOKKOSKERNELS_IMPL_CHECK_ETI_CALLS)) + using view_type_a_lr = Kokkos::View; + using view_type_b_lr = Kokkos::View; + Test::impl_test_trsm(&mode[0],&mode[1],&mode[2],&mode[3],0,0,alpha); + Test::impl_test_trsm(&mode[0],&mode[1],&mode[2],&mode[3],101,1,alpha); + Test::impl_test_trsm(&mode[0],&mode[1],&mode[2],&mode[3],1,101,alpha); + Test::impl_test_trsm(&mode[0],&mode[1],&mode[2],&mode[3],101,19,alpha); + Test::impl_test_trsm(&mode[0],&mode[1],&mode[2],&mode[3],19,101,alpha); + Test::impl_test_trsm(&mode[0],&mode[1],&mode[2],&mode[3],3031,91,alpha); +#endif + + return 1; +} + +#if defined( KOKKOSKERNELS_ENABLE_TPL_CUBLAS ) || defined (KOKKOSKERNELS_ENABLE_TPL_BLAS) + +#if defined(KOKKOSKERNELS_INST_FLOAT) || (!defined(KOKKOSKERNELS_ETI_ONLY) && !defined(KOKKOSKERNELS_IMPL_CHECK_ETI_CALLS)) +TEST_F( TestCategory, trsm_float ) { + Kokkos::Profiling::pushRegion("KokkosBlas::Test::trsm_float"); + float alpha = 1.0f; + test_trsm ("LLNN",alpha); + test_trsm ("LLNU",alpha); + test_trsm ("LLTN",alpha); + test_trsm ("LLTU",alpha); + test_trsm ("LUNN",alpha); + test_trsm ("LUNU",alpha); + test_trsm ("LUTN",alpha); + test_trsm ("LUTU",alpha); + + test_trsm ("RLNN",alpha); + test_trsm ("RLNU",alpha); + test_trsm ("RLTN",alpha); + test_trsm ("RLTU",alpha); + test_trsm ("RUNN",alpha); + test_trsm ("RUNU",alpha); + test_trsm ("RUTN",alpha); + test_trsm ("RUTU",alpha); + + alpha = 4.5f; + test_trsm ("LLNN",alpha); + test_trsm ("LLNU",alpha); + test_trsm ("LLTN",alpha); + test_trsm ("LLTU",alpha); + test_trsm ("LUNN",alpha); + test_trsm ("LUNU",alpha); + test_trsm ("LUTN",alpha); + test_trsm ("LUTU",alpha); + + test_trsm ("RLNN",alpha); + test_trsm ("RLNU",alpha); + test_trsm ("RLTN",alpha); + test_trsm ("RLTU",alpha); + test_trsm ("RUNN",alpha); + test_trsm ("RUNU",alpha); + test_trsm ("RUTN",alpha); + test_trsm ("RUTU",alpha); + Kokkos::Profiling::popRegion(); +} +#endif + +#if defined(KOKKOSKERNELS_INST_DOUBLE) || (!defined(KOKKOSKERNELS_ETI_ONLY) && !defined(KOKKOSKERNELS_IMPL_CHECK_ETI_CALLS)) +TEST_F( TestCategory, trsm_double ) { + Kokkos::Profiling::pushRegion("KokkosBlas::Test::trsm_double"); + double alpha = 1.0; + test_trsm ("LLNN",alpha); + test_trsm ("LLNU",alpha); + test_trsm ("LLTN",alpha); + test_trsm ("LLTU",alpha); + test_trsm ("LUNN",alpha); + test_trsm ("LUNU",alpha); + test_trsm ("LUTN",alpha); + test_trsm ("LUTU",alpha); + + test_trsm ("RLNN",alpha); + test_trsm ("RLNU",alpha); + test_trsm ("RLTN",alpha); + test_trsm ("RLTU",alpha); + test_trsm ("RUNN",alpha); + test_trsm ("RUNU",alpha); + test_trsm ("RUTN",alpha); + test_trsm ("RUTU",alpha); + + alpha = 4.5; + test_trsm ("LLNN",alpha); + test_trsm ("LLNU",alpha); + test_trsm ("LLTN",alpha); + test_trsm ("LLTU",alpha); + test_trsm ("LUNN",alpha); + test_trsm ("LUNU",alpha); + test_trsm ("LUTN",alpha); + test_trsm ("LUTU",alpha); + + test_trsm ("RLNN",alpha); + test_trsm ("RLNU",alpha); + test_trsm ("RLTN",alpha); + test_trsm ("RLTU",alpha); + test_trsm ("RUNN",alpha); + test_trsm ("RUNU",alpha); + test_trsm ("RUTN",alpha); + test_trsm ("RUTU",alpha); + Kokkos::Profiling::popRegion(); +} +#endif + +#if defined(KOKKOSKERNELS_INST_COMPLEX_DOUBLE) || (!defined(KOKKOSKERNELS_ETI_ONLY) && !defined(KOKKOSKERNELS_IMPL_CHECK_ETI_CALLS)) +TEST_F( TestCategory, trsm_complex_double ) { + Kokkos::Profiling::pushRegion("KokkosBlas::Test::trsm_complex_double"); + Kokkos::complex alpha = 1.0; + test_trsm,Kokkos::complex,TestExecSpace> ("LLNN",alpha); + test_trsm,Kokkos::complex,TestExecSpace> ("LLNU",alpha); + test_trsm,Kokkos::complex,TestExecSpace> ("LLCN",alpha); + test_trsm,Kokkos::complex,TestExecSpace> ("LLCU",alpha); + test_trsm,Kokkos::complex,TestExecSpace> ("LUNN",alpha); + test_trsm,Kokkos::complex,TestExecSpace> ("LUNU",alpha); + test_trsm,Kokkos::complex,TestExecSpace> ("LUCN",alpha); + test_trsm,Kokkos::complex,TestExecSpace> ("LUCU",alpha); + + test_trsm,Kokkos::complex,TestExecSpace> ("RLNN",alpha); + test_trsm,Kokkos::complex,TestExecSpace> ("RLNU",alpha); + test_trsm,Kokkos::complex,TestExecSpace> ("RLCN",alpha); + test_trsm,Kokkos::complex,TestExecSpace> ("RLCU",alpha); + test_trsm,Kokkos::complex,TestExecSpace> ("RUNN",alpha); + test_trsm,Kokkos::complex,TestExecSpace> ("RUNU",alpha); + test_trsm,Kokkos::complex,TestExecSpace> ("RUCN",alpha); + test_trsm,Kokkos::complex,TestExecSpace> ("RUCU",alpha); + + alpha = Kokkos::complex(4.5,0.0); + test_trsm,Kokkos::complex,TestExecSpace> ("LLNN",alpha); + test_trsm,Kokkos::complex,TestExecSpace> ("LLNU",alpha); + test_trsm,Kokkos::complex,TestExecSpace> ("LLCN",alpha); + test_trsm,Kokkos::complex,TestExecSpace> ("LLCU",alpha); + test_trsm,Kokkos::complex,TestExecSpace> ("LUNN",alpha); + test_trsm,Kokkos::complex,TestExecSpace> ("LUNU",alpha); + test_trsm,Kokkos::complex,TestExecSpace> ("LUCN",alpha); + test_trsm,Kokkos::complex,TestExecSpace> ("LUCU",alpha); + + test_trsm,Kokkos::complex,TestExecSpace> ("RLNN",alpha); + test_trsm,Kokkos::complex,TestExecSpace> ("RLNU",alpha); + test_trsm,Kokkos::complex,TestExecSpace> ("RLCN",alpha); + test_trsm,Kokkos::complex,TestExecSpace> ("RLCU",alpha); + test_trsm,Kokkos::complex,TestExecSpace> ("RUNN",alpha); + test_trsm,Kokkos::complex,TestExecSpace> ("RUNU",alpha); + test_trsm,Kokkos::complex,TestExecSpace> ("RUCN",alpha); + test_trsm,Kokkos::complex,TestExecSpace> ("RUCU",alpha); + Kokkos::Profiling::popRegion(); +} +#endif + +#if defined(KOKKOSKERNELS_INST_COMPLEX_FLOAT) || (!defined(KOKKOSKERNELS_ETI_ONLY) && !defined(KOKKOSKERNELS_IMPL_CHECK_ETI_CALLS)) +TEST_F( TestCategory, trsm_complex_float ) { + Kokkos::Profiling::pushRegion("KokkosBlas::Test::trsm_complex_float"); + Kokkos::complex alpha = 5.0f; + test_trsm,Kokkos::complex,TestExecSpace> ("LLNN",alpha); + test_trsm,Kokkos::complex,TestExecSpace> ("LLNU",alpha); + test_trsm,Kokkos::complex,TestExecSpace> ("LLCN",alpha); + test_trsm,Kokkos::complex,TestExecSpace> ("LLCU",alpha); + test_trsm,Kokkos::complex,TestExecSpace> ("LUNN",alpha); + test_trsm,Kokkos::complex,TestExecSpace> ("LUNU",alpha); + test_trsm,Kokkos::complex,TestExecSpace> ("LUCN",alpha); + test_trsm,Kokkos::complex,TestExecSpace> ("LUCU",alpha); + + test_trsm,Kokkos::complex,TestExecSpace> ("RLNN",alpha); + test_trsm,Kokkos::complex,TestExecSpace> ("RLNU",alpha); + test_trsm,Kokkos::complex,TestExecSpace> ("RLCN",alpha); + test_trsm,Kokkos::complex,TestExecSpace> ("RLCU",alpha); + test_trsm,Kokkos::complex,TestExecSpace> ("RUNN",alpha); + test_trsm,Kokkos::complex,TestExecSpace> ("RUNU",alpha); + test_trsm,Kokkos::complex,TestExecSpace> ("RUCN",alpha); + test_trsm,Kokkos::complex,TestExecSpace> ("RUCU",alpha); + + alpha = Kokkos::complex(4.5f,0.0f); + test_trsm,Kokkos::complex,TestExecSpace> ("LLNN",alpha); + test_trsm,Kokkos::complex,TestExecSpace> ("LLNU",alpha); + test_trsm,Kokkos::complex,TestExecSpace> ("LLCN",alpha); + test_trsm,Kokkos::complex,TestExecSpace> ("LLCU",alpha); + test_trsm,Kokkos::complex,TestExecSpace> ("LUNN",alpha); + test_trsm,Kokkos::complex,TestExecSpace> ("LUNU",alpha); + test_trsm,Kokkos::complex,TestExecSpace> ("LUCN",alpha); + test_trsm,Kokkos::complex,TestExecSpace> ("LUCU",alpha); + + test_trsm,Kokkos::complex,TestExecSpace> ("RLNN",alpha); + test_trsm,Kokkos::complex,TestExecSpace> ("RLNU",alpha); + test_trsm,Kokkos::complex,TestExecSpace> ("RLCN",alpha); + test_trsm,Kokkos::complex,TestExecSpace> ("RLCU",alpha); + test_trsm,Kokkos::complex,TestExecSpace> ("RUNN",alpha); + test_trsm,Kokkos::complex,TestExecSpace> ("RUNU",alpha); + test_trsm,Kokkos::complex,TestExecSpace> ("RUCN",alpha); + test_trsm,Kokkos::complex,TestExecSpace> ("RUCU",alpha); + Kokkos::Profiling::popRegion(); +} +#endif + +#endif//KOKKOSKERNELS_ENABLE_TPL_CUBLAS || KOKKOSKERNELS_ENABLE_TPL_BLAS diff --git a/unit_test/cuda/Test_Cuda_Blas3_trsm.cpp b/unit_test/cuda/Test_Cuda_Blas3_trsm.cpp new file mode 100644 index 0000000000..629b71ff1c --- /dev/null +++ b/unit_test/cuda/Test_Cuda_Blas3_trsm.cpp @@ -0,0 +1,4 @@ +#include +#ifdef KOKKOSKERNELS_ENABLE_TPL_CUBLAS +#include +#endif diff --git a/unit_test/openmp/Test_OpenMP_Blas3_trsm.cpp b/unit_test/openmp/Test_OpenMP_Blas3_trsm.cpp new file mode 100644 index 0000000000..8dc632ba96 --- /dev/null +++ b/unit_test/openmp/Test_OpenMP_Blas3_trsm.cpp @@ -0,0 +1,4 @@ +#include +#ifdef KOKKOSKERNELS_ENABLE_TPL_BLAS +#include +#endif diff --git a/unit_test/serial/Test_Serial_Blas3_trsm.cpp b/unit_test/serial/Test_Serial_Blas3_trsm.cpp new file mode 100644 index 0000000000..0ca05bbda7 --- /dev/null +++ b/unit_test/serial/Test_Serial_Blas3_trsm.cpp @@ -0,0 +1,4 @@ +#include +#ifdef KOKKOSKERNELS_ENABLE_TPL_BLAS +#include +#endif diff --git a/unit_test/threads/Test_Threads_Blas3_trsm.cpp b/unit_test/threads/Test_Threads_Blas3_trsm.cpp new file mode 100644 index 0000000000..95a59aa07a --- /dev/null +++ b/unit_test/threads/Test_Threads_Blas3_trsm.cpp @@ -0,0 +1,4 @@ +#include +#ifdef KOKKOSKERNELS_ENABLE_TPL_BLAS +#include +#endif \ No newline at end of file From 15302fe76f5486a7c4ad9728ed3f5efc061c84b4 Mon Sep 17 00:00:00 2001 From: Vinh Dang Date: Mon, 16 Dec 2019 10:53:52 -0700 Subject: [PATCH 02/10] Fix typo --- src/blas/impl/KokkosBlas3_trsm_spec.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/blas/impl/KokkosBlas3_trsm_spec.hpp b/src/blas/impl/KokkosBlas3_trsm_spec.hpp index 1a92019611..afea69ef7a 100644 --- a/src/blas/impl/KokkosBlas3_trsm_spec.hpp +++ b/src/blas/impl/KokkosBlas3_trsm_spec.hpp @@ -130,7 +130,7 @@ struct TRSM { std::ostringstream os; os << "KokkosBlas::trsm currently supports only TPL interface." << "Please enable Host BLAS or cuBLAS." - << "KokkosKernels implmentation will be added in future release."; + << "KokkosKernels implementation will be added in future release."; Kokkos::Impl::throw_runtime_exception (os.str ()); } }; From c3c89e3bd16752c87ecfad6d4d5cdb8257f90014 Mon Sep 17 00:00:00 2001 From: Vinh Dang Date: Mon, 16 Dec 2019 10:56:59 -0700 Subject: [PATCH 03/10] Modify note for KK implementation --- src/blas/impl/KokkosBlas3_trsm_impl.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/blas/impl/KokkosBlas3_trsm_impl.hpp b/src/blas/impl/KokkosBlas3_trsm_impl.hpp index 48083d88c2..576d054bad 100644 --- a/src/blas/impl/KokkosBlas3_trsm_impl.hpp +++ b/src/blas/impl/KokkosBlas3_trsm_impl.hpp @@ -54,7 +54,7 @@ namespace KokkosBlas { namespace Impl { - //TODO: Add the implementation of KokkosBlas::trsm later + //Note: Add an implementation of KokkosBlas::trsm in a next PR. } } #endif // KOKKOSBLAS3_TRSM_IMPL_HPP_ From 96ab3d9a44d8a07d87f4b4d181897c2a0da8614e Mon Sep 17 00:00:00 2001 From: Vinh Dang Date: Mon, 16 Dec 2019 11:08:56 -0700 Subject: [PATCH 04/10] Use double quotes for KK headers and allow RHS with rank 2 only --- src/blas/KokkosBlas3_trsm.hpp | 21 ++++++--------------- 1 file changed, 6 insertions(+), 15 deletions(-) diff --git a/src/blas/KokkosBlas3_trsm.hpp b/src/blas/KokkosBlas3_trsm.hpp index 168ae768dd..67a00dcaa8 100644 --- a/src/blas/KokkosBlas3_trsm.hpp +++ b/src/blas/KokkosBlas3_trsm.hpp @@ -45,9 +45,9 @@ /// \file KokkosBlas3_trsm.hpp -#include -#include -#include +#include "KokkosKernels_Macros.hpp" +#include "KokkosBlas3_trsm_spec.hpp" +#include "KokkosKernels_helpers.hpp" #include #include @@ -92,8 +92,8 @@ trsm (const char side[], "BViewType must be a Kokkos::View."); static_assert (static_cast (AViewType::rank) == 2, "AViewType must have rank 2."); - static_assert (static_cast (BViewType::rank) == 1 || static_cast (BViewType::rank) == 2, - "BViewType must have either rank 1 or rank 2."); + static_assert (static_cast (BViewType::rank) == 2, + "BViewType must have rank 2."); // Check validity of indicator argument bool valid_side = (side[0] == 'L' ) || (side[0] == 'l' )|| @@ -167,16 +167,7 @@ trsm (const char side[], typename BViewType::device_type, Kokkos::MemoryTraits >; - AVT A_i = A; - - if (BViewType::rank == 1) { - auto B_i = BVT(B.data(), B.extent(0), 1); - KokkosBlas::Impl::TRSM::trsm (side, uplo, trans, diag, alpha, A_i, B_i); - } - else { //BViewType::rank == 2 - auto B_i = BVT(B.data(), B.extent(0), B.extent(1)); - KokkosBlas::Impl::TRSM::trsm (side, uplo, trans, diag, alpha, A_i, B_i); - } + KokkosBlas::Impl::TRSM::trsm (side, uplo, trans, diag, alpha, A, B); } } // namespace KokkosBlas From fe330f816802d963466028a5c357beebe850366d Mon Sep 17 00:00:00 2001 From: Vinh Dang Date: Thu, 19 Dec 2019 16:37:50 -0700 Subject: [PATCH 05/10] Add sequential fall-back implementation and change unit tests accordingly --- src/blas/impl/KokkosBlas3_trsm_impl.hpp | 272 ++++++++++- src/blas/impl/KokkosBlas3_trsm_impl.hpp_ORIG | 60 +++ src/blas/impl/KokkosBlas3_trsm_spec.hpp | 41 +- src/blas/impl/KokkosBlas3_trsm_spec.hpp_ORIG | 178 +++++++ unit_test/blas/Test_Blas3_trsm.hpp | 459 ++++-------------- unit_test/cuda/Test_Cuda_Blas3_trsm.cpp | 2 - unit_test/openmp/Test_OpenMP_Blas3_trsm.cpp | 2 - unit_test/serial/Test_Serial_Blas3_trsm.cpp | 2 - unit_test/threads/Test_Threads_Blas3_trsm.cpp | 2 - 9 files changed, 631 insertions(+), 387 deletions(-) create mode 100644 src/blas/impl/KokkosBlas3_trsm_impl.hpp_ORIG create mode 100644 src/blas/impl/KokkosBlas3_trsm_spec.hpp_ORIG diff --git a/src/blas/impl/KokkosBlas3_trsm_impl.hpp b/src/blas/impl/KokkosBlas3_trsm_impl.hpp index 576d054bad..61eba5210a 100644 --- a/src/blas/impl/KokkosBlas3_trsm_impl.hpp +++ b/src/blas/impl/KokkosBlas3_trsm_impl.hpp @@ -45,16 +45,284 @@ #define KOKKOSBLAS3_TRSM_IMPL_HPP_ /// \file KokkosBlas3_trsm_impl.hpp -/// \brief Implementation(s) of triangular linear system solve (with multiple RHSs) . +/// \brief Implementation(s) of triangular linear system solve (with multiple RHSs) +/// \brief Sequential fall-back implementation calls the exisiting serial batched TRSM. +/// \brief Two sequential fall-back implementations for conjugate transpose case are +/// \brief also based on the exisiting serial batched TRSM. #include "KokkosKernels_config.h" #include "Kokkos_Core.hpp" #include "Kokkos_ArithTraits.hpp" +#include "KokkosBatched_Trsm_Decl.hpp" +#include "KokkosBatched_Trsm_Serial_Impl.hpp" +using namespace KokkosBatched; namespace KokkosBlas { namespace Impl { - //Note: Add an implementation of KokkosBlas::trsm in a next PR. + +template +int +SerialTrsmInternalLeftLowerConj(const bool use_unit_diag, + const int m, const int n, + const ScalarType alpha, + const ValueType *__restrict__ A, const int as0, const int as1, + /**/ ValueType *__restrict__ B, const int bs0, const int bs1) { + + typedef Kokkos::Details::ArithTraits AT; + + const ScalarType one(1.0), zero(0.0); + + if (alpha == zero) SerialSetInternal ::invoke(m, n, zero, B, bs0, bs1); + else { + if (alpha != one) SerialScaleInternal::invoke(m, n, alpha, B, bs0, bs1); + if (m <= 0 || n <= 0) return 0; + + for (int p=0;p +int +SerialTrsmInternalLeftUpperConj(const bool use_unit_diag, + const int m, const int n, + const ScalarType alpha, + const ValueType *__restrict__ A, const int as0, const int as1, + /**/ ValueType *__restrict__ B, const int bs0, const int bs1) { + + typedef Kokkos::Details::ArithTraits AT; + + const ScalarType one(1.0), zero(0.0); + + if (alpha == zero) SerialSetInternal ::invoke(m, n, zero, B, bs0, bs1); + else { + if (alpha != one) SerialScaleInternal::invoke(m, n, alpha, B, bs0, bs1); + if (m <= 0 || n <= 0) return 0; + + ValueType *__restrict__ B0 = B; + for (int p=(m-1);p>=0;--p) { + const int iend = p, jend = n; + + const ValueType *__restrict__ a01 = A+p*as1; + ValueType *__restrict__ b1t = B+p*bs0; + + if (!use_unit_diag) { + const ValueType alpha11 = AT::conj(A[p*as0+p*as1]); + for (int j=0;j0){//Note: A workaround to produce correct results for complex with Intel-18.2.199 + for (int i=0;i +void SerialTrsm_Invoke (const char side[], + const char uplo[], + const char trans[], + const char diag[], + typename BViewType::const_value_type& alpha, + const AViewType& A, + const BViewType& B) +{ + //Side::Left, Uplo::Lower, Trans::NoTranspose + if (((side[0]=='L')||(side[0]=='l'))&&((uplo[0]=='L')||(uplo[0]=='l'))&&((trans[0]=='N')||(trans[0]=='n'))&&((diag[0]=='U')||(diag[0]=='u'))) + SerialTrsmInternalLeftLower::invoke(Diag::Unit::use_unit_diag, + B.extent(0), B.extent(1), + alpha, + A.data(), A.stride(0), A.stride(1), + B.data(), B.stride(0), B.stride(1)); + if (((side[0]=='L')||(side[0]=='l'))&&((uplo[0]=='L')||(uplo[0]=='l'))&&((trans[0]=='N')||(trans[0]=='n'))&&((diag[0]=='N')||(diag[0]=='n'))) + SerialTrsmInternalLeftLower::invoke(Diag::NonUnit::use_unit_diag, + B.extent(0), B.extent(1), + alpha, + A.data(), A.stride(0), A.stride(1), + B.data(), B.stride(0), B.stride(1)); + + //Side::Left, Uplo::Lower, Trans::Transpose + if (((side[0]=='L')||(side[0]=='l'))&&((uplo[0]=='L')||(uplo[0]=='l'))&&((trans[0]=='T')||(trans[0]=='t'))&&((diag[0]=='U')||(diag[0]=='u'))) + SerialTrsmInternalLeftUpper::invoke(Diag::Unit::use_unit_diag, + B.extent(0), B.extent(1), + alpha, + A.data(), A.stride(1), A.stride(0), + B.data(), B.stride(0), B.stride(1)); + if (((side[0]=='L')||(side[0]=='l'))&&((uplo[0]=='L')||(uplo[0]=='l'))&&((trans[0]=='T')||(trans[0]=='t'))&&((diag[0]=='N')||(diag[0]=='n'))) + SerialTrsmInternalLeftUpper::invoke(Diag::NonUnit::use_unit_diag, + B.extent(0), B.extent(1), + alpha, + A.data(), A.stride(1), A.stride(0), + B.data(), B.stride(0), B.stride(1)); + + //Side::Left, Uplo::Lower, Trans::ConjTranspose + if (((side[0]=='L')||(side[0]=='l'))&&((uplo[0]=='L')||(uplo[0]=='l'))&&((trans[0]=='C')||(trans[0]=='c'))&&((diag[0]=='U')||(diag[0]=='u'))) + SerialTrsmInternalLeftUpperConj(Diag::Unit::use_unit_diag, + B.extent(0), B.extent(1), + alpha, + A.data(), A.stride(1), A.stride(0), + B.data(), B.stride(0), B.stride(1)); + if (((side[0]=='L')||(side[0]=='l'))&&((uplo[0]=='L')||(uplo[0]=='l'))&&((trans[0]=='C')||(trans[0]=='c'))&&((diag[0]=='N')||(diag[0]=='n'))) + SerialTrsmInternalLeftUpperConj(Diag::NonUnit::use_unit_diag, + B.extent(0), B.extent(1), + alpha, + A.data(), A.stride(1), A.stride(0), + B.data(), B.stride(0), B.stride(1)); + + //Side::Left, Uplo::Upper, Trans::NoTranspose + if (((side[0]=='L')||(side[0]=='l'))&&((uplo[0]=='U')||(uplo[0]=='u'))&&((trans[0]=='N')||(trans[0]=='n'))&&((diag[0]=='U')||(diag[0]=='u'))) + SerialTrsmInternalLeftUpper::invoke(Diag::Unit::use_unit_diag, + B.extent(0), B.extent(1), + alpha, + A.data(), A.stride(0), A.stride(1), + B.data(), B.stride(0), B.stride(1)); + if (((side[0]=='L')||(side[0]=='l'))&&((uplo[0]=='U')||(uplo[0]=='u'))&&((trans[0]=='N')||(trans[0]=='n'))&&((diag[0]=='N')||(diag[0]=='n'))) + SerialTrsmInternalLeftUpper::invoke(Diag::NonUnit::use_unit_diag, + B.extent(0), B.extent(1), + alpha, + A.data(), A.stride(0), A.stride(1), + B.data(), B.stride(0), B.stride(1)); + + //Side::Left, Uplo::Upper, Trans::Transpose + if (((side[0]=='L')||(side[0]=='l'))&&((uplo[0]=='U')||(uplo[0]=='u'))&&((trans[0]=='T')||(trans[0]=='t'))&&((diag[0]=='U')||(diag[0]=='u'))) + SerialTrsmInternalLeftLower::invoke(Diag::Unit::use_unit_diag, + B.extent(0), B.extent(1), + alpha, + A.data(), A.stride(1), A.stride(0), + B.data(), B.stride(0), B.stride(1)); + if (((side[0]=='L')||(side[0]=='l'))&&((uplo[0]=='U')||(uplo[0]=='u'))&&((trans[0]=='T')||(trans[0]=='t'))&&((diag[0]=='N')||(diag[0]=='n'))) + SerialTrsmInternalLeftLower::invoke(Diag::NonUnit::use_unit_diag, + B.extent(0), B.extent(1), + alpha, + A.data(), A.stride(1), A.stride(0), + B.data(), B.stride(0), B.stride(1)); + + //Side::Left, Uplo::Upper, Trans::ConjTranspose + if (((side[0]=='L')||(side[0]=='l'))&&((uplo[0]=='U')||(uplo[0]=='u'))&&((trans[0]=='C')||(trans[0]=='c'))&&((diag[0]=='U')||(diag[0]=='u'))) + SerialTrsmInternalLeftLowerConj(Diag::Unit::use_unit_diag, + B.extent(0), B.extent(1), + alpha, + A.data(), A.stride(1), A.stride(0), + B.data(), B.stride(0), B.stride(1)); + if (((side[0]=='L')||(side[0]=='l'))&&((uplo[0]=='U')||(uplo[0]=='u'))&&((trans[0]=='C')||(trans[0]=='c'))&&((diag[0]=='N')||(diag[0]=='n'))) + SerialTrsmInternalLeftLowerConj(Diag::NonUnit::use_unit_diag, + B.extent(0), B.extent(1), + alpha, + A.data(), A.stride(1), A.stride(0), + B.data(), B.stride(0), B.stride(1)); + //// + //Side::Right, Uplo::Lower, Trans::NoTranspose + if (((side[0]=='R')||(side[0]=='r'))&&((uplo[0]=='L')||(uplo[0]=='l'))&&((trans[0]=='N')||(trans[0]=='n'))&&((diag[0]=='U')||(diag[0]=='u'))) + SerialTrsmInternalLeftUpper::invoke(Diag::Unit::use_unit_diag, + B.extent(1), B.extent(0), + alpha, + A.data(), A.stride(1), A.stride(0), + B.data(), B.stride(1), B.stride(0)); + if (((side[0]=='R')||(side[0]=='r'))&&((uplo[0]=='L')||(uplo[0]=='l'))&&((trans[0]=='N')||(trans[0]=='n'))&&((diag[0]=='N')||(diag[0]=='n'))) + SerialTrsmInternalLeftUpper::invoke(Diag::NonUnit::use_unit_diag, + B.extent(1), B.extent(0), + alpha, + A.data(), A.stride(1), A.stride(0), + B.data(), B.stride(1), B.stride(0)); + + //Side::Right, Uplo::Lower, Trans::Transpose + if (((side[0]=='R')||(side[0]=='r'))&&((uplo[0]=='L')||(uplo[0]=='l'))&&((trans[0]=='T')||(trans[0]=='t'))&&((diag[0]=='U')||(diag[0]=='u'))) + SerialTrsmInternalLeftLower::invoke(Diag::Unit::use_unit_diag, + B.extent(1), B.extent(0), + alpha, + A.data(), A.stride(0), A.stride(1), + B.data(), B.stride(1), B.stride(0)); + if (((side[0]=='R')||(side[0]=='r'))&&((uplo[0]=='L')||(uplo[0]=='l'))&&((trans[0]=='T')||(trans[0]=='t'))&&((diag[0]=='N')||(diag[0]=='n'))) + SerialTrsmInternalLeftLower::invoke(Diag::NonUnit::use_unit_diag, + B.extent(1), B.extent(0), + alpha, + A.data(), A.stride(0), A.stride(1), + B.data(), B.stride(1), B.stride(0)); + + //Side::Right, Uplo::Lower, Trans::ConjTranspose + if (((side[0]=='R')||(side[0]=='r'))&&((uplo[0]=='L')||(uplo[0]=='l'))&&((trans[0]=='C')||(trans[0]=='c'))&&((diag[0]=='U')||(diag[0]=='u'))) + SerialTrsmInternalLeftLowerConj(Diag::Unit::use_unit_diag, + B.extent(1), B.extent(0), + alpha, + A.data(), A.stride(0), A.stride(1), + B.data(), B.stride(1), B.stride(0)); + if (((side[0]=='R')||(side[0]=='r'))&&((uplo[0]=='L')||(uplo[0]=='l'))&&((trans[0]=='C')||(trans[0]=='c'))&&((diag[0]=='N')||(diag[0]=='n'))) + SerialTrsmInternalLeftLowerConj(Diag::NonUnit::use_unit_diag, + B.extent(1), B.extent(0), + alpha, + A.data(), A.stride(0), A.stride(1), + B.data(), B.stride(1), B.stride(0)); + + //Side::Right, Uplo::Upper, Trans::NoTranspose + if (((side[0]=='R')||(side[0]=='r'))&&((uplo[0]=='U')||(uplo[0]=='u'))&&((trans[0]=='N')||(trans[0]=='n'))&&((diag[0]=='U')||(diag[0]=='u'))) + SerialTrsmInternalLeftLower::invoke(Diag::Unit::use_unit_diag, + B.extent(1), B.extent(0), + alpha, + A.data(), A.stride(1), A.stride(0), + B.data(), B.stride(1), B.stride(0)); + if (((side[0]=='R')||(side[0]=='r'))&&((uplo[0]=='U')||(uplo[0]=='u'))&&((trans[0]=='N')||(trans[0]=='n'))&&((diag[0]=='N')||(diag[0]=='n'))) + SerialTrsmInternalLeftLower::invoke(Diag::NonUnit::use_unit_diag, + B.extent(1), B.extent(0), + alpha, + A.data(), A.stride(1), A.stride(0), + B.data(), B.stride(1), B.stride(0)); + + //Side::Right, Uplo::Upper, Trans::Transpose + if (((side[0]=='R')||(side[0]=='r'))&&((uplo[0]=='U')||(uplo[0]=='u'))&&((trans[0]=='T')||(trans[0]=='t'))&&((diag[0]=='U')||(diag[0]=='u'))) + SerialTrsmInternalLeftUpper::invoke(Diag::Unit::use_unit_diag, + B.extent(1), B.extent(0), + alpha, + A.data(), A.stride(0), A.stride(1), + B.data(), B.stride(1), B.stride(0)); + if (((side[0]=='R')||(side[0]=='r'))&&((uplo[0]=='U')||(uplo[0]=='u'))&&((trans[0]=='T')||(trans[0]=='t'))&&((diag[0]=='N')||(diag[0]=='n'))) + SerialTrsmInternalLeftUpper::invoke(Diag::NonUnit::use_unit_diag, + B.extent(1), B.extent(0), + alpha, + A.data(), A.stride(0), A.stride(1), + B.data(), B.stride(1), B.stride(0)); + + //Side::Right, Uplo::Upper, Trans::ConjTranspose + if (((side[0]=='R')||(side[0]=='r'))&&((uplo[0]=='U')||(uplo[0]=='u'))&&((trans[0]=='C')||(trans[0]=='c'))&&((diag[0]=='U')||(diag[0]=='u'))) + SerialTrsmInternalLeftUpperConj(Diag::Unit::use_unit_diag, + B.extent(1), B.extent(0), + alpha, + A.data(), A.stride(0), A.stride(1), + B.data(), B.stride(1), B.stride(0)); + if (((side[0]=='R')||(side[0]=='r'))&&((uplo[0]=='U')||(uplo[0]=='u'))&&((trans[0]=='C')||(trans[0]=='c'))&&((diag[0]=='N')||(diag[0]=='n'))) + SerialTrsmInternalLeftUpperConj(Diag::NonUnit::use_unit_diag, + B.extent(1), B.extent(0), + alpha, + A.data(), A.stride(0), A.stride(1), + B.data(), B.stride(1), B.stride(0)); } + +}// namespace Impl +}// namespace KokkosBlas #endif // KOKKOSBLAS3_TRSM_IMPL_HPP_ diff --git a/src/blas/impl/KokkosBlas3_trsm_impl.hpp_ORIG b/src/blas/impl/KokkosBlas3_trsm_impl.hpp_ORIG new file mode 100644 index 0000000000..576d054bad --- /dev/null +++ b/src/blas/impl/KokkosBlas3_trsm_impl.hpp_ORIG @@ -0,0 +1,60 @@ +/* +//@HEADER +// ************************************************************************ +// +// KokkosKernels 0.9: Linear Algebra and Graph Kernels +// Copyright 2017 Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Siva Rajamanickam (srajama@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#ifndef KOKKOSBLAS3_TRSM_IMPL_HPP_ +#define KOKKOSBLAS3_TRSM_IMPL_HPP_ + +/// \file KokkosBlas3_trsm_impl.hpp +/// \brief Implementation(s) of triangular linear system solve (with multiple RHSs) . + +#include "KokkosKernels_config.h" +#include "Kokkos_Core.hpp" +#include "Kokkos_ArithTraits.hpp" + + +namespace KokkosBlas { +namespace Impl { + //Note: Add an implementation of KokkosBlas::trsm in a next PR. +} +} +#endif // KOKKOSBLAS3_TRSM_IMPL_HPP_ diff --git a/src/blas/impl/KokkosBlas3_trsm_spec.hpp b/src/blas/impl/KokkosBlas3_trsm_spec.hpp index afea69ef7a..f2207bc4e9 100644 --- a/src/blas/impl/KokkosBlas3_trsm_spec.hpp +++ b/src/blas/impl/KokkosBlas3_trsm_spec.hpp @@ -79,12 +79,11 @@ struct trsm_eti_spec_avail { > { enum : bool { value = true }; }; #define KOKKOSBLAS3_TRSM_ETI_SPEC_AVAIL( SCALAR, LAYOUT, EXEC_SPACE, MEM_SPACE ) \ - KOKKOSBLAS3_TRSM_ETI_SPEC_AVAIL_LAYOUT( SCALAR, LAYOUT, LAYOUT, EXEC_SPACE, MEM_SPACE) \ KOKKOSBLAS3_TRSM_ETI_SPEC_AVAIL_LAYOUT( SCALAR, LAYOUT, LAYOUT, EXEC_SPACE, MEM_SPACE) // Include the actual specialization declarations #include -//#include +#include namespace KokkosBlas { namespace Impl { @@ -113,11 +112,8 @@ struct TRSM{ // Implementation of KokkosBlas::trsm. #if !defined(KOKKOSKERNELS_ETI_ONLY) || KOKKOSKERNELS_IMPL_COMPILE_LIBRARY template::value, - bool eti_spec_avail = trsm_eti_spec_avail::value - > -struct TRSM { + class BViewType> +struct TRSM { static void trsm (const char side[], const char uplo[], @@ -127,11 +123,28 @@ struct TRSM { const AViewType& A, const BViewType& B) { - std::ostringstream os; - os << "KokkosBlas::trsm currently supports only TPL interface." - << "Please enable Host BLAS or cuBLAS." - << "KokkosKernels implementation will be added in future release."; - Kokkos::Impl::throw_runtime_exception (os.str ()); + static_assert (Kokkos::Impl::is_view::value, + "AViewType must be a Kokkos::View."); + static_assert (Kokkos::Impl::is_view::value, + "BViewType must be a Kokkos::View."); + static_assert (static_cast (AViewType::rank) == 2, + "AViewType must have rank 2."); + static_assert (static_cast (BViewType::rank) == 2, + "BViewType must have rank 2."); + + Kokkos::Profiling::pushRegion(KOKKOSKERNELS_IMPL_COMPILE_LIBRARY?"KokkosBlas::trsm[ETI]":"KokkosBlas::trsm[noETI]"); + + typename AViewType::HostMirror h_A = Kokkos::create_mirror_view(A); + typename BViewType::HostMirror h_B = Kokkos::create_mirror_view(B); + + Kokkos::deep_copy(h_A, A); + Kokkos::deep_copy(h_B, B); + + SerialTrsm_Invoke (side, uplo, trans, diag, alpha, h_A, h_B); + + Kokkos::deep_copy(B, h_B); + + Kokkos::Profiling::popRegion(); } }; #endif //!defined(KOKKOSKERNELS_ETI_ONLY) || KOKKOSKERNELS_IMPL_COMPILE_LIBRARY @@ -165,14 +178,12 @@ template struct TRSM< \ false, true>; #define KOKKOSBLAS3_TRSM_ETI_SPEC_DECL( SCALAR, LAYOUT, EXEC_SPACE, MEM_SPACE ) \ - KOKKOSBLAS3_TRSM_ETI_SPEC_DECL_LAYOUTS(SCALAR, LAYOUT, LAYOUT, EXEC_SPACE, MEM_SPACE) \ KOKKOSBLAS3_TRSM_ETI_SPEC_DECL_LAYOUTS(SCALAR, LAYOUT, LAYOUT, EXEC_SPACE, MEM_SPACE) #define KOKKOSBLAS3_TRSM_ETI_SPEC_INST( SCALAR, LAYOUT, EXEC_SPACE, MEM_SPACE ) \ - KOKKOSBLAS3_TRSM_ETI_SPEC_INST_LAYOUTS(SCALAR, LAYOUT, LAYOUT, EXEC_SPACE, MEM_SPACE) \ KOKKOSBLAS3_TRSM_ETI_SPEC_INST_LAYOUTS(SCALAR, LAYOUT, LAYOUT, EXEC_SPACE, MEM_SPACE) #include -//#include +#include #endif // KOKKOSBLAS3_TRSM_SPEC_HPP_ diff --git a/src/blas/impl/KokkosBlas3_trsm_spec.hpp_ORIG b/src/blas/impl/KokkosBlas3_trsm_spec.hpp_ORIG new file mode 100644 index 0000000000..afea69ef7a --- /dev/null +++ b/src/blas/impl/KokkosBlas3_trsm_spec.hpp_ORIG @@ -0,0 +1,178 @@ +/* +//@HEADER +// ************************************************************************ +// +// KokkosKernels 0.9: Linear Algebra and Graph Kernels +// Copyright 2017 Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Siva Rajamanickam (srajama@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ +#ifndef KOKKOSBLAS3_TRSM_SPEC_HPP_ +#define KOKKOSBLAS3_TRSM_SPEC_HPP_ + +#include "KokkosKernels_config.h" +#include "Kokkos_Core.hpp" +#include "Kokkos_InnerProductSpaceTraits.hpp" +#include + +#if !defined(KOKKOSKERNELS_ETI_ONLY) || KOKKOSKERNELS_IMPL_COMPILE_LIBRARY +#include +#endif + +namespace KokkosBlas { +namespace Impl { +// Specialization struct which defines whether a specialization exists +template +struct trsm_eti_spec_avail { + enum : bool { value = false }; +}; +} +} + +// +// Macro for declaration of full specialization availability +// KokkosBlas::Impl::TRSM. This is NOT for users!!! All +// the declarations of full specializations go in this header file. +// We may spread out definitions (see _INST macro below) across one or +// more .cpp files. +// +#define KOKKOSBLAS3_TRSM_ETI_SPEC_AVAIL_LAYOUT( SCALAR, LAYOUTA, LAYOUTB, EXEC_SPACE, MEM_SPACE ) \ + template<> \ + struct trsm_eti_spec_avail< \ + Kokkos::View, \ + Kokkos::MemoryTraits >, \ + Kokkos::View, \ + Kokkos::MemoryTraits > \ + > { enum : bool { value = true }; }; + +#define KOKKOSBLAS3_TRSM_ETI_SPEC_AVAIL( SCALAR, LAYOUT, EXEC_SPACE, MEM_SPACE ) \ + KOKKOSBLAS3_TRSM_ETI_SPEC_AVAIL_LAYOUT( SCALAR, LAYOUT, LAYOUT, EXEC_SPACE, MEM_SPACE) \ + KOKKOSBLAS3_TRSM_ETI_SPEC_AVAIL_LAYOUT( SCALAR, LAYOUT, LAYOUT, EXEC_SPACE, MEM_SPACE) + +// Include the actual specialization declarations +#include +//#include + +namespace KokkosBlas { +namespace Impl { + +// +// trsm +// + +//Unification layer +template::value, + bool eti_spec_avail = trsm_eti_spec_avail::value + > +struct TRSM{ + static void + trsm (const char side[], + const char uplo[], + const char trans[], + const char diag[], + typename BViewType::const_value_type& alpha, + const AViewType& A, + const BViewType& B); +}; + +// Implementation of KokkosBlas::trsm. +#if !defined(KOKKOSKERNELS_ETI_ONLY) || KOKKOSKERNELS_IMPL_COMPILE_LIBRARY +template::value, + bool eti_spec_avail = trsm_eti_spec_avail::value + > +struct TRSM { + static void + trsm (const char side[], + const char uplo[], + const char trans[], + const char diag[], + typename BViewType::const_value_type& alpha, + const AViewType& A, + const BViewType& B) + { + std::ostringstream os; + os << "KokkosBlas::trsm currently supports only TPL interface." + << "Please enable Host BLAS or cuBLAS." + << "KokkosKernels implementation will be added in future release."; + Kokkos::Impl::throw_runtime_exception (os.str ()); + } +}; +#endif //!defined(KOKKOSKERNELS_ETI_ONLY) || KOKKOSKERNELS_IMPL_COMPILE_LIBRARY + +} // namespace Impl +} // namespace KokkosBlas + + +// +// Macro for declaration of full specialization of +// KokkosBlas::Impl::TRSM. This is NOT for users!!! +// All the declarations of full specializations go in this header +// file. We may spread out definitions (see _DEF macro below) across +// one or more .cpp files. +// + +#define KOKKOSBLAS3_TRSM_ETI_SPEC_DECL_LAYOUTS( SCALAR, LAYOUTA, LAYOUTB, EXEC_SPACE, MEM_SPACE ) \ +extern template struct TRSM< \ + Kokkos::View, \ + Kokkos::MemoryTraits >, \ + Kokkos::View, \ + Kokkos::MemoryTraits >, \ + false, true>; + +#define KOKKOSBLAS3_TRSM_ETI_SPEC_INST_LAYOUTS( SCALAR, LAYOUTA, LAYOUTB, EXEC_SPACE, MEM_SPACE ) \ +template struct TRSM< \ + Kokkos::View, \ + Kokkos::MemoryTraits >, \ + Kokkos::View, \ + Kokkos::MemoryTraits >, \ + false, true>; + +#define KOKKOSBLAS3_TRSM_ETI_SPEC_DECL( SCALAR, LAYOUT, EXEC_SPACE, MEM_SPACE ) \ + KOKKOSBLAS3_TRSM_ETI_SPEC_DECL_LAYOUTS(SCALAR, LAYOUT, LAYOUT, EXEC_SPACE, MEM_SPACE) \ + KOKKOSBLAS3_TRSM_ETI_SPEC_DECL_LAYOUTS(SCALAR, LAYOUT, LAYOUT, EXEC_SPACE, MEM_SPACE) + +#define KOKKOSBLAS3_TRSM_ETI_SPEC_INST( SCALAR, LAYOUT, EXEC_SPACE, MEM_SPACE ) \ + KOKKOSBLAS3_TRSM_ETI_SPEC_INST_LAYOUTS(SCALAR, LAYOUT, LAYOUT, EXEC_SPACE, MEM_SPACE) \ + KOKKOSBLAS3_TRSM_ETI_SPEC_INST_LAYOUTS(SCALAR, LAYOUT, LAYOUT, EXEC_SPACE, MEM_SPACE) + +#include +//#include + +#endif // KOKKOSBLAS3_TRSM_SPEC_HPP_ diff --git a/unit_test/blas/Test_Blas3_trsm.hpp b/unit_test/blas/Test_Blas3_trsm.hpp index 0d82d926a1..85c42ee09b 100644 --- a/unit_test/blas/Test_Blas3_trsm.hpp +++ b/unit_test/blas/Test_Blas3_trsm.hpp @@ -27,351 +27,56 @@ namespace Test { KOKKOS_INLINE_FUNCTION void operator() (const int& i) const { - A_(i,i) = A_(i,i)*1000; + A_(i,i) = A_(i,i)+10; } }; + template + struct VanillaGEMM { + bool A_t, B_t, A_c, B_c; + int N,K; + ViewTypeA A; + ViewTypeB B; + ViewTypeC C; + + typedef typename ViewTypeA::value_type ScalarA; + typedef typename ViewTypeB::value_type ScalarB; + typedef typename ViewTypeC::value_type ScalarC; + typedef Kokkos::Details::ArithTraits APT; + typedef typename APT::mag_type mag_type; + ScalarA alpha; + ScalarC beta; - //For convenient testing purpose, wrappers of BLAS trmm and - //cuBLAS trmm are used - //float - template - void trmm_wrapper (const char side[], - const char uplo[], - const char trans[], - const char diag[], - float& alpha, - const ViewTypeA& A, - const ViewTypeB& B) - { - const int M = static_cast (B.extent(0)); - const int N = static_cast (B.extent(1)); - - bool A_is_ll = std::is_same::value; - bool B_is_ll = std::is_same::value; - - const int AST = A_is_ll?A.stride(1):A.stride(0), LDA = (AST == 0) ? 1 : AST; - const int BST = B_is_ll?B.stride(1):B.stride(0), LDB = (BST == 0) ? 1 : BST; - -#ifdef KOKKOSKERNELS_ENABLE_TPL_CUBLAS - if( std::is_same< ExecSpace, Kokkos::Cuda >::value ) { - cublasHandle_t handle; - cublasStatus_t stat = cublasCreate(&handle); - if (stat != CUBLAS_STATUS_SUCCESS) - Kokkos::abort("CUBLAS initialization failed\n"); - - cublasSideMode_t side_; - cublasFillMode_t uplo_; - cublasOperation_t trans_; - cublasDiagType_t diag_; - - if(A_is_ll) { - if ((side[0]=='L')||(side[0]=='l')) side_ = CUBLAS_SIDE_LEFT; - else side_ = CUBLAS_SIDE_RIGHT; - if ((uplo[0]=='L')||(uplo[0]=='l')) uplo_ = CUBLAS_FILL_MODE_LOWER; - else uplo_ = CUBLAS_FILL_MODE_UPPER; - } else { - if ((side[0]=='L')||(side[0]=='l')) side_ = CUBLAS_SIDE_RIGHT; - else side_ = CUBLAS_SIDE_LEFT; - if ((uplo[0]=='L')||(uplo[0]=='l')) uplo_ = CUBLAS_FILL_MODE_UPPER; - else uplo_ = CUBLAS_FILL_MODE_LOWER; - } - if ((trans[0]=='N')||(trans[0]=='n')) trans_ = CUBLAS_OP_N; - else if ((trans[0]=='T')||(trans[0]=='t')) trans_ = CUBLAS_OP_T; - else trans_ = CUBLAS_OP_C; - if ((diag[0]=='U')||(diag[0]=='u')) diag_ = CUBLAS_DIAG_UNIT; - else diag_ = CUBLAS_DIAG_NON_UNIT; - - if(A_is_ll) - cublasStrmm(handle, side_, uplo_, trans_, diag_, M, N, &alpha, A.data(), LDA, B.data(), LDB, B.data(), LDB); - else - cublasStrmm(handle, side_, uplo_, trans_, diag_, N, M, &alpha, A.data(), LDA, B.data(), LDB, B.data(), LDB); - - cublasDestroy(handle); - } -#endif -#ifdef KOKKOSKERNELS_ENABLE_TPL_BLAS - if( std::is_same< MemSpace, Kokkos::HostSpace >::value ) { - char side_; - char uplo_; - - if(A_is_ll) { - if ((side[0]=='L')||(side[0]=='l')) side_ = 'L'; - else side_ = 'R'; - if ((uplo[0]=='L')||(uplo[0]=='l')) uplo_ = 'L'; - else uplo_ = 'U'; - } else { - if ((side[0]=='L')||(side[0]=='l')) side_ = 'R'; - else side_ = 'L'; - if ((uplo[0]=='L')||(uplo[0]=='l')) uplo_ = 'U'; - else uplo_ = 'L'; - } - - if(A_is_ll) - KokkosBlas::Impl::HostBlas::trmm(side_, uplo_, trans[0], diag[0], M, N, alpha, A.data(), LDA, B.data(), LDB); - else - KokkosBlas::Impl::HostBlas::trmm(side_, uplo_, trans[0], diag[0], N, M, alpha, A.data(), LDA, B.data(), LDB); - } -#endif - } - //double - template - void trmm_wrapper (const char side[], - const char uplo[], - const char trans[], - const char diag[], - double& alpha, - const ViewTypeA& A, - const ViewTypeB& B) - { - const int M = static_cast (B.extent(0)); - const int N = static_cast (B.extent(1)); - - bool A_is_ll = std::is_same::value; - bool B_is_ll = std::is_same::value; - - const int AST = A_is_ll?A.stride(1):A.stride(0), LDA = (AST == 0) ? 1 : AST; - const int BST = B_is_ll?B.stride(1):B.stride(0), LDB = (BST == 0) ? 1 : BST; - -#ifdef KOKKOSKERNELS_ENABLE_TPL_CUBLAS - if( std::is_same< ExecSpace, Kokkos::Cuda >::value ) { - cublasHandle_t handle; - cublasStatus_t stat = cublasCreate(&handle); - if (stat != CUBLAS_STATUS_SUCCESS) - Kokkos::abort("CUBLAS initialization failed\n"); - - cublasSideMode_t side_; - cublasFillMode_t uplo_; - cublasOperation_t trans_; - cublasDiagType_t diag_; - - if(A_is_ll) { - if ((side[0]=='L')||(side[0]=='l')) side_ = CUBLAS_SIDE_LEFT; - else side_ = CUBLAS_SIDE_RIGHT; - if ((uplo[0]=='L')||(uplo[0]=='l')) uplo_ = CUBLAS_FILL_MODE_LOWER; - else uplo_ = CUBLAS_FILL_MODE_UPPER; - } else { - if ((side[0]=='L')||(side[0]=='l')) side_ = CUBLAS_SIDE_RIGHT; - else side_ = CUBLAS_SIDE_LEFT; - if ((uplo[0]=='L')||(uplo[0]=='l')) uplo_ = CUBLAS_FILL_MODE_UPPER; - else uplo_ = CUBLAS_FILL_MODE_LOWER; - } - if ((trans[0]=='N')||(trans[0]=='n')) trans_ = CUBLAS_OP_N; - else if ((trans[0]=='T')||(trans[0]=='t')) trans_ = CUBLAS_OP_T; - else trans_ = CUBLAS_OP_C; - if ((diag[0]=='U')||(diag[0]=='u')) diag_ = CUBLAS_DIAG_UNIT; - else diag_ = CUBLAS_DIAG_NON_UNIT; - - if(A_is_ll) - cublasDtrmm(handle, side_, uplo_, trans_, diag_, M, N, &alpha, A.data(), LDA, B.data(), LDB, B.data(), LDB); - else - cublasDtrmm(handle, side_, uplo_, trans_, diag_, N, M, &alpha, A.data(), LDA, B.data(), LDB, B.data(), LDB); - - cublasDestroy(handle); - } -#endif -#ifdef KOKKOSKERNELS_ENABLE_TPL_BLAS - if( std::is_same< MemSpace, Kokkos::HostSpace >::value ) { - char side_; - char uplo_; - - if(A_is_ll) { - if ((side[0]=='L')||(side[0]=='l')) side_ = 'L'; - else side_ = 'R'; - if ((uplo[0]=='L')||(uplo[0]=='l')) uplo_ = 'L'; - else uplo_ = 'U'; - } else { - if ((side[0]=='L')||(side[0]=='l')) side_ = 'R'; - else side_ = 'L'; - if ((uplo[0]=='L')||(uplo[0]=='l')) uplo_ = 'U'; - else uplo_ = 'L'; - } - - if(A_is_ll) - KokkosBlas::Impl::HostBlas::trmm(side_, uplo_, trans[0], diag[0], M, N, alpha, A.data(), LDA, B.data(), LDB); - else - KokkosBlas::Impl::HostBlas::trmm(side_, uplo_, trans[0], diag[0], N, M, alpha, A.data(), LDA, B.data(), LDB); - } -#endif - } - //Kokkos::complex - template - void trmm_wrapper (const char side[], - const char uplo[], - const char trans[], - const char diag[], - Kokkos::complex& alpha, - const ViewTypeA& A, - const ViewTypeB& B) - { - const int M = static_cast (B.extent(0)); - const int N = static_cast (B.extent(1)); - - bool A_is_ll = std::is_same::value; - bool B_is_ll = std::is_same::value; - - const int AST = A_is_ll?A.stride(1):A.stride(0), LDA = (AST == 0) ? 1 : AST; - const int BST = B_is_ll?B.stride(1):B.stride(0), LDB = (BST == 0) ? 1 : BST; - -#ifdef KOKKOSKERNELS_ENABLE_TPL_CUBLAS - if( std::is_same< ExecSpace, Kokkos::Cuda >::value ) { - cublasHandle_t handle; - cublasStatus_t stat = cublasCreate(&handle); - if (stat != CUBLAS_STATUS_SUCCESS) - Kokkos::abort("CUBLAS initialization failed\n"); - - cublasSideMode_t side_; - cublasFillMode_t uplo_; - cublasOperation_t trans_; - cublasDiagType_t diag_; - - if(A_is_ll) { - if ((side[0]=='L')||(side[0]=='l')) side_ = CUBLAS_SIDE_LEFT; - else side_ = CUBLAS_SIDE_RIGHT; - if ((uplo[0]=='L')||(uplo[0]=='l')) uplo_ = CUBLAS_FILL_MODE_LOWER; - else uplo_ = CUBLAS_FILL_MODE_UPPER; - } else { - if ((side[0]=='L')||(side[0]=='l')) side_ = CUBLAS_SIDE_RIGHT; - else side_ = CUBLAS_SIDE_LEFT; - if ((uplo[0]=='L')||(uplo[0]=='l')) uplo_ = CUBLAS_FILL_MODE_UPPER; - else uplo_ = CUBLAS_FILL_MODE_LOWER; - } - if ((trans[0]=='N')||(trans[0]=='n')) trans_ = CUBLAS_OP_N; - else if ((trans[0]=='T')||(trans[0]=='t')) trans_ = CUBLAS_OP_T; - else trans_ = CUBLAS_OP_C; - if ((diag[0]=='U')||(diag[0]=='u')) diag_ = CUBLAS_DIAG_UNIT; - else diag_ = CUBLAS_DIAG_NON_UNIT; - - if(A_is_ll) - cublasCtrmm(handle, side_, uplo_, trans_, diag_, M, N, - reinterpret_cast(&alpha), - reinterpret_cast(A.data()), LDA, - reinterpret_cast(B.data()), LDB, - reinterpret_cast< cuComplex*>(B.data()), LDB); - else - cublasCtrmm(handle, side_, uplo_, trans_, diag_, N, M, - reinterpret_cast(&alpha), - reinterpret_cast(A.data()), LDA, - reinterpret_cast(B.data()), LDB, - reinterpret_cast< cuComplex*>(B.data()), LDB); - - cublasDestroy(handle); - } -#endif -#ifdef KOKKOSKERNELS_ENABLE_TPL_BLAS - if( std::is_same< MemSpace, Kokkos::HostSpace >::value ) { - char side_; - char uplo_; - - if(A_is_ll) { - if ((side[0]=='L')||(side[0]=='l')) side_ = 'L'; - else side_ = 'R'; - if ((uplo[0]=='L')||(uplo[0]=='l')) uplo_ = 'L'; - else uplo_ = 'U'; - } else { - if ((side[0]=='L')||(side[0]=='l')) side_ = 'R'; - else side_ = 'L'; - if ((uplo[0]=='L')||(uplo[0]=='l')) uplo_ = 'U'; - else uplo_ = 'L'; - } - - const std::complex alpha_val = alpha; - if(A_is_ll) - KokkosBlas::Impl::HostBlas >::trmm(side_, uplo_, trans[0], diag[0], M, N, alpha_val, reinterpret_cast*>(A.data()), LDA, reinterpret_cast*>(B.data()), LDB); - else - KokkosBlas::Impl::HostBlas >::trmm(side_, uplo_, trans[0], diag[0], N, M, alpha_val, reinterpret_cast*>(A.data()), LDA, reinterpret_cast*>(B.data()), LDB); - } -#endif - } - //Kokkos::complex - template - void trmm_wrapper (const char side[], - const char uplo[], - const char trans[], - const char diag[], - Kokkos::complex& alpha, - const ViewTypeA& A, - const ViewTypeB& B) - { - const int M = static_cast (B.extent(0)); - const int N = static_cast (B.extent(1)); - - bool A_is_ll = std::is_same::value; - bool B_is_ll = std::is_same::value; - - const int AST = A_is_ll?A.stride(1):A.stride(0), LDA = (AST == 0) ? 1 : AST; - const int BST = B_is_ll?B.stride(1):B.stride(0), LDB = (BST == 0) ? 1 : BST; - -#ifdef KOKKOSKERNELS_ENABLE_TPL_CUBLAS - if( std::is_same< ExecSpace, Kokkos::Cuda >::value ) { - cublasHandle_t handle; - cublasStatus_t stat = cublasCreate(&handle); - if (stat != CUBLAS_STATUS_SUCCESS) - Kokkos::abort("CUBLAS initialization failed\n"); - - cublasSideMode_t side_; - cublasFillMode_t uplo_; - cublasOperation_t trans_; - cublasDiagType_t diag_; - - if(A_is_ll) { - if ((side[0]=='L')||(side[0]=='l')) side_ = CUBLAS_SIDE_LEFT; - else side_ = CUBLAS_SIDE_RIGHT; - if ((uplo[0]=='L')||(uplo[0]=='l')) uplo_ = CUBLAS_FILL_MODE_LOWER; - else uplo_ = CUBLAS_FILL_MODE_UPPER; - } else { - if ((side[0]=='L')||(side[0]=='l')) side_ = CUBLAS_SIDE_RIGHT; - else side_ = CUBLAS_SIDE_LEFT; - if ((uplo[0]=='L')||(uplo[0]=='l')) uplo_ = CUBLAS_FILL_MODE_UPPER; - else uplo_ = CUBLAS_FILL_MODE_LOWER; - } - if ((trans[0]=='N')||(trans[0]=='n')) trans_ = CUBLAS_OP_N; - else if ((trans[0]=='T')||(trans[0]=='t')) trans_ = CUBLAS_OP_T; - else trans_ = CUBLAS_OP_C; - if ((diag[0]=='U')||(diag[0]=='u')) diag_ = CUBLAS_DIAG_UNIT; - else diag_ = CUBLAS_DIAG_NON_UNIT; - - if(A_is_ll) - cublasZtrmm(handle, side_, uplo_, trans_, diag_, M, N, - reinterpret_cast(&alpha), - reinterpret_cast(A.data()), LDA, - reinterpret_cast(B.data()), LDB, - reinterpret_cast< cuDoubleComplex*>(B.data()), LDB); - else - cublasZtrmm(handle, side_, uplo_, trans_, diag_, N, M, - reinterpret_cast(&alpha), - reinterpret_cast(A.data()), LDA, - reinterpret_cast(B.data()), LDB, - reinterpret_cast< cuDoubleComplex*>(B.data()), LDB); - - cublasDestroy(handle); - } + KOKKOS_INLINE_FUNCTION + void operator() (const typename Kokkos::TeamPolicy::member_type& team) const { +// GNU COMPILER BUG WORKAROUND +#if defined(KOKKOS_COMPILER_GNU) && !defined(__CUDA_ARCH__) + int i = team.league_rank(); +#else + const int i = team.league_rank(); #endif -#ifdef KOKKOSKERNELS_ENABLE_TPL_BLAS - if( std::is_same< MemSpace, Kokkos::HostSpace >::value ) { - char side_; - char uplo_; - - if(A_is_ll) { - if ((side[0]=='L')||(side[0]=='l')) side_ = 'L'; - else side_ = 'R'; - if ((uplo[0]=='L')||(uplo[0]=='l')) uplo_ = 'L'; - else uplo_ = 'U'; - } else { - if ((side[0]=='L')||(side[0]=='l')) side_ = 'R'; - else side_ = 'L'; - if ((uplo[0]=='L')||(uplo[0]=='l')) uplo_ = 'U'; - else uplo_ = 'L'; - } - - const std::complex alpha_val = alpha; - if(A_is_ll) - KokkosBlas::Impl::HostBlas >::trmm(side_, uplo_, trans[0], diag[0], M, N, alpha_val, reinterpret_cast*>(A.data()), LDA, reinterpret_cast*>(B.data()), LDB); - else - KokkosBlas::Impl::HostBlas >::trmm(side_, uplo_, trans[0], diag[0], N, M, alpha_val, reinterpret_cast*>(A.data()), LDA, reinterpret_cast*>(B.data()), LDB); - } + Kokkos::parallel_for(Kokkos::TeamThreadRange(team,N), [&] (const int& j) { + ScalarC C_ij = 0.0; + + // GNU 5.3, 5.4 and 6.1 (and maybe more) crash with another nested lambda here + +#if defined(KOKKOS_COMPILER_GNU) && !defined(KOKKOS_COMPILER_NVCC) + for(int k=0; k rand_pool(seed); - Kokkos::fill_random(A, rand_pool,ScalarA(0.01)); if((diag[0]=='U')||(diag[0]=='u')) { + Kokkos::fill_random(A, rand_pool, Kokkos::rand, ScalarA>::max()*0.1); using functor_type = UnitDiagTRSM; functor_type udtrsm(A); Kokkos::parallel_for("KokkosBlas::Test::UnitDiagTRSM", Kokkos::RangePolicy(0,K), udtrsm); } else {//(diag[0]=='N')||(diag[0]=='n') + Kokkos::fill_random(A, rand_pool, Kokkos::rand, ScalarA>::max()); using functor_type = NonUnitDiagTRSM; functor_type nudtrsm(A); Kokkos::parallel_for("KokkosBlas::Test::NonUnitDiagTRSM", Kokkos::RangePolicy(0,K), nudtrsm); } - Kokkos::deep_copy(X0, ScalarA(1)); + Kokkos::fill_random(X0, rand_pool, Kokkos::rand, ScalarA>::max()); - Kokkos::deep_copy(B, X0); + Kokkos::deep_copy(h_A, A); + Kokkos::deep_copy(h_X0, X0); - ScalarA alpha_trmm = 1.0/alpha; + ScalarA alpha_trmm = ScalarA(1)/alpha; + ScalarA beta = ScalarA(0); Kokkos::fence(); - trmm_wrapper(side, uplo, trans, diag, alpha_trmm, A, B); + if ((uplo[0]=='L')||(uplo[0]=='l')) { + for (int i = 0; i < K-1; i++) + for (int j = i+1; j < K; j++) + h_A(i,j) = ScalarA(0); + } + else { + for (int i = 1; i < K; i++) + for (int j = 0; j < i; j++) + h_A(i,j) = ScalarA(0); + } + + Kokkos::deep_copy(A, h_A); + + if (A_l){ + struct VanillaGEMM vgemm; + vgemm.A_t = (trans[0]!='N') && (trans[0]!='n'); vgemm.B_t = false; + vgemm.A_c = (trans[0]=='C') || (trans[0]=='c'); vgemm.B_c = false; + vgemm.N = N; vgemm.K = K; + vgemm.A = A; vgemm.B = X0; + vgemm.C = B; + vgemm.alpha = alpha_trmm; + vgemm.beta = beta; + Kokkos::parallel_for("KokkosBlas::Test::VanillaGEMM", Kokkos::TeamPolicy(M,Kokkos::AUTO,16), vgemm); + } + else { + struct VanillaGEMM vgemm; + vgemm.A_t = false; vgemm.B_t = (trans[0]!='N') && (trans[0]!='n'); + vgemm.A_c = false; vgemm.B_c = (trans[0]=='C') || (trans[0]=='c'); + vgemm.N = N; vgemm.K = K; + vgemm.A = X0; vgemm.B = A; + vgemm.C = B; + vgemm.alpha = alpha_trmm; + vgemm.beta = beta; + Kokkos::parallel_for("KokkosBlas::Test::VanillaGEMM", Kokkos::TeamPolicy(M,Kokkos::AUTO,16), vgemm); + } + Kokkos::fence(); KokkosBlas::trsm(side, uplo, trans, diag, alpha, A, B); Kokkos::fence(); - Kokkos::deep_copy(h_B, B); - Kokkos::deep_copy(h_X0, X0); + Kokkos::deep_copy(h_B, B); // Checking vs ref on CPU, this eps is about 10^-6 - const mag_type eps = 1.0e10 * machine_eps; + const mag_type eps = 1.0e8 * machine_eps; bool test_flag = true; for (int i=0; i eps ) { test_flag = false; - //printf( " Error: abs_result( %.15lf ) != abs_solution( %.15lf ) at (i %ld, j %ld)\n", APT::abs(h_B(i,j)), APT::abs(h_X0(i,j)), i, j ); + //printf(" Error: abs_result( %.15lf ) != abs_solution( %.15lf ) (abs result-solution %.15lf) at (i %ld, j %ld)\n", APT::abs(h_B(i,j)), APT::abs(h_X0(i,j)), APT::abs(h_B(i,j) - h_X0(i,j)), i, j); break; } } @@ -454,29 +197,23 @@ int test_trsm(const char* mode, ScalarA alpha) { using view_type_a_ll = Kokkos::View; using view_type_b_ll = Kokkos::View; Test::impl_test_trsm(&mode[0],&mode[1],&mode[2],&mode[3],0,0,alpha); - Test::impl_test_trsm(&mode[0],&mode[1],&mode[2],&mode[3],101,1,alpha); - Test::impl_test_trsm(&mode[0],&mode[1],&mode[2],&mode[3],1,101,alpha); Test::impl_test_trsm(&mode[0],&mode[1],&mode[2],&mode[3],101,19,alpha); Test::impl_test_trsm(&mode[0],&mode[1],&mode[2],&mode[3],19,101,alpha); - Test::impl_test_trsm(&mode[0],&mode[1],&mode[2],&mode[3],3031,91,alpha); + Test::impl_test_trsm(&mode[0],&mode[1],&mode[2],&mode[3],1031,731,alpha); #endif #if defined(KOKKOSKERNELS_INST_LAYOUTRIGHT) || (!defined(KOKKOSKERNELS_ETI_ONLY) && !defined(KOKKOSKERNELS_IMPL_CHECK_ETI_CALLS)) using view_type_a_lr = Kokkos::View; using view_type_b_lr = Kokkos::View; Test::impl_test_trsm(&mode[0],&mode[1],&mode[2],&mode[3],0,0,alpha); - Test::impl_test_trsm(&mode[0],&mode[1],&mode[2],&mode[3],101,1,alpha); - Test::impl_test_trsm(&mode[0],&mode[1],&mode[2],&mode[3],1,101,alpha); Test::impl_test_trsm(&mode[0],&mode[1],&mode[2],&mode[3],101,19,alpha); Test::impl_test_trsm(&mode[0],&mode[1],&mode[2],&mode[3],19,101,alpha); - Test::impl_test_trsm(&mode[0],&mode[1],&mode[2],&mode[3],3031,91,alpha); + Test::impl_test_trsm(&mode[0],&mode[1],&mode[2],&mode[3],1031,731,alpha); #endif return 1; } -#if defined( KOKKOSKERNELS_ENABLE_TPL_CUBLAS ) || defined (KOKKOSKERNELS_ENABLE_TPL_BLAS) - #if defined(KOKKOSKERNELS_INST_FLOAT) || (!defined(KOKKOSKERNELS_ETI_ONLY) && !defined(KOKKOSKERNELS_IMPL_CHECK_ETI_CALLS)) TEST_F( TestCategory, trsm_float ) { Kokkos::Profiling::pushRegion("KokkosBlas::Test::trsm_float"); @@ -577,7 +314,7 @@ TEST_F( TestCategory, trsm_complex_double ) { test_trsm,Kokkos::complex,TestExecSpace> ("LUNU",alpha); test_trsm,Kokkos::complex,TestExecSpace> ("LUCN",alpha); test_trsm,Kokkos::complex,TestExecSpace> ("LUCU",alpha); - + test_trsm,Kokkos::complex,TestExecSpace> ("RLNN",alpha); test_trsm,Kokkos::complex,TestExecSpace> ("RLNU",alpha); test_trsm,Kokkos::complex,TestExecSpace> ("RLCN",alpha); @@ -596,7 +333,7 @@ TEST_F( TestCategory, trsm_complex_double ) { test_trsm,Kokkos::complex,TestExecSpace> ("LUNU",alpha); test_trsm,Kokkos::complex,TestExecSpace> ("LUCN",alpha); test_trsm,Kokkos::complex,TestExecSpace> ("LUCU",alpha); - + test_trsm,Kokkos::complex,TestExecSpace> ("RLNN",alpha); test_trsm,Kokkos::complex,TestExecSpace> ("RLNU",alpha); test_trsm,Kokkos::complex,TestExecSpace> ("RLCN",alpha); @@ -612,7 +349,7 @@ TEST_F( TestCategory, trsm_complex_double ) { #if defined(KOKKOSKERNELS_INST_COMPLEX_FLOAT) || (!defined(KOKKOSKERNELS_ETI_ONLY) && !defined(KOKKOSKERNELS_IMPL_CHECK_ETI_CALLS)) TEST_F( TestCategory, trsm_complex_float ) { Kokkos::Profiling::pushRegion("KokkosBlas::Test::trsm_complex_float"); - Kokkos::complex alpha = 5.0f; + Kokkos::complex alpha = 1.0f; test_trsm,Kokkos::complex,TestExecSpace> ("LLNN",alpha); test_trsm,Kokkos::complex,TestExecSpace> ("LLNU",alpha); test_trsm,Kokkos::complex,TestExecSpace> ("LLCN",alpha); @@ -652,5 +389,3 @@ TEST_F( TestCategory, trsm_complex_float ) { Kokkos::Profiling::popRegion(); } #endif - -#endif//KOKKOSKERNELS_ENABLE_TPL_CUBLAS || KOKKOSKERNELS_ENABLE_TPL_BLAS diff --git a/unit_test/cuda/Test_Cuda_Blas3_trsm.cpp b/unit_test/cuda/Test_Cuda_Blas3_trsm.cpp index 629b71ff1c..6506c49c1d 100644 --- a/unit_test/cuda/Test_Cuda_Blas3_trsm.cpp +++ b/unit_test/cuda/Test_Cuda_Blas3_trsm.cpp @@ -1,4 +1,2 @@ #include -#ifdef KOKKOSKERNELS_ENABLE_TPL_CUBLAS #include -#endif diff --git a/unit_test/openmp/Test_OpenMP_Blas3_trsm.cpp b/unit_test/openmp/Test_OpenMP_Blas3_trsm.cpp index 8dc632ba96..6941f4c387 100644 --- a/unit_test/openmp/Test_OpenMP_Blas3_trsm.cpp +++ b/unit_test/openmp/Test_OpenMP_Blas3_trsm.cpp @@ -1,4 +1,2 @@ #include -#ifdef KOKKOSKERNELS_ENABLE_TPL_BLAS #include -#endif diff --git a/unit_test/serial/Test_Serial_Blas3_trsm.cpp b/unit_test/serial/Test_Serial_Blas3_trsm.cpp index 0ca05bbda7..c01d885ee6 100644 --- a/unit_test/serial/Test_Serial_Blas3_trsm.cpp +++ b/unit_test/serial/Test_Serial_Blas3_trsm.cpp @@ -1,4 +1,2 @@ #include -#ifdef KOKKOSKERNELS_ENABLE_TPL_BLAS #include -#endif diff --git a/unit_test/threads/Test_Threads_Blas3_trsm.cpp b/unit_test/threads/Test_Threads_Blas3_trsm.cpp index 95a59aa07a..3556d17bb5 100644 --- a/unit_test/threads/Test_Threads_Blas3_trsm.cpp +++ b/unit_test/threads/Test_Threads_Blas3_trsm.cpp @@ -1,4 +1,2 @@ #include -#ifdef KOKKOSKERNELS_ENABLE_TPL_BLAS #include -#endif \ No newline at end of file From f2040deb5b285038fc97575485817c0dc24dcef2 Mon Sep 17 00:00:00 2001 From: Vinh Dang Date: Thu, 19 Dec 2019 16:40:20 -0700 Subject: [PATCH 06/10] Accidentally pushed this original file --- src/blas/impl/KokkosBlas3_trsm_impl.hpp_ORIG | 60 -------------------- 1 file changed, 60 deletions(-) delete mode 100644 src/blas/impl/KokkosBlas3_trsm_impl.hpp_ORIG diff --git a/src/blas/impl/KokkosBlas3_trsm_impl.hpp_ORIG b/src/blas/impl/KokkosBlas3_trsm_impl.hpp_ORIG deleted file mode 100644 index 576d054bad..0000000000 --- a/src/blas/impl/KokkosBlas3_trsm_impl.hpp_ORIG +++ /dev/null @@ -1,60 +0,0 @@ -/* -//@HEADER -// ************************************************************************ -// -// KokkosKernels 0.9: Linear Algebra and Graph Kernels -// Copyright 2017 Sandia Corporation -// -// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, -// the U.S. Government retains certain rights in this software. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// 3. Neither the name of the Corporation nor the names of the -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY -// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE -// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -// Questions? Contact Siva Rajamanickam (srajama@sandia.gov) -// -// ************************************************************************ -//@HEADER -*/ - -#ifndef KOKKOSBLAS3_TRSM_IMPL_HPP_ -#define KOKKOSBLAS3_TRSM_IMPL_HPP_ - -/// \file KokkosBlas3_trsm_impl.hpp -/// \brief Implementation(s) of triangular linear system solve (with multiple RHSs) . - -#include "KokkosKernels_config.h" -#include "Kokkos_Core.hpp" -#include "Kokkos_ArithTraits.hpp" - - -namespace KokkosBlas { -namespace Impl { - //Note: Add an implementation of KokkosBlas::trsm in a next PR. -} -} -#endif // KOKKOSBLAS3_TRSM_IMPL_HPP_ From 387640cc13d12740b13d0ee8553f4537df29794c Mon Sep 17 00:00:00 2001 From: Vinh Dang Date: Thu, 19 Dec 2019 16:41:01 -0700 Subject: [PATCH 07/10] Accidentally pushed this original file --- src/blas/impl/KokkosBlas3_trsm_spec.hpp_ORIG | 178 ------------------- 1 file changed, 178 deletions(-) delete mode 100644 src/blas/impl/KokkosBlas3_trsm_spec.hpp_ORIG diff --git a/src/blas/impl/KokkosBlas3_trsm_spec.hpp_ORIG b/src/blas/impl/KokkosBlas3_trsm_spec.hpp_ORIG deleted file mode 100644 index afea69ef7a..0000000000 --- a/src/blas/impl/KokkosBlas3_trsm_spec.hpp_ORIG +++ /dev/null @@ -1,178 +0,0 @@ -/* -//@HEADER -// ************************************************************************ -// -// KokkosKernels 0.9: Linear Algebra and Graph Kernels -// Copyright 2017 Sandia Corporation -// -// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, -// the U.S. Government retains certain rights in this software. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// 3. Neither the name of the Corporation nor the names of the -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY -// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE -// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -// Questions? Contact Siva Rajamanickam (srajama@sandia.gov) -// -// ************************************************************************ -//@HEADER -*/ -#ifndef KOKKOSBLAS3_TRSM_SPEC_HPP_ -#define KOKKOSBLAS3_TRSM_SPEC_HPP_ - -#include "KokkosKernels_config.h" -#include "Kokkos_Core.hpp" -#include "Kokkos_InnerProductSpaceTraits.hpp" -#include - -#if !defined(KOKKOSKERNELS_ETI_ONLY) || KOKKOSKERNELS_IMPL_COMPILE_LIBRARY -#include -#endif - -namespace KokkosBlas { -namespace Impl { -// Specialization struct which defines whether a specialization exists -template -struct trsm_eti_spec_avail { - enum : bool { value = false }; -}; -} -} - -// -// Macro for declaration of full specialization availability -// KokkosBlas::Impl::TRSM. This is NOT for users!!! All -// the declarations of full specializations go in this header file. -// We may spread out definitions (see _INST macro below) across one or -// more .cpp files. -// -#define KOKKOSBLAS3_TRSM_ETI_SPEC_AVAIL_LAYOUT( SCALAR, LAYOUTA, LAYOUTB, EXEC_SPACE, MEM_SPACE ) \ - template<> \ - struct trsm_eti_spec_avail< \ - Kokkos::View, \ - Kokkos::MemoryTraits >, \ - Kokkos::View, \ - Kokkos::MemoryTraits > \ - > { enum : bool { value = true }; }; - -#define KOKKOSBLAS3_TRSM_ETI_SPEC_AVAIL( SCALAR, LAYOUT, EXEC_SPACE, MEM_SPACE ) \ - KOKKOSBLAS3_TRSM_ETI_SPEC_AVAIL_LAYOUT( SCALAR, LAYOUT, LAYOUT, EXEC_SPACE, MEM_SPACE) \ - KOKKOSBLAS3_TRSM_ETI_SPEC_AVAIL_LAYOUT( SCALAR, LAYOUT, LAYOUT, EXEC_SPACE, MEM_SPACE) - -// Include the actual specialization declarations -#include -//#include - -namespace KokkosBlas { -namespace Impl { - -// -// trsm -// - -//Unification layer -template::value, - bool eti_spec_avail = trsm_eti_spec_avail::value - > -struct TRSM{ - static void - trsm (const char side[], - const char uplo[], - const char trans[], - const char diag[], - typename BViewType::const_value_type& alpha, - const AViewType& A, - const BViewType& B); -}; - -// Implementation of KokkosBlas::trsm. -#if !defined(KOKKOSKERNELS_ETI_ONLY) || KOKKOSKERNELS_IMPL_COMPILE_LIBRARY -template::value, - bool eti_spec_avail = trsm_eti_spec_avail::value - > -struct TRSM { - static void - trsm (const char side[], - const char uplo[], - const char trans[], - const char diag[], - typename BViewType::const_value_type& alpha, - const AViewType& A, - const BViewType& B) - { - std::ostringstream os; - os << "KokkosBlas::trsm currently supports only TPL interface." - << "Please enable Host BLAS or cuBLAS." - << "KokkosKernels implementation will be added in future release."; - Kokkos::Impl::throw_runtime_exception (os.str ()); - } -}; -#endif //!defined(KOKKOSKERNELS_ETI_ONLY) || KOKKOSKERNELS_IMPL_COMPILE_LIBRARY - -} // namespace Impl -} // namespace KokkosBlas - - -// -// Macro for declaration of full specialization of -// KokkosBlas::Impl::TRSM. This is NOT for users!!! -// All the declarations of full specializations go in this header -// file. We may spread out definitions (see _DEF macro below) across -// one or more .cpp files. -// - -#define KOKKOSBLAS3_TRSM_ETI_SPEC_DECL_LAYOUTS( SCALAR, LAYOUTA, LAYOUTB, EXEC_SPACE, MEM_SPACE ) \ -extern template struct TRSM< \ - Kokkos::View, \ - Kokkos::MemoryTraits >, \ - Kokkos::View, \ - Kokkos::MemoryTraits >, \ - false, true>; - -#define KOKKOSBLAS3_TRSM_ETI_SPEC_INST_LAYOUTS( SCALAR, LAYOUTA, LAYOUTB, EXEC_SPACE, MEM_SPACE ) \ -template struct TRSM< \ - Kokkos::View, \ - Kokkos::MemoryTraits >, \ - Kokkos::View, \ - Kokkos::MemoryTraits >, \ - false, true>; - -#define KOKKOSBLAS3_TRSM_ETI_SPEC_DECL( SCALAR, LAYOUT, EXEC_SPACE, MEM_SPACE ) \ - KOKKOSBLAS3_TRSM_ETI_SPEC_DECL_LAYOUTS(SCALAR, LAYOUT, LAYOUT, EXEC_SPACE, MEM_SPACE) \ - KOKKOSBLAS3_TRSM_ETI_SPEC_DECL_LAYOUTS(SCALAR, LAYOUT, LAYOUT, EXEC_SPACE, MEM_SPACE) - -#define KOKKOSBLAS3_TRSM_ETI_SPEC_INST( SCALAR, LAYOUT, EXEC_SPACE, MEM_SPACE ) \ - KOKKOSBLAS3_TRSM_ETI_SPEC_INST_LAYOUTS(SCALAR, LAYOUT, LAYOUT, EXEC_SPACE, MEM_SPACE) \ - KOKKOSBLAS3_TRSM_ETI_SPEC_INST_LAYOUTS(SCALAR, LAYOUT, LAYOUT, EXEC_SPACE, MEM_SPACE) - -#include -//#include - -#endif // KOKKOSBLAS3_TRSM_SPEC_HPP_ From 85c76ebd0f9c587c5763ce7928d0d29daafed590 Mon Sep 17 00:00:00 2001 From: Vinh Dang Date: Fri, 20 Dec 2019 10:15:47 -0700 Subject: [PATCH 08/10] Use KOKKOS_RESTRICT --- src/blas/impl/KokkosBlas3_trsm_impl.hpp | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/blas/impl/KokkosBlas3_trsm_impl.hpp b/src/blas/impl/KokkosBlas3_trsm_impl.hpp index 61eba5210a..2e5c189634 100644 --- a/src/blas/impl/KokkosBlas3_trsm_impl.hpp +++ b/src/blas/impl/KokkosBlas3_trsm_impl.hpp @@ -67,8 +67,8 @@ int SerialTrsmInternalLeftLowerConj(const bool use_unit_diag, const int m, const int n, const ScalarType alpha, - const ValueType *__restrict__ A, const int as0, const int as1, - /**/ ValueType *__restrict__ B, const int bs0, const int bs1) { + const ValueType* KOKKOS_RESTRICT A, const int as0, const int as1, + /**/ ValueType* KOKKOS_RESTRICT B, const int bs0, const int bs1) { typedef Kokkos::Details::ArithTraits AT; @@ -83,11 +83,11 @@ SerialTrsmInternalLeftLowerConj(const bool use_unit_diag, const int iend = m-p-1, jend = n; const ValueType - *__restrict__ a21 = iend ? A+(p+1)*as0+p*as1 : NULL; + *KOKKOS_RESTRICT a21 = iend ? A+(p+1)*as0+p*as1 : NULL; ValueType - *__restrict__ b1t = B+p*bs0, - *__restrict__ B2 = iend ? B+(p+1)*bs0 : NULL; + *KOKKOS_RESTRICT b1t = B+p*bs0, + *KOKKOS_RESTRICT B2 = iend ? B+(p+1)*bs0 : NULL; if (!use_unit_diag) { const ValueType alpha11 = AT::conj(A[p*as0+p*as1]); @@ -109,8 +109,8 @@ int SerialTrsmInternalLeftUpperConj(const bool use_unit_diag, const int m, const int n, const ScalarType alpha, - const ValueType *__restrict__ A, const int as0, const int as1, - /**/ ValueType *__restrict__ B, const int bs0, const int bs1) { + const ValueType* KOKKOS_RESTRICT A, const int as0, const int as1, + /**/ ValueType* KOKKOS_RESTRICT B, const int bs0, const int bs1) { typedef Kokkos::Details::ArithTraits AT; @@ -121,12 +121,12 @@ SerialTrsmInternalLeftUpperConj(const bool use_unit_diag, if (alpha != one) SerialScaleInternal::invoke(m, n, alpha, B, bs0, bs1); if (m <= 0 || n <= 0) return 0; - ValueType *__restrict__ B0 = B; + ValueType *KOKKOS_RESTRICT B0 = B; for (int p=(m-1);p>=0;--p) { const int iend = p, jend = n; - const ValueType *__restrict__ a01 = A+p*as1; - ValueType *__restrict__ b1t = B+p*bs0; + const ValueType* KOKKOS_RESTRICT a01 = A+p*as1; + ValueType* KOKKOS_RESTRICT b1t = B+p*bs0; if (!use_unit_diag) { const ValueType alpha11 = AT::conj(A[p*as0+p*as1]); From dda5321f25924c99a54b5a300b127e5b60de89e3 Mon Sep 17 00:00:00 2001 From: Vinh Dang Date: Fri, 20 Dec 2019 12:00:06 -0700 Subject: [PATCH 09/10] Fix unused warning --- unit_test/blas/Test_Blas3_trsm.hpp | 2 -- 1 file changed, 2 deletions(-) diff --git a/unit_test/blas/Test_Blas3_trsm.hpp b/unit_test/blas/Test_Blas3_trsm.hpp index 85c42ee09b..8c876e4077 100644 --- a/unit_test/blas/Test_Blas3_trsm.hpp +++ b/unit_test/blas/Test_Blas3_trsm.hpp @@ -86,9 +86,7 @@ namespace Test { int M, int N, typename ViewTypeA::value_type alpha) { using execution_space = typename ViewTypeA::device_type::execution_space; - using memory_space = typename ViewTypeA::device_type::memory_space; using ScalarA = typename ViewTypeA::value_type; - using ScalarB = typename ViewTypeB::value_type; using APT = Kokkos::Details::ArithTraits; using mag_type = typename APT::mag_type; From f2394db5cab9f0fcf50611ef0d354e13f01931dc Mon Sep 17 00:00:00 2001 From: Vinh Dang Date: Fri, 20 Dec 2019 14:21:16 -0700 Subject: [PATCH 10/10] Add ETI files --- ...okkos_cmplx_dbl__LayoutLeft_Cuda_CudaS.cpp | 58 ++ ...kkos_cmplx_dbl__LayoutLeft_Cuda_CudaUS.cpp | 58 ++ ..._cmplx_dbl__LayoutLeft_OpenMP_HBWSpace.cpp | 58 ++ ...cmplx_dbl__LayoutLeft_OpenMP_HostSpace.cpp | 58 ++ ..._cmplx_dbl__LayoutLeft_Serial_HBWSpace.cpp | 58 ++ ...cmplx_dbl__LayoutLeft_Serial_HostSpace.cpp | 58 ++ ...cmplx_dbl__LayoutLeft_Threads_HBWSpace.cpp | 58 ++ ...mplx_dbl__LayoutLeft_Threads_HostSpace.cpp | 58 ++ ...kkos_cmplx_dbl__LayoutRight_Cuda_CudaS.cpp | 58 ++ ...kos_cmplx_dbl__LayoutRight_Cuda_CudaUS.cpp | 58 ++ ...cmplx_dbl__LayoutRight_OpenMP_HBWSpace.cpp | 58 ++ ...mplx_dbl__LayoutRight_OpenMP_HostSpace.cpp | 58 ++ ...cmplx_dbl__LayoutRight_Serial_HBWSpace.cpp | 58 ++ ...mplx_dbl__LayoutRight_Serial_HostSpace.cpp | 58 ++ ...mplx_dbl__LayoutRight_Threads_HBWSpace.cpp | 58 ++ ...plx_dbl__LayoutRight_Threads_HostSpace.cpp | 58 ++ ...okkos_cmplx_flt__LayoutLeft_Cuda_CudaS.cpp | 58 ++ ...kkos_cmplx_flt__LayoutLeft_Cuda_CudaUS.cpp | 58 ++ ..._cmplx_flt__LayoutLeft_OpenMP_HBWSpace.cpp | 58 ++ ...cmplx_flt__LayoutLeft_OpenMP_HostSpace.cpp | 58 ++ ..._cmplx_flt__LayoutLeft_Serial_HBWSpace.cpp | 58 ++ ...cmplx_flt__LayoutLeft_Serial_HostSpace.cpp | 58 ++ ...cmplx_flt__LayoutLeft_Threads_HBWSpace.cpp | 58 ++ ...mplx_flt__LayoutLeft_Threads_HostSpace.cpp | 58 ++ ...kkos_cmplx_flt__LayoutRight_Cuda_CudaS.cpp | 58 ++ ...kos_cmplx_flt__LayoutRight_Cuda_CudaUS.cpp | 58 ++ ...cmplx_flt__LayoutRight_OpenMP_HBWSpace.cpp | 58 ++ ...mplx_flt__LayoutRight_OpenMP_HostSpace.cpp | 58 ++ ...cmplx_flt__LayoutRight_Serial_HBWSpace.cpp | 58 ++ ...mplx_flt__LayoutRight_Serial_HostSpace.cpp | 58 ++ ...mplx_flt__LayoutRight_Threads_HBWSpace.cpp | 58 ++ ...plx_flt__LayoutRight_Threads_HostSpace.cpp | 58 ++ ...ti_spec_inst_dbl_LayoutLeft_Cuda_CudaS.cpp | 58 ++ ...i_spec_inst_dbl_LayoutLeft_Cuda_CudaUS.cpp | 58 ++ ...ec_inst_dbl_LayoutLeft_OpenMP_HBWSpace.cpp | 58 ++ ...c_inst_dbl_LayoutLeft_OpenMP_HostSpace.cpp | 58 ++ ...ec_inst_dbl_LayoutLeft_Serial_HBWSpace.cpp | 58 ++ ...c_inst_dbl_LayoutLeft_Serial_HostSpace.cpp | 58 ++ ...c_inst_dbl_LayoutLeft_Threads_HBWSpace.cpp | 58 ++ ..._inst_dbl_LayoutLeft_Threads_HostSpace.cpp | 58 ++ ...i_spec_inst_dbl_LayoutRight_Cuda_CudaS.cpp | 58 ++ ..._spec_inst_dbl_LayoutRight_Cuda_CudaUS.cpp | 58 ++ ...c_inst_dbl_LayoutRight_OpenMP_HBWSpace.cpp | 58 ++ ..._inst_dbl_LayoutRight_OpenMP_HostSpace.cpp | 58 ++ ...c_inst_dbl_LayoutRight_Serial_HBWSpace.cpp | 58 ++ ..._inst_dbl_LayoutRight_Serial_HostSpace.cpp | 58 ++ ..._inst_dbl_LayoutRight_Threads_HBWSpace.cpp | 58 ++ ...inst_dbl_LayoutRight_Threads_HostSpace.cpp | 58 ++ ...ti_spec_inst_flt_LayoutLeft_Cuda_CudaS.cpp | 58 ++ ...i_spec_inst_flt_LayoutLeft_Cuda_CudaUS.cpp | 58 ++ ...ec_inst_flt_LayoutLeft_OpenMP_HBWSpace.cpp | 58 ++ ...c_inst_flt_LayoutLeft_OpenMP_HostSpace.cpp | 58 ++ ...ec_inst_flt_LayoutLeft_Serial_HBWSpace.cpp | 58 ++ ...c_inst_flt_LayoutLeft_Serial_HostSpace.cpp | 58 ++ ...c_inst_flt_LayoutLeft_Threads_HBWSpace.cpp | 58 ++ ..._inst_flt_LayoutLeft_Threads_HostSpace.cpp | 58 ++ ...i_spec_inst_flt_LayoutRight_Cuda_CudaS.cpp | 58 ++ ..._spec_inst_flt_LayoutRight_Cuda_CudaUS.cpp | 58 ++ ...c_inst_flt_LayoutRight_OpenMP_HBWSpace.cpp | 58 ++ ..._inst_flt_LayoutRight_OpenMP_HostSpace.cpp | 58 ++ ...c_inst_flt_LayoutRight_Serial_HBWSpace.cpp | 58 ++ ..._inst_flt_LayoutRight_Serial_HostSpace.cpp | 58 ++ ..._inst_flt_LayoutRight_Threads_HBWSpace.cpp | 58 ++ ...inst_flt_LayoutRight_Threads_HostSpace.cpp | 58 ++ .../KokkosBlas3_trsm_eti_spec_avail.hpp | 498 ++++++++++++++++++ .../KokkosBlas3_trsm_eti_spec_decl.hpp | 498 ++++++++++++++++++ 66 files changed, 4708 insertions(+) create mode 100644 src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_Kokkos_cmplx_dbl__LayoutLeft_Cuda_CudaS.cpp create mode 100644 src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_Kokkos_cmplx_dbl__LayoutLeft_Cuda_CudaUS.cpp create mode 100644 src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_Kokkos_cmplx_dbl__LayoutLeft_OpenMP_HBWSpace.cpp create mode 100644 src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_Kokkos_cmplx_dbl__LayoutLeft_OpenMP_HostSpace.cpp create mode 100644 src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_Kokkos_cmplx_dbl__LayoutLeft_Serial_HBWSpace.cpp create mode 100644 src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_Kokkos_cmplx_dbl__LayoutLeft_Serial_HostSpace.cpp create mode 100644 src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_Kokkos_cmplx_dbl__LayoutLeft_Threads_HBWSpace.cpp create mode 100644 src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_Kokkos_cmplx_dbl__LayoutLeft_Threads_HostSpace.cpp create mode 100644 src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_Kokkos_cmplx_dbl__LayoutRight_Cuda_CudaS.cpp create mode 100644 src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_Kokkos_cmplx_dbl__LayoutRight_Cuda_CudaUS.cpp create mode 100644 src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_Kokkos_cmplx_dbl__LayoutRight_OpenMP_HBWSpace.cpp create mode 100644 src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_Kokkos_cmplx_dbl__LayoutRight_OpenMP_HostSpace.cpp create mode 100644 src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_Kokkos_cmplx_dbl__LayoutRight_Serial_HBWSpace.cpp create mode 100644 src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_Kokkos_cmplx_dbl__LayoutRight_Serial_HostSpace.cpp create mode 100644 src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_Kokkos_cmplx_dbl__LayoutRight_Threads_HBWSpace.cpp create mode 100644 src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_Kokkos_cmplx_dbl__LayoutRight_Threads_HostSpace.cpp create mode 100644 src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_Kokkos_cmplx_flt__LayoutLeft_Cuda_CudaS.cpp create mode 100644 src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_Kokkos_cmplx_flt__LayoutLeft_Cuda_CudaUS.cpp create mode 100644 src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_Kokkos_cmplx_flt__LayoutLeft_OpenMP_HBWSpace.cpp create mode 100644 src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_Kokkos_cmplx_flt__LayoutLeft_OpenMP_HostSpace.cpp create mode 100644 src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_Kokkos_cmplx_flt__LayoutLeft_Serial_HBWSpace.cpp create mode 100644 src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_Kokkos_cmplx_flt__LayoutLeft_Serial_HostSpace.cpp create mode 100644 src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_Kokkos_cmplx_flt__LayoutLeft_Threads_HBWSpace.cpp create mode 100644 src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_Kokkos_cmplx_flt__LayoutLeft_Threads_HostSpace.cpp create mode 100644 src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_Kokkos_cmplx_flt__LayoutRight_Cuda_CudaS.cpp create mode 100644 src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_Kokkos_cmplx_flt__LayoutRight_Cuda_CudaUS.cpp create mode 100644 src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_Kokkos_cmplx_flt__LayoutRight_OpenMP_HBWSpace.cpp create mode 100644 src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_Kokkos_cmplx_flt__LayoutRight_OpenMP_HostSpace.cpp create mode 100644 src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_Kokkos_cmplx_flt__LayoutRight_Serial_HBWSpace.cpp create mode 100644 src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_Kokkos_cmplx_flt__LayoutRight_Serial_HostSpace.cpp create mode 100644 src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_Kokkos_cmplx_flt__LayoutRight_Threads_HBWSpace.cpp create mode 100644 src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_Kokkos_cmplx_flt__LayoutRight_Threads_HostSpace.cpp create mode 100644 src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_dbl_LayoutLeft_Cuda_CudaS.cpp create mode 100644 src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_dbl_LayoutLeft_Cuda_CudaUS.cpp create mode 100644 src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_dbl_LayoutLeft_OpenMP_HBWSpace.cpp create mode 100644 src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_dbl_LayoutLeft_OpenMP_HostSpace.cpp create mode 100644 src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_dbl_LayoutLeft_Serial_HBWSpace.cpp create mode 100644 src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_dbl_LayoutLeft_Serial_HostSpace.cpp create mode 100644 src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_dbl_LayoutLeft_Threads_HBWSpace.cpp create mode 100644 src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_dbl_LayoutLeft_Threads_HostSpace.cpp create mode 100644 src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_dbl_LayoutRight_Cuda_CudaS.cpp create mode 100644 src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_dbl_LayoutRight_Cuda_CudaUS.cpp create mode 100644 src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_dbl_LayoutRight_OpenMP_HBWSpace.cpp create mode 100644 src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_dbl_LayoutRight_OpenMP_HostSpace.cpp create mode 100644 src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_dbl_LayoutRight_Serial_HBWSpace.cpp create mode 100644 src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_dbl_LayoutRight_Serial_HostSpace.cpp create mode 100644 src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_dbl_LayoutRight_Threads_HBWSpace.cpp create mode 100644 src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_dbl_LayoutRight_Threads_HostSpace.cpp create mode 100644 src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_flt_LayoutLeft_Cuda_CudaS.cpp create mode 100644 src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_flt_LayoutLeft_Cuda_CudaUS.cpp create mode 100644 src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_flt_LayoutLeft_OpenMP_HBWSpace.cpp create mode 100644 src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_flt_LayoutLeft_OpenMP_HostSpace.cpp create mode 100644 src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_flt_LayoutLeft_Serial_HBWSpace.cpp create mode 100644 src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_flt_LayoutLeft_Serial_HostSpace.cpp create mode 100644 src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_flt_LayoutLeft_Threads_HBWSpace.cpp create mode 100644 src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_flt_LayoutLeft_Threads_HostSpace.cpp create mode 100644 src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_flt_LayoutRight_Cuda_CudaS.cpp create mode 100644 src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_flt_LayoutRight_Cuda_CudaUS.cpp create mode 100644 src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_flt_LayoutRight_OpenMP_HBWSpace.cpp create mode 100644 src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_flt_LayoutRight_OpenMP_HostSpace.cpp create mode 100644 src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_flt_LayoutRight_Serial_HBWSpace.cpp create mode 100644 src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_flt_LayoutRight_Serial_HostSpace.cpp create mode 100644 src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_flt_LayoutRight_Threads_HBWSpace.cpp create mode 100644 src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_flt_LayoutRight_Threads_HostSpace.cpp create mode 100644 src/impl/generated_specializations_hpp/KokkosBlas3_trsm_eti_spec_avail.hpp create mode 100644 src/impl/generated_specializations_hpp/KokkosBlas3_trsm_eti_spec_decl.hpp diff --git a/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_Kokkos_cmplx_dbl__LayoutLeft_Cuda_CudaS.cpp b/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_Kokkos_cmplx_dbl__LayoutLeft_Cuda_CudaS.cpp new file mode 100644 index 0000000000..a571ed2fdd --- /dev/null +++ b/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_Kokkos_cmplx_dbl__LayoutLeft_Cuda_CudaS.cpp @@ -0,0 +1,58 @@ +/* +//@HEADER +// ************************************************************************ +// +// KokkosKernels 0.9: Linear Algebra and Graph Kernels +// Copyright 2017 Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Siva Rajamanickam (srajama@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + + +#define KOKKOSKERNELS_IMPL_COMPILE_LIBRARY true +#include "KokkosKernels_config.h" +#if defined (KOKKOSKERNELS_INST_KOKKOS_COMPLEX_DOUBLE_) \ + && defined (KOKKOSKERNELS_INST_LAYOUTLEFT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_CUDA) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_CUDASPACE) +#include "KokkosBlas3_trsm_spec.hpp" + +namespace KokkosBlas { +namespace Impl { + KOKKOSBLAS3_TRSM_ETI_SPEC_INST(Kokkos::complex, Kokkos::LayoutLeft, Kokkos::Cuda, Kokkos::CudaSpace) +} // Impl +} // KokkosBlas +#endif diff --git a/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_Kokkos_cmplx_dbl__LayoutLeft_Cuda_CudaUS.cpp b/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_Kokkos_cmplx_dbl__LayoutLeft_Cuda_CudaUS.cpp new file mode 100644 index 0000000000..f464f25190 --- /dev/null +++ b/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_Kokkos_cmplx_dbl__LayoutLeft_Cuda_CudaUS.cpp @@ -0,0 +1,58 @@ +/* +//@HEADER +// ************************************************************************ +// +// KokkosKernels 0.9: Linear Algebra and Graph Kernels +// Copyright 2017 Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Siva Rajamanickam (srajama@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + + +#define KOKKOSKERNELS_IMPL_COMPILE_LIBRARY true +#include "KokkosKernels_config.h" +#if defined (KOKKOSKERNELS_INST_KOKKOS_COMPLEX_DOUBLE_) \ + && defined (KOKKOSKERNELS_INST_LAYOUTLEFT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_CUDA) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_CUDAUVMSPACE) +#include "KokkosBlas3_trsm_spec.hpp" + +namespace KokkosBlas { +namespace Impl { + KOKKOSBLAS3_TRSM_ETI_SPEC_INST(Kokkos::complex, Kokkos::LayoutLeft, Kokkos::Cuda, Kokkos::CudaUVMSpace) +} // Impl +} // KokkosBlas +#endif diff --git a/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_Kokkos_cmplx_dbl__LayoutLeft_OpenMP_HBWSpace.cpp b/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_Kokkos_cmplx_dbl__LayoutLeft_OpenMP_HBWSpace.cpp new file mode 100644 index 0000000000..5d9cfd162c --- /dev/null +++ b/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_Kokkos_cmplx_dbl__LayoutLeft_OpenMP_HBWSpace.cpp @@ -0,0 +1,58 @@ +/* +//@HEADER +// ************************************************************************ +// +// KokkosKernels 0.9: Linear Algebra and Graph Kernels +// Copyright 2017 Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Siva Rajamanickam (srajama@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + + +#define KOKKOSKERNELS_IMPL_COMPILE_LIBRARY true +#include "KokkosKernels_config.h" +#if defined (KOKKOSKERNELS_INST_KOKKOS_COMPLEX_DOUBLE_) \ + && defined (KOKKOSKERNELS_INST_LAYOUTLEFT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_OPENMP) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_HBWSPACE) +#include "KokkosBlas3_trsm_spec.hpp" + +namespace KokkosBlas { +namespace Impl { + KOKKOSBLAS3_TRSM_ETI_SPEC_INST(Kokkos::complex, Kokkos::LayoutLeft, Kokkos::OpenMP, Kokkos::Experimental::HBWSpace) +} // Impl +} // KokkosBlas +#endif diff --git a/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_Kokkos_cmplx_dbl__LayoutLeft_OpenMP_HostSpace.cpp b/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_Kokkos_cmplx_dbl__LayoutLeft_OpenMP_HostSpace.cpp new file mode 100644 index 0000000000..d77ef9174e --- /dev/null +++ b/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_Kokkos_cmplx_dbl__LayoutLeft_OpenMP_HostSpace.cpp @@ -0,0 +1,58 @@ +/* +//@HEADER +// ************************************************************************ +// +// KokkosKernels 0.9: Linear Algebra and Graph Kernels +// Copyright 2017 Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Siva Rajamanickam (srajama@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + + +#define KOKKOSKERNELS_IMPL_COMPILE_LIBRARY true +#include "KokkosKernels_config.h" +#if defined (KOKKOSKERNELS_INST_KOKKOS_COMPLEX_DOUBLE_) \ + && defined (KOKKOSKERNELS_INST_LAYOUTLEFT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_OPENMP) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_HOSTSPACE) +#include "KokkosBlas3_trsm_spec.hpp" + +namespace KokkosBlas { +namespace Impl { + KOKKOSBLAS3_TRSM_ETI_SPEC_INST(Kokkos::complex, Kokkos::LayoutLeft, Kokkos::OpenMP, Kokkos::HostSpace) +} // Impl +} // KokkosBlas +#endif diff --git a/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_Kokkos_cmplx_dbl__LayoutLeft_Serial_HBWSpace.cpp b/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_Kokkos_cmplx_dbl__LayoutLeft_Serial_HBWSpace.cpp new file mode 100644 index 0000000000..a2420f2fb2 --- /dev/null +++ b/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_Kokkos_cmplx_dbl__LayoutLeft_Serial_HBWSpace.cpp @@ -0,0 +1,58 @@ +/* +//@HEADER +// ************************************************************************ +// +// KokkosKernels 0.9: Linear Algebra and Graph Kernels +// Copyright 2017 Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Siva Rajamanickam (srajama@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + + +#define KOKKOSKERNELS_IMPL_COMPILE_LIBRARY true +#include "KokkosKernels_config.h" +#if defined (KOKKOSKERNELS_INST_KOKKOS_COMPLEX_DOUBLE_) \ + && defined (KOKKOSKERNELS_INST_LAYOUTLEFT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_SERIAL) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_HBWSPACE) +#include "KokkosBlas3_trsm_spec.hpp" + +namespace KokkosBlas { +namespace Impl { + KOKKOSBLAS3_TRSM_ETI_SPEC_INST(Kokkos::complex, Kokkos::LayoutLeft, Kokkos::Serial, Kokkos::Experimental::HBWSpace) +} // Impl +} // KokkosBlas +#endif diff --git a/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_Kokkos_cmplx_dbl__LayoutLeft_Serial_HostSpace.cpp b/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_Kokkos_cmplx_dbl__LayoutLeft_Serial_HostSpace.cpp new file mode 100644 index 0000000000..30b7201266 --- /dev/null +++ b/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_Kokkos_cmplx_dbl__LayoutLeft_Serial_HostSpace.cpp @@ -0,0 +1,58 @@ +/* +//@HEADER +// ************************************************************************ +// +// KokkosKernels 0.9: Linear Algebra and Graph Kernels +// Copyright 2017 Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Siva Rajamanickam (srajama@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + + +#define KOKKOSKERNELS_IMPL_COMPILE_LIBRARY true +#include "KokkosKernels_config.h" +#if defined (KOKKOSKERNELS_INST_KOKKOS_COMPLEX_DOUBLE_) \ + && defined (KOKKOSKERNELS_INST_LAYOUTLEFT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_SERIAL) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_HOSTSPACE) +#include "KokkosBlas3_trsm_spec.hpp" + +namespace KokkosBlas { +namespace Impl { + KOKKOSBLAS3_TRSM_ETI_SPEC_INST(Kokkos::complex, Kokkos::LayoutLeft, Kokkos::Serial, Kokkos::HostSpace) +} // Impl +} // KokkosBlas +#endif diff --git a/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_Kokkos_cmplx_dbl__LayoutLeft_Threads_HBWSpace.cpp b/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_Kokkos_cmplx_dbl__LayoutLeft_Threads_HBWSpace.cpp new file mode 100644 index 0000000000..dce384149f --- /dev/null +++ b/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_Kokkos_cmplx_dbl__LayoutLeft_Threads_HBWSpace.cpp @@ -0,0 +1,58 @@ +/* +//@HEADER +// ************************************************************************ +// +// KokkosKernels 0.9: Linear Algebra and Graph Kernels +// Copyright 2017 Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Siva Rajamanickam (srajama@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + + +#define KOKKOSKERNELS_IMPL_COMPILE_LIBRARY true +#include "KokkosKernels_config.h" +#if defined (KOKKOSKERNELS_INST_KOKKOS_COMPLEX_DOUBLE_) \ + && defined (KOKKOSKERNELS_INST_LAYOUTLEFT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_THREADS) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_HBWSPACE) +#include "KokkosBlas3_trsm_spec.hpp" + +namespace KokkosBlas { +namespace Impl { + KOKKOSBLAS3_TRSM_ETI_SPEC_INST(Kokkos::complex, Kokkos::LayoutLeft, Kokkos::Threads, Kokkos::Experimental::HBWSpace) +} // Impl +} // KokkosBlas +#endif diff --git a/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_Kokkos_cmplx_dbl__LayoutLeft_Threads_HostSpace.cpp b/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_Kokkos_cmplx_dbl__LayoutLeft_Threads_HostSpace.cpp new file mode 100644 index 0000000000..be1a25d525 --- /dev/null +++ b/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_Kokkos_cmplx_dbl__LayoutLeft_Threads_HostSpace.cpp @@ -0,0 +1,58 @@ +/* +//@HEADER +// ************************************************************************ +// +// KokkosKernels 0.9: Linear Algebra and Graph Kernels +// Copyright 2017 Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Siva Rajamanickam (srajama@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + + +#define KOKKOSKERNELS_IMPL_COMPILE_LIBRARY true +#include "KokkosKernels_config.h" +#if defined (KOKKOSKERNELS_INST_KOKKOS_COMPLEX_DOUBLE_) \ + && defined (KOKKOSKERNELS_INST_LAYOUTLEFT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_THREADS) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_HOSTSPACE) +#include "KokkosBlas3_trsm_spec.hpp" + +namespace KokkosBlas { +namespace Impl { + KOKKOSBLAS3_TRSM_ETI_SPEC_INST(Kokkos::complex, Kokkos::LayoutLeft, Kokkos::Threads, Kokkos::HostSpace) +} // Impl +} // KokkosBlas +#endif diff --git a/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_Kokkos_cmplx_dbl__LayoutRight_Cuda_CudaS.cpp b/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_Kokkos_cmplx_dbl__LayoutRight_Cuda_CudaS.cpp new file mode 100644 index 0000000000..fb74effd7c --- /dev/null +++ b/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_Kokkos_cmplx_dbl__LayoutRight_Cuda_CudaS.cpp @@ -0,0 +1,58 @@ +/* +//@HEADER +// ************************************************************************ +// +// KokkosKernels 0.9: Linear Algebra and Graph Kernels +// Copyright 2017 Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Siva Rajamanickam (srajama@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + + +#define KOKKOSKERNELS_IMPL_COMPILE_LIBRARY true +#include "KokkosKernels_config.h" +#if defined (KOKKOSKERNELS_INST_KOKKOS_COMPLEX_DOUBLE_) \ + && defined (KOKKOSKERNELS_INST_LAYOUTRIGHT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_CUDA) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_CUDASPACE) +#include "KokkosBlas3_trsm_spec.hpp" + +namespace KokkosBlas { +namespace Impl { + KOKKOSBLAS3_TRSM_ETI_SPEC_INST(Kokkos::complex, Kokkos::LayoutRight, Kokkos::Cuda, Kokkos::CudaSpace) +} // Impl +} // KokkosBlas +#endif diff --git a/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_Kokkos_cmplx_dbl__LayoutRight_Cuda_CudaUS.cpp b/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_Kokkos_cmplx_dbl__LayoutRight_Cuda_CudaUS.cpp new file mode 100644 index 0000000000..e2185f8b10 --- /dev/null +++ b/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_Kokkos_cmplx_dbl__LayoutRight_Cuda_CudaUS.cpp @@ -0,0 +1,58 @@ +/* +//@HEADER +// ************************************************************************ +// +// KokkosKernels 0.9: Linear Algebra and Graph Kernels +// Copyright 2017 Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Siva Rajamanickam (srajama@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + + +#define KOKKOSKERNELS_IMPL_COMPILE_LIBRARY true +#include "KokkosKernels_config.h" +#if defined (KOKKOSKERNELS_INST_KOKKOS_COMPLEX_DOUBLE_) \ + && defined (KOKKOSKERNELS_INST_LAYOUTRIGHT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_CUDA) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_CUDAUVMSPACE) +#include "KokkosBlas3_trsm_spec.hpp" + +namespace KokkosBlas { +namespace Impl { + KOKKOSBLAS3_TRSM_ETI_SPEC_INST(Kokkos::complex, Kokkos::LayoutRight, Kokkos::Cuda, Kokkos::CudaUVMSpace) +} // Impl +} // KokkosBlas +#endif diff --git a/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_Kokkos_cmplx_dbl__LayoutRight_OpenMP_HBWSpace.cpp b/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_Kokkos_cmplx_dbl__LayoutRight_OpenMP_HBWSpace.cpp new file mode 100644 index 0000000000..80476ad091 --- /dev/null +++ b/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_Kokkos_cmplx_dbl__LayoutRight_OpenMP_HBWSpace.cpp @@ -0,0 +1,58 @@ +/* +//@HEADER +// ************************************************************************ +// +// KokkosKernels 0.9: Linear Algebra and Graph Kernels +// Copyright 2017 Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Siva Rajamanickam (srajama@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + + +#define KOKKOSKERNELS_IMPL_COMPILE_LIBRARY true +#include "KokkosKernels_config.h" +#if defined (KOKKOSKERNELS_INST_KOKKOS_COMPLEX_DOUBLE_) \ + && defined (KOKKOSKERNELS_INST_LAYOUTRIGHT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_OPENMP) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_HBWSPACE) +#include "KokkosBlas3_trsm_spec.hpp" + +namespace KokkosBlas { +namespace Impl { + KOKKOSBLAS3_TRSM_ETI_SPEC_INST(Kokkos::complex, Kokkos::LayoutRight, Kokkos::OpenMP, Kokkos::Experimental::HBWSpace) +} // Impl +} // KokkosBlas +#endif diff --git a/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_Kokkos_cmplx_dbl__LayoutRight_OpenMP_HostSpace.cpp b/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_Kokkos_cmplx_dbl__LayoutRight_OpenMP_HostSpace.cpp new file mode 100644 index 0000000000..b30605db04 --- /dev/null +++ b/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_Kokkos_cmplx_dbl__LayoutRight_OpenMP_HostSpace.cpp @@ -0,0 +1,58 @@ +/* +//@HEADER +// ************************************************************************ +// +// KokkosKernels 0.9: Linear Algebra and Graph Kernels +// Copyright 2017 Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Siva Rajamanickam (srajama@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + + +#define KOKKOSKERNELS_IMPL_COMPILE_LIBRARY true +#include "KokkosKernels_config.h" +#if defined (KOKKOSKERNELS_INST_KOKKOS_COMPLEX_DOUBLE_) \ + && defined (KOKKOSKERNELS_INST_LAYOUTRIGHT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_OPENMP) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_HOSTSPACE) +#include "KokkosBlas3_trsm_spec.hpp" + +namespace KokkosBlas { +namespace Impl { + KOKKOSBLAS3_TRSM_ETI_SPEC_INST(Kokkos::complex, Kokkos::LayoutRight, Kokkos::OpenMP, Kokkos::HostSpace) +} // Impl +} // KokkosBlas +#endif diff --git a/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_Kokkos_cmplx_dbl__LayoutRight_Serial_HBWSpace.cpp b/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_Kokkos_cmplx_dbl__LayoutRight_Serial_HBWSpace.cpp new file mode 100644 index 0000000000..1a4e3406c4 --- /dev/null +++ b/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_Kokkos_cmplx_dbl__LayoutRight_Serial_HBWSpace.cpp @@ -0,0 +1,58 @@ +/* +//@HEADER +// ************************************************************************ +// +// KokkosKernels 0.9: Linear Algebra and Graph Kernels +// Copyright 2017 Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Siva Rajamanickam (srajama@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + + +#define KOKKOSKERNELS_IMPL_COMPILE_LIBRARY true +#include "KokkosKernels_config.h" +#if defined (KOKKOSKERNELS_INST_KOKKOS_COMPLEX_DOUBLE_) \ + && defined (KOKKOSKERNELS_INST_LAYOUTRIGHT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_SERIAL) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_HBWSPACE) +#include "KokkosBlas3_trsm_spec.hpp" + +namespace KokkosBlas { +namespace Impl { + KOKKOSBLAS3_TRSM_ETI_SPEC_INST(Kokkos::complex, Kokkos::LayoutRight, Kokkos::Serial, Kokkos::Experimental::HBWSpace) +} // Impl +} // KokkosBlas +#endif diff --git a/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_Kokkos_cmplx_dbl__LayoutRight_Serial_HostSpace.cpp b/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_Kokkos_cmplx_dbl__LayoutRight_Serial_HostSpace.cpp new file mode 100644 index 0000000000..1797085e57 --- /dev/null +++ b/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_Kokkos_cmplx_dbl__LayoutRight_Serial_HostSpace.cpp @@ -0,0 +1,58 @@ +/* +//@HEADER +// ************************************************************************ +// +// KokkosKernels 0.9: Linear Algebra and Graph Kernels +// Copyright 2017 Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Siva Rajamanickam (srajama@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + + +#define KOKKOSKERNELS_IMPL_COMPILE_LIBRARY true +#include "KokkosKernels_config.h" +#if defined (KOKKOSKERNELS_INST_KOKKOS_COMPLEX_DOUBLE_) \ + && defined (KOKKOSKERNELS_INST_LAYOUTRIGHT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_SERIAL) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_HOSTSPACE) +#include "KokkosBlas3_trsm_spec.hpp" + +namespace KokkosBlas { +namespace Impl { + KOKKOSBLAS3_TRSM_ETI_SPEC_INST(Kokkos::complex, Kokkos::LayoutRight, Kokkos::Serial, Kokkos::HostSpace) +} // Impl +} // KokkosBlas +#endif diff --git a/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_Kokkos_cmplx_dbl__LayoutRight_Threads_HBWSpace.cpp b/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_Kokkos_cmplx_dbl__LayoutRight_Threads_HBWSpace.cpp new file mode 100644 index 0000000000..c412aaba89 --- /dev/null +++ b/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_Kokkos_cmplx_dbl__LayoutRight_Threads_HBWSpace.cpp @@ -0,0 +1,58 @@ +/* +//@HEADER +// ************************************************************************ +// +// KokkosKernels 0.9: Linear Algebra and Graph Kernels +// Copyright 2017 Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Siva Rajamanickam (srajama@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + + +#define KOKKOSKERNELS_IMPL_COMPILE_LIBRARY true +#include "KokkosKernels_config.h" +#if defined (KOKKOSKERNELS_INST_KOKKOS_COMPLEX_DOUBLE_) \ + && defined (KOKKOSKERNELS_INST_LAYOUTRIGHT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_THREADS) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_HBWSPACE) +#include "KokkosBlas3_trsm_spec.hpp" + +namespace KokkosBlas { +namespace Impl { + KOKKOSBLAS3_TRSM_ETI_SPEC_INST(Kokkos::complex, Kokkos::LayoutRight, Kokkos::Threads, Kokkos::Experimental::HBWSpace) +} // Impl +} // KokkosBlas +#endif diff --git a/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_Kokkos_cmplx_dbl__LayoutRight_Threads_HostSpace.cpp b/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_Kokkos_cmplx_dbl__LayoutRight_Threads_HostSpace.cpp new file mode 100644 index 0000000000..4182ce725b --- /dev/null +++ b/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_Kokkos_cmplx_dbl__LayoutRight_Threads_HostSpace.cpp @@ -0,0 +1,58 @@ +/* +//@HEADER +// ************************************************************************ +// +// KokkosKernels 0.9: Linear Algebra and Graph Kernels +// Copyright 2017 Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Siva Rajamanickam (srajama@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + + +#define KOKKOSKERNELS_IMPL_COMPILE_LIBRARY true +#include "KokkosKernels_config.h" +#if defined (KOKKOSKERNELS_INST_KOKKOS_COMPLEX_DOUBLE_) \ + && defined (KOKKOSKERNELS_INST_LAYOUTRIGHT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_THREADS) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_HOSTSPACE) +#include "KokkosBlas3_trsm_spec.hpp" + +namespace KokkosBlas { +namespace Impl { + KOKKOSBLAS3_TRSM_ETI_SPEC_INST(Kokkos::complex, Kokkos::LayoutRight, Kokkos::Threads, Kokkos::HostSpace) +} // Impl +} // KokkosBlas +#endif diff --git a/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_Kokkos_cmplx_flt__LayoutLeft_Cuda_CudaS.cpp b/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_Kokkos_cmplx_flt__LayoutLeft_Cuda_CudaS.cpp new file mode 100644 index 0000000000..fb467321cd --- /dev/null +++ b/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_Kokkos_cmplx_flt__LayoutLeft_Cuda_CudaS.cpp @@ -0,0 +1,58 @@ +/* +//@HEADER +// ************************************************************************ +// +// KokkosKernels 0.9: Linear Algebra and Graph Kernels +// Copyright 2017 Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Siva Rajamanickam (srajama@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + + +#define KOKKOSKERNELS_IMPL_COMPILE_LIBRARY true +#include "KokkosKernels_config.h" +#if defined (KOKKOSKERNELS_INST_KOKKOS_COMPLEX_FLOAT_) \ + && defined (KOKKOSKERNELS_INST_LAYOUTLEFT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_CUDA) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_CUDASPACE) +#include "KokkosBlas3_trsm_spec.hpp" + +namespace KokkosBlas { +namespace Impl { + KOKKOSBLAS3_TRSM_ETI_SPEC_INST(Kokkos::complex, Kokkos::LayoutLeft, Kokkos::Cuda, Kokkos::CudaSpace) +} // Impl +} // KokkosBlas +#endif diff --git a/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_Kokkos_cmplx_flt__LayoutLeft_Cuda_CudaUS.cpp b/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_Kokkos_cmplx_flt__LayoutLeft_Cuda_CudaUS.cpp new file mode 100644 index 0000000000..6a1df587c9 --- /dev/null +++ b/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_Kokkos_cmplx_flt__LayoutLeft_Cuda_CudaUS.cpp @@ -0,0 +1,58 @@ +/* +//@HEADER +// ************************************************************************ +// +// KokkosKernels 0.9: Linear Algebra and Graph Kernels +// Copyright 2017 Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Siva Rajamanickam (srajama@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + + +#define KOKKOSKERNELS_IMPL_COMPILE_LIBRARY true +#include "KokkosKernels_config.h" +#if defined (KOKKOSKERNELS_INST_KOKKOS_COMPLEX_FLOAT_) \ + && defined (KOKKOSKERNELS_INST_LAYOUTLEFT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_CUDA) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_CUDAUVMSPACE) +#include "KokkosBlas3_trsm_spec.hpp" + +namespace KokkosBlas { +namespace Impl { + KOKKOSBLAS3_TRSM_ETI_SPEC_INST(Kokkos::complex, Kokkos::LayoutLeft, Kokkos::Cuda, Kokkos::CudaUVMSpace) +} // Impl +} // KokkosBlas +#endif diff --git a/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_Kokkos_cmplx_flt__LayoutLeft_OpenMP_HBWSpace.cpp b/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_Kokkos_cmplx_flt__LayoutLeft_OpenMP_HBWSpace.cpp new file mode 100644 index 0000000000..e45755ddb2 --- /dev/null +++ b/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_Kokkos_cmplx_flt__LayoutLeft_OpenMP_HBWSpace.cpp @@ -0,0 +1,58 @@ +/* +//@HEADER +// ************************************************************************ +// +// KokkosKernels 0.9: Linear Algebra and Graph Kernels +// Copyright 2017 Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Siva Rajamanickam (srajama@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + + +#define KOKKOSKERNELS_IMPL_COMPILE_LIBRARY true +#include "KokkosKernels_config.h" +#if defined (KOKKOSKERNELS_INST_KOKKOS_COMPLEX_FLOAT_) \ + && defined (KOKKOSKERNELS_INST_LAYOUTLEFT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_OPENMP) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_HBWSPACE) +#include "KokkosBlas3_trsm_spec.hpp" + +namespace KokkosBlas { +namespace Impl { + KOKKOSBLAS3_TRSM_ETI_SPEC_INST(Kokkos::complex, Kokkos::LayoutLeft, Kokkos::OpenMP, Kokkos::Experimental::HBWSpace) +} // Impl +} // KokkosBlas +#endif diff --git a/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_Kokkos_cmplx_flt__LayoutLeft_OpenMP_HostSpace.cpp b/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_Kokkos_cmplx_flt__LayoutLeft_OpenMP_HostSpace.cpp new file mode 100644 index 0000000000..4bc1cdf1a2 --- /dev/null +++ b/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_Kokkos_cmplx_flt__LayoutLeft_OpenMP_HostSpace.cpp @@ -0,0 +1,58 @@ +/* +//@HEADER +// ************************************************************************ +// +// KokkosKernels 0.9: Linear Algebra and Graph Kernels +// Copyright 2017 Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Siva Rajamanickam (srajama@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + + +#define KOKKOSKERNELS_IMPL_COMPILE_LIBRARY true +#include "KokkosKernels_config.h" +#if defined (KOKKOSKERNELS_INST_KOKKOS_COMPLEX_FLOAT_) \ + && defined (KOKKOSKERNELS_INST_LAYOUTLEFT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_OPENMP) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_HOSTSPACE) +#include "KokkosBlas3_trsm_spec.hpp" + +namespace KokkosBlas { +namespace Impl { + KOKKOSBLAS3_TRSM_ETI_SPEC_INST(Kokkos::complex, Kokkos::LayoutLeft, Kokkos::OpenMP, Kokkos::HostSpace) +} // Impl +} // KokkosBlas +#endif diff --git a/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_Kokkos_cmplx_flt__LayoutLeft_Serial_HBWSpace.cpp b/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_Kokkos_cmplx_flt__LayoutLeft_Serial_HBWSpace.cpp new file mode 100644 index 0000000000..42e2a2871d --- /dev/null +++ b/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_Kokkos_cmplx_flt__LayoutLeft_Serial_HBWSpace.cpp @@ -0,0 +1,58 @@ +/* +//@HEADER +// ************************************************************************ +// +// KokkosKernels 0.9: Linear Algebra and Graph Kernels +// Copyright 2017 Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Siva Rajamanickam (srajama@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + + +#define KOKKOSKERNELS_IMPL_COMPILE_LIBRARY true +#include "KokkosKernels_config.h" +#if defined (KOKKOSKERNELS_INST_KOKKOS_COMPLEX_FLOAT_) \ + && defined (KOKKOSKERNELS_INST_LAYOUTLEFT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_SERIAL) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_HBWSPACE) +#include "KokkosBlas3_trsm_spec.hpp" + +namespace KokkosBlas { +namespace Impl { + KOKKOSBLAS3_TRSM_ETI_SPEC_INST(Kokkos::complex, Kokkos::LayoutLeft, Kokkos::Serial, Kokkos::Experimental::HBWSpace) +} // Impl +} // KokkosBlas +#endif diff --git a/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_Kokkos_cmplx_flt__LayoutLeft_Serial_HostSpace.cpp b/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_Kokkos_cmplx_flt__LayoutLeft_Serial_HostSpace.cpp new file mode 100644 index 0000000000..9119bc928e --- /dev/null +++ b/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_Kokkos_cmplx_flt__LayoutLeft_Serial_HostSpace.cpp @@ -0,0 +1,58 @@ +/* +//@HEADER +// ************************************************************************ +// +// KokkosKernels 0.9: Linear Algebra and Graph Kernels +// Copyright 2017 Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Siva Rajamanickam (srajama@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + + +#define KOKKOSKERNELS_IMPL_COMPILE_LIBRARY true +#include "KokkosKernels_config.h" +#if defined (KOKKOSKERNELS_INST_KOKKOS_COMPLEX_FLOAT_) \ + && defined (KOKKOSKERNELS_INST_LAYOUTLEFT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_SERIAL) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_HOSTSPACE) +#include "KokkosBlas3_trsm_spec.hpp" + +namespace KokkosBlas { +namespace Impl { + KOKKOSBLAS3_TRSM_ETI_SPEC_INST(Kokkos::complex, Kokkos::LayoutLeft, Kokkos::Serial, Kokkos::HostSpace) +} // Impl +} // KokkosBlas +#endif diff --git a/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_Kokkos_cmplx_flt__LayoutLeft_Threads_HBWSpace.cpp b/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_Kokkos_cmplx_flt__LayoutLeft_Threads_HBWSpace.cpp new file mode 100644 index 0000000000..cb510c5c6b --- /dev/null +++ b/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_Kokkos_cmplx_flt__LayoutLeft_Threads_HBWSpace.cpp @@ -0,0 +1,58 @@ +/* +//@HEADER +// ************************************************************************ +// +// KokkosKernels 0.9: Linear Algebra and Graph Kernels +// Copyright 2017 Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Siva Rajamanickam (srajama@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + + +#define KOKKOSKERNELS_IMPL_COMPILE_LIBRARY true +#include "KokkosKernels_config.h" +#if defined (KOKKOSKERNELS_INST_KOKKOS_COMPLEX_FLOAT_) \ + && defined (KOKKOSKERNELS_INST_LAYOUTLEFT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_THREADS) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_HBWSPACE) +#include "KokkosBlas3_trsm_spec.hpp" + +namespace KokkosBlas { +namespace Impl { + KOKKOSBLAS3_TRSM_ETI_SPEC_INST(Kokkos::complex, Kokkos::LayoutLeft, Kokkos::Threads, Kokkos::Experimental::HBWSpace) +} // Impl +} // KokkosBlas +#endif diff --git a/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_Kokkos_cmplx_flt__LayoutLeft_Threads_HostSpace.cpp b/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_Kokkos_cmplx_flt__LayoutLeft_Threads_HostSpace.cpp new file mode 100644 index 0000000000..5be24c5d8f --- /dev/null +++ b/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_Kokkos_cmplx_flt__LayoutLeft_Threads_HostSpace.cpp @@ -0,0 +1,58 @@ +/* +//@HEADER +// ************************************************************************ +// +// KokkosKernels 0.9: Linear Algebra and Graph Kernels +// Copyright 2017 Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Siva Rajamanickam (srajama@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + + +#define KOKKOSKERNELS_IMPL_COMPILE_LIBRARY true +#include "KokkosKernels_config.h" +#if defined (KOKKOSKERNELS_INST_KOKKOS_COMPLEX_FLOAT_) \ + && defined (KOKKOSKERNELS_INST_LAYOUTLEFT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_THREADS) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_HOSTSPACE) +#include "KokkosBlas3_trsm_spec.hpp" + +namespace KokkosBlas { +namespace Impl { + KOKKOSBLAS3_TRSM_ETI_SPEC_INST(Kokkos::complex, Kokkos::LayoutLeft, Kokkos::Threads, Kokkos::HostSpace) +} // Impl +} // KokkosBlas +#endif diff --git a/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_Kokkos_cmplx_flt__LayoutRight_Cuda_CudaS.cpp b/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_Kokkos_cmplx_flt__LayoutRight_Cuda_CudaS.cpp new file mode 100644 index 0000000000..1f7fc8e515 --- /dev/null +++ b/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_Kokkos_cmplx_flt__LayoutRight_Cuda_CudaS.cpp @@ -0,0 +1,58 @@ +/* +//@HEADER +// ************************************************************************ +// +// KokkosKernels 0.9: Linear Algebra and Graph Kernels +// Copyright 2017 Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Siva Rajamanickam (srajama@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + + +#define KOKKOSKERNELS_IMPL_COMPILE_LIBRARY true +#include "KokkosKernels_config.h" +#if defined (KOKKOSKERNELS_INST_KOKKOS_COMPLEX_FLOAT_) \ + && defined (KOKKOSKERNELS_INST_LAYOUTRIGHT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_CUDA) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_CUDASPACE) +#include "KokkosBlas3_trsm_spec.hpp" + +namespace KokkosBlas { +namespace Impl { + KOKKOSBLAS3_TRSM_ETI_SPEC_INST(Kokkos::complex, Kokkos::LayoutRight, Kokkos::Cuda, Kokkos::CudaSpace) +} // Impl +} // KokkosBlas +#endif diff --git a/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_Kokkos_cmplx_flt__LayoutRight_Cuda_CudaUS.cpp b/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_Kokkos_cmplx_flt__LayoutRight_Cuda_CudaUS.cpp new file mode 100644 index 0000000000..abcdf6a9e1 --- /dev/null +++ b/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_Kokkos_cmplx_flt__LayoutRight_Cuda_CudaUS.cpp @@ -0,0 +1,58 @@ +/* +//@HEADER +// ************************************************************************ +// +// KokkosKernels 0.9: Linear Algebra and Graph Kernels +// Copyright 2017 Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Siva Rajamanickam (srajama@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + + +#define KOKKOSKERNELS_IMPL_COMPILE_LIBRARY true +#include "KokkosKernels_config.h" +#if defined (KOKKOSKERNELS_INST_KOKKOS_COMPLEX_FLOAT_) \ + && defined (KOKKOSKERNELS_INST_LAYOUTRIGHT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_CUDA) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_CUDAUVMSPACE) +#include "KokkosBlas3_trsm_spec.hpp" + +namespace KokkosBlas { +namespace Impl { + KOKKOSBLAS3_TRSM_ETI_SPEC_INST(Kokkos::complex, Kokkos::LayoutRight, Kokkos::Cuda, Kokkos::CudaUVMSpace) +} // Impl +} // KokkosBlas +#endif diff --git a/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_Kokkos_cmplx_flt__LayoutRight_OpenMP_HBWSpace.cpp b/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_Kokkos_cmplx_flt__LayoutRight_OpenMP_HBWSpace.cpp new file mode 100644 index 0000000000..47799f3e78 --- /dev/null +++ b/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_Kokkos_cmplx_flt__LayoutRight_OpenMP_HBWSpace.cpp @@ -0,0 +1,58 @@ +/* +//@HEADER +// ************************************************************************ +// +// KokkosKernels 0.9: Linear Algebra and Graph Kernels +// Copyright 2017 Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Siva Rajamanickam (srajama@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + + +#define KOKKOSKERNELS_IMPL_COMPILE_LIBRARY true +#include "KokkosKernels_config.h" +#if defined (KOKKOSKERNELS_INST_KOKKOS_COMPLEX_FLOAT_) \ + && defined (KOKKOSKERNELS_INST_LAYOUTRIGHT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_OPENMP) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_HBWSPACE) +#include "KokkosBlas3_trsm_spec.hpp" + +namespace KokkosBlas { +namespace Impl { + KOKKOSBLAS3_TRSM_ETI_SPEC_INST(Kokkos::complex, Kokkos::LayoutRight, Kokkos::OpenMP, Kokkos::Experimental::HBWSpace) +} // Impl +} // KokkosBlas +#endif diff --git a/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_Kokkos_cmplx_flt__LayoutRight_OpenMP_HostSpace.cpp b/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_Kokkos_cmplx_flt__LayoutRight_OpenMP_HostSpace.cpp new file mode 100644 index 0000000000..b4d116d17c --- /dev/null +++ b/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_Kokkos_cmplx_flt__LayoutRight_OpenMP_HostSpace.cpp @@ -0,0 +1,58 @@ +/* +//@HEADER +// ************************************************************************ +// +// KokkosKernels 0.9: Linear Algebra and Graph Kernels +// Copyright 2017 Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Siva Rajamanickam (srajama@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + + +#define KOKKOSKERNELS_IMPL_COMPILE_LIBRARY true +#include "KokkosKernels_config.h" +#if defined (KOKKOSKERNELS_INST_KOKKOS_COMPLEX_FLOAT_) \ + && defined (KOKKOSKERNELS_INST_LAYOUTRIGHT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_OPENMP) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_HOSTSPACE) +#include "KokkosBlas3_trsm_spec.hpp" + +namespace KokkosBlas { +namespace Impl { + KOKKOSBLAS3_TRSM_ETI_SPEC_INST(Kokkos::complex, Kokkos::LayoutRight, Kokkos::OpenMP, Kokkos::HostSpace) +} // Impl +} // KokkosBlas +#endif diff --git a/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_Kokkos_cmplx_flt__LayoutRight_Serial_HBWSpace.cpp b/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_Kokkos_cmplx_flt__LayoutRight_Serial_HBWSpace.cpp new file mode 100644 index 0000000000..350c9898a9 --- /dev/null +++ b/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_Kokkos_cmplx_flt__LayoutRight_Serial_HBWSpace.cpp @@ -0,0 +1,58 @@ +/* +//@HEADER +// ************************************************************************ +// +// KokkosKernels 0.9: Linear Algebra and Graph Kernels +// Copyright 2017 Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Siva Rajamanickam (srajama@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + + +#define KOKKOSKERNELS_IMPL_COMPILE_LIBRARY true +#include "KokkosKernels_config.h" +#if defined (KOKKOSKERNELS_INST_KOKKOS_COMPLEX_FLOAT_) \ + && defined (KOKKOSKERNELS_INST_LAYOUTRIGHT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_SERIAL) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_HBWSPACE) +#include "KokkosBlas3_trsm_spec.hpp" + +namespace KokkosBlas { +namespace Impl { + KOKKOSBLAS3_TRSM_ETI_SPEC_INST(Kokkos::complex, Kokkos::LayoutRight, Kokkos::Serial, Kokkos::Experimental::HBWSpace) +} // Impl +} // KokkosBlas +#endif diff --git a/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_Kokkos_cmplx_flt__LayoutRight_Serial_HostSpace.cpp b/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_Kokkos_cmplx_flt__LayoutRight_Serial_HostSpace.cpp new file mode 100644 index 0000000000..d4f25f45bc --- /dev/null +++ b/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_Kokkos_cmplx_flt__LayoutRight_Serial_HostSpace.cpp @@ -0,0 +1,58 @@ +/* +//@HEADER +// ************************************************************************ +// +// KokkosKernels 0.9: Linear Algebra and Graph Kernels +// Copyright 2017 Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Siva Rajamanickam (srajama@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + + +#define KOKKOSKERNELS_IMPL_COMPILE_LIBRARY true +#include "KokkosKernels_config.h" +#if defined (KOKKOSKERNELS_INST_KOKKOS_COMPLEX_FLOAT_) \ + && defined (KOKKOSKERNELS_INST_LAYOUTRIGHT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_SERIAL) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_HOSTSPACE) +#include "KokkosBlas3_trsm_spec.hpp" + +namespace KokkosBlas { +namespace Impl { + KOKKOSBLAS3_TRSM_ETI_SPEC_INST(Kokkos::complex, Kokkos::LayoutRight, Kokkos::Serial, Kokkos::HostSpace) +} // Impl +} // KokkosBlas +#endif diff --git a/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_Kokkos_cmplx_flt__LayoutRight_Threads_HBWSpace.cpp b/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_Kokkos_cmplx_flt__LayoutRight_Threads_HBWSpace.cpp new file mode 100644 index 0000000000..20b677a347 --- /dev/null +++ b/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_Kokkos_cmplx_flt__LayoutRight_Threads_HBWSpace.cpp @@ -0,0 +1,58 @@ +/* +//@HEADER +// ************************************************************************ +// +// KokkosKernels 0.9: Linear Algebra and Graph Kernels +// Copyright 2017 Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Siva Rajamanickam (srajama@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + + +#define KOKKOSKERNELS_IMPL_COMPILE_LIBRARY true +#include "KokkosKernels_config.h" +#if defined (KOKKOSKERNELS_INST_KOKKOS_COMPLEX_FLOAT_) \ + && defined (KOKKOSKERNELS_INST_LAYOUTRIGHT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_THREADS) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_HBWSPACE) +#include "KokkosBlas3_trsm_spec.hpp" + +namespace KokkosBlas { +namespace Impl { + KOKKOSBLAS3_TRSM_ETI_SPEC_INST(Kokkos::complex, Kokkos::LayoutRight, Kokkos::Threads, Kokkos::Experimental::HBWSpace) +} // Impl +} // KokkosBlas +#endif diff --git a/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_Kokkos_cmplx_flt__LayoutRight_Threads_HostSpace.cpp b/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_Kokkos_cmplx_flt__LayoutRight_Threads_HostSpace.cpp new file mode 100644 index 0000000000..bcc2fa09c8 --- /dev/null +++ b/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_Kokkos_cmplx_flt__LayoutRight_Threads_HostSpace.cpp @@ -0,0 +1,58 @@ +/* +//@HEADER +// ************************************************************************ +// +// KokkosKernels 0.9: Linear Algebra and Graph Kernels +// Copyright 2017 Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Siva Rajamanickam (srajama@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + + +#define KOKKOSKERNELS_IMPL_COMPILE_LIBRARY true +#include "KokkosKernels_config.h" +#if defined (KOKKOSKERNELS_INST_KOKKOS_COMPLEX_FLOAT_) \ + && defined (KOKKOSKERNELS_INST_LAYOUTRIGHT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_THREADS) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_HOSTSPACE) +#include "KokkosBlas3_trsm_spec.hpp" + +namespace KokkosBlas { +namespace Impl { + KOKKOSBLAS3_TRSM_ETI_SPEC_INST(Kokkos::complex, Kokkos::LayoutRight, Kokkos::Threads, Kokkos::HostSpace) +} // Impl +} // KokkosBlas +#endif diff --git a/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_dbl_LayoutLeft_Cuda_CudaS.cpp b/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_dbl_LayoutLeft_Cuda_CudaS.cpp new file mode 100644 index 0000000000..15a1663634 --- /dev/null +++ b/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_dbl_LayoutLeft_Cuda_CudaS.cpp @@ -0,0 +1,58 @@ +/* +//@HEADER +// ************************************************************************ +// +// KokkosKernels 0.9: Linear Algebra and Graph Kernels +// Copyright 2017 Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Siva Rajamanickam (srajama@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + + +#define KOKKOSKERNELS_IMPL_COMPILE_LIBRARY true +#include "KokkosKernels_config.h" +#if defined (KOKKOSKERNELS_INST_DOUBLE) \ + && defined (KOKKOSKERNELS_INST_LAYOUTLEFT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_CUDA) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_CUDASPACE) +#include "KokkosBlas3_trsm_spec.hpp" + +namespace KokkosBlas { +namespace Impl { + KOKKOSBLAS3_TRSM_ETI_SPEC_INST(double, Kokkos::LayoutLeft, Kokkos::Cuda, Kokkos::CudaSpace) +} // Impl +} // KokkosBlas +#endif diff --git a/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_dbl_LayoutLeft_Cuda_CudaUS.cpp b/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_dbl_LayoutLeft_Cuda_CudaUS.cpp new file mode 100644 index 0000000000..648f8b4f8f --- /dev/null +++ b/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_dbl_LayoutLeft_Cuda_CudaUS.cpp @@ -0,0 +1,58 @@ +/* +//@HEADER +// ************************************************************************ +// +// KokkosKernels 0.9: Linear Algebra and Graph Kernels +// Copyright 2017 Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Siva Rajamanickam (srajama@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + + +#define KOKKOSKERNELS_IMPL_COMPILE_LIBRARY true +#include "KokkosKernels_config.h" +#if defined (KOKKOSKERNELS_INST_DOUBLE) \ + && defined (KOKKOSKERNELS_INST_LAYOUTLEFT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_CUDA) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_CUDAUVMSPACE) +#include "KokkosBlas3_trsm_spec.hpp" + +namespace KokkosBlas { +namespace Impl { + KOKKOSBLAS3_TRSM_ETI_SPEC_INST(double, Kokkos::LayoutLeft, Kokkos::Cuda, Kokkos::CudaUVMSpace) +} // Impl +} // KokkosBlas +#endif diff --git a/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_dbl_LayoutLeft_OpenMP_HBWSpace.cpp b/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_dbl_LayoutLeft_OpenMP_HBWSpace.cpp new file mode 100644 index 0000000000..d848e869d1 --- /dev/null +++ b/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_dbl_LayoutLeft_OpenMP_HBWSpace.cpp @@ -0,0 +1,58 @@ +/* +//@HEADER +// ************************************************************************ +// +// KokkosKernels 0.9: Linear Algebra and Graph Kernels +// Copyright 2017 Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Siva Rajamanickam (srajama@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + + +#define KOKKOSKERNELS_IMPL_COMPILE_LIBRARY true +#include "KokkosKernels_config.h" +#if defined (KOKKOSKERNELS_INST_DOUBLE) \ + && defined (KOKKOSKERNELS_INST_LAYOUTLEFT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_OPENMP) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_HBWSPACE) +#include "KokkosBlas3_trsm_spec.hpp" + +namespace KokkosBlas { +namespace Impl { + KOKKOSBLAS3_TRSM_ETI_SPEC_INST(double, Kokkos::LayoutLeft, Kokkos::OpenMP, Kokkos::Experimental::HBWSpace) +} // Impl +} // KokkosBlas +#endif diff --git a/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_dbl_LayoutLeft_OpenMP_HostSpace.cpp b/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_dbl_LayoutLeft_OpenMP_HostSpace.cpp new file mode 100644 index 0000000000..9e0bf6f734 --- /dev/null +++ b/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_dbl_LayoutLeft_OpenMP_HostSpace.cpp @@ -0,0 +1,58 @@ +/* +//@HEADER +// ************************************************************************ +// +// KokkosKernels 0.9: Linear Algebra and Graph Kernels +// Copyright 2017 Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Siva Rajamanickam (srajama@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + + +#define KOKKOSKERNELS_IMPL_COMPILE_LIBRARY true +#include "KokkosKernels_config.h" +#if defined (KOKKOSKERNELS_INST_DOUBLE) \ + && defined (KOKKOSKERNELS_INST_LAYOUTLEFT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_OPENMP) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_HOSTSPACE) +#include "KokkosBlas3_trsm_spec.hpp" + +namespace KokkosBlas { +namespace Impl { + KOKKOSBLAS3_TRSM_ETI_SPEC_INST(double, Kokkos::LayoutLeft, Kokkos::OpenMP, Kokkos::HostSpace) +} // Impl +} // KokkosBlas +#endif diff --git a/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_dbl_LayoutLeft_Serial_HBWSpace.cpp b/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_dbl_LayoutLeft_Serial_HBWSpace.cpp new file mode 100644 index 0000000000..46329850fe --- /dev/null +++ b/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_dbl_LayoutLeft_Serial_HBWSpace.cpp @@ -0,0 +1,58 @@ +/* +//@HEADER +// ************************************************************************ +// +// KokkosKernels 0.9: Linear Algebra and Graph Kernels +// Copyright 2017 Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Siva Rajamanickam (srajama@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + + +#define KOKKOSKERNELS_IMPL_COMPILE_LIBRARY true +#include "KokkosKernels_config.h" +#if defined (KOKKOSKERNELS_INST_DOUBLE) \ + && defined (KOKKOSKERNELS_INST_LAYOUTLEFT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_SERIAL) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_HBWSPACE) +#include "KokkosBlas3_trsm_spec.hpp" + +namespace KokkosBlas { +namespace Impl { + KOKKOSBLAS3_TRSM_ETI_SPEC_INST(double, Kokkos::LayoutLeft, Kokkos::Serial, Kokkos::Experimental::HBWSpace) +} // Impl +} // KokkosBlas +#endif diff --git a/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_dbl_LayoutLeft_Serial_HostSpace.cpp b/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_dbl_LayoutLeft_Serial_HostSpace.cpp new file mode 100644 index 0000000000..7800c973d2 --- /dev/null +++ b/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_dbl_LayoutLeft_Serial_HostSpace.cpp @@ -0,0 +1,58 @@ +/* +//@HEADER +// ************************************************************************ +// +// KokkosKernels 0.9: Linear Algebra and Graph Kernels +// Copyright 2017 Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Siva Rajamanickam (srajama@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + + +#define KOKKOSKERNELS_IMPL_COMPILE_LIBRARY true +#include "KokkosKernels_config.h" +#if defined (KOKKOSKERNELS_INST_DOUBLE) \ + && defined (KOKKOSKERNELS_INST_LAYOUTLEFT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_SERIAL) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_HOSTSPACE) +#include "KokkosBlas3_trsm_spec.hpp" + +namespace KokkosBlas { +namespace Impl { + KOKKOSBLAS3_TRSM_ETI_SPEC_INST(double, Kokkos::LayoutLeft, Kokkos::Serial, Kokkos::HostSpace) +} // Impl +} // KokkosBlas +#endif diff --git a/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_dbl_LayoutLeft_Threads_HBWSpace.cpp b/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_dbl_LayoutLeft_Threads_HBWSpace.cpp new file mode 100644 index 0000000000..82be47bced --- /dev/null +++ b/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_dbl_LayoutLeft_Threads_HBWSpace.cpp @@ -0,0 +1,58 @@ +/* +//@HEADER +// ************************************************************************ +// +// KokkosKernels 0.9: Linear Algebra and Graph Kernels +// Copyright 2017 Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Siva Rajamanickam (srajama@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + + +#define KOKKOSKERNELS_IMPL_COMPILE_LIBRARY true +#include "KokkosKernels_config.h" +#if defined (KOKKOSKERNELS_INST_DOUBLE) \ + && defined (KOKKOSKERNELS_INST_LAYOUTLEFT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_THREADS) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_HBWSPACE) +#include "KokkosBlas3_trsm_spec.hpp" + +namespace KokkosBlas { +namespace Impl { + KOKKOSBLAS3_TRSM_ETI_SPEC_INST(double, Kokkos::LayoutLeft, Kokkos::Threads, Kokkos::Experimental::HBWSpace) +} // Impl +} // KokkosBlas +#endif diff --git a/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_dbl_LayoutLeft_Threads_HostSpace.cpp b/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_dbl_LayoutLeft_Threads_HostSpace.cpp new file mode 100644 index 0000000000..777ae258dc --- /dev/null +++ b/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_dbl_LayoutLeft_Threads_HostSpace.cpp @@ -0,0 +1,58 @@ +/* +//@HEADER +// ************************************************************************ +// +// KokkosKernels 0.9: Linear Algebra and Graph Kernels +// Copyright 2017 Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Siva Rajamanickam (srajama@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + + +#define KOKKOSKERNELS_IMPL_COMPILE_LIBRARY true +#include "KokkosKernels_config.h" +#if defined (KOKKOSKERNELS_INST_DOUBLE) \ + && defined (KOKKOSKERNELS_INST_LAYOUTLEFT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_THREADS) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_HOSTSPACE) +#include "KokkosBlas3_trsm_spec.hpp" + +namespace KokkosBlas { +namespace Impl { + KOKKOSBLAS3_TRSM_ETI_SPEC_INST(double, Kokkos::LayoutLeft, Kokkos::Threads, Kokkos::HostSpace) +} // Impl +} // KokkosBlas +#endif diff --git a/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_dbl_LayoutRight_Cuda_CudaS.cpp b/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_dbl_LayoutRight_Cuda_CudaS.cpp new file mode 100644 index 0000000000..8bdac42f3e --- /dev/null +++ b/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_dbl_LayoutRight_Cuda_CudaS.cpp @@ -0,0 +1,58 @@ +/* +//@HEADER +// ************************************************************************ +// +// KokkosKernels 0.9: Linear Algebra and Graph Kernels +// Copyright 2017 Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Siva Rajamanickam (srajama@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + + +#define KOKKOSKERNELS_IMPL_COMPILE_LIBRARY true +#include "KokkosKernels_config.h" +#if defined (KOKKOSKERNELS_INST_DOUBLE) \ + && defined (KOKKOSKERNELS_INST_LAYOUTRIGHT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_CUDA) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_CUDASPACE) +#include "KokkosBlas3_trsm_spec.hpp" + +namespace KokkosBlas { +namespace Impl { + KOKKOSBLAS3_TRSM_ETI_SPEC_INST(double, Kokkos::LayoutRight, Kokkos::Cuda, Kokkos::CudaSpace) +} // Impl +} // KokkosBlas +#endif diff --git a/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_dbl_LayoutRight_Cuda_CudaUS.cpp b/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_dbl_LayoutRight_Cuda_CudaUS.cpp new file mode 100644 index 0000000000..577be20422 --- /dev/null +++ b/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_dbl_LayoutRight_Cuda_CudaUS.cpp @@ -0,0 +1,58 @@ +/* +//@HEADER +// ************************************************************************ +// +// KokkosKernels 0.9: Linear Algebra and Graph Kernels +// Copyright 2017 Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Siva Rajamanickam (srajama@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + + +#define KOKKOSKERNELS_IMPL_COMPILE_LIBRARY true +#include "KokkosKernels_config.h" +#if defined (KOKKOSKERNELS_INST_DOUBLE) \ + && defined (KOKKOSKERNELS_INST_LAYOUTRIGHT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_CUDA) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_CUDAUVMSPACE) +#include "KokkosBlas3_trsm_spec.hpp" + +namespace KokkosBlas { +namespace Impl { + KOKKOSBLAS3_TRSM_ETI_SPEC_INST(double, Kokkos::LayoutRight, Kokkos::Cuda, Kokkos::CudaUVMSpace) +} // Impl +} // KokkosBlas +#endif diff --git a/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_dbl_LayoutRight_OpenMP_HBWSpace.cpp b/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_dbl_LayoutRight_OpenMP_HBWSpace.cpp new file mode 100644 index 0000000000..d777bdb59a --- /dev/null +++ b/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_dbl_LayoutRight_OpenMP_HBWSpace.cpp @@ -0,0 +1,58 @@ +/* +//@HEADER +// ************************************************************************ +// +// KokkosKernels 0.9: Linear Algebra and Graph Kernels +// Copyright 2017 Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Siva Rajamanickam (srajama@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + + +#define KOKKOSKERNELS_IMPL_COMPILE_LIBRARY true +#include "KokkosKernels_config.h" +#if defined (KOKKOSKERNELS_INST_DOUBLE) \ + && defined (KOKKOSKERNELS_INST_LAYOUTRIGHT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_OPENMP) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_HBWSPACE) +#include "KokkosBlas3_trsm_spec.hpp" + +namespace KokkosBlas { +namespace Impl { + KOKKOSBLAS3_TRSM_ETI_SPEC_INST(double, Kokkos::LayoutRight, Kokkos::OpenMP, Kokkos::Experimental::HBWSpace) +} // Impl +} // KokkosBlas +#endif diff --git a/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_dbl_LayoutRight_OpenMP_HostSpace.cpp b/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_dbl_LayoutRight_OpenMP_HostSpace.cpp new file mode 100644 index 0000000000..3ae9f04b0e --- /dev/null +++ b/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_dbl_LayoutRight_OpenMP_HostSpace.cpp @@ -0,0 +1,58 @@ +/* +//@HEADER +// ************************************************************************ +// +// KokkosKernels 0.9: Linear Algebra and Graph Kernels +// Copyright 2017 Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Siva Rajamanickam (srajama@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + + +#define KOKKOSKERNELS_IMPL_COMPILE_LIBRARY true +#include "KokkosKernels_config.h" +#if defined (KOKKOSKERNELS_INST_DOUBLE) \ + && defined (KOKKOSKERNELS_INST_LAYOUTRIGHT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_OPENMP) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_HOSTSPACE) +#include "KokkosBlas3_trsm_spec.hpp" + +namespace KokkosBlas { +namespace Impl { + KOKKOSBLAS3_TRSM_ETI_SPEC_INST(double, Kokkos::LayoutRight, Kokkos::OpenMP, Kokkos::HostSpace) +} // Impl +} // KokkosBlas +#endif diff --git a/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_dbl_LayoutRight_Serial_HBWSpace.cpp b/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_dbl_LayoutRight_Serial_HBWSpace.cpp new file mode 100644 index 0000000000..08ecbe7a95 --- /dev/null +++ b/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_dbl_LayoutRight_Serial_HBWSpace.cpp @@ -0,0 +1,58 @@ +/* +//@HEADER +// ************************************************************************ +// +// KokkosKernels 0.9: Linear Algebra and Graph Kernels +// Copyright 2017 Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Siva Rajamanickam (srajama@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + + +#define KOKKOSKERNELS_IMPL_COMPILE_LIBRARY true +#include "KokkosKernels_config.h" +#if defined (KOKKOSKERNELS_INST_DOUBLE) \ + && defined (KOKKOSKERNELS_INST_LAYOUTRIGHT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_SERIAL) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_HBWSPACE) +#include "KokkosBlas3_trsm_spec.hpp" + +namespace KokkosBlas { +namespace Impl { + KOKKOSBLAS3_TRSM_ETI_SPEC_INST(double, Kokkos::LayoutRight, Kokkos::Serial, Kokkos::Experimental::HBWSpace) +} // Impl +} // KokkosBlas +#endif diff --git a/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_dbl_LayoutRight_Serial_HostSpace.cpp b/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_dbl_LayoutRight_Serial_HostSpace.cpp new file mode 100644 index 0000000000..334633f19f --- /dev/null +++ b/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_dbl_LayoutRight_Serial_HostSpace.cpp @@ -0,0 +1,58 @@ +/* +//@HEADER +// ************************************************************************ +// +// KokkosKernels 0.9: Linear Algebra and Graph Kernels +// Copyright 2017 Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Siva Rajamanickam (srajama@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + + +#define KOKKOSKERNELS_IMPL_COMPILE_LIBRARY true +#include "KokkosKernels_config.h" +#if defined (KOKKOSKERNELS_INST_DOUBLE) \ + && defined (KOKKOSKERNELS_INST_LAYOUTRIGHT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_SERIAL) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_HOSTSPACE) +#include "KokkosBlas3_trsm_spec.hpp" + +namespace KokkosBlas { +namespace Impl { + KOKKOSBLAS3_TRSM_ETI_SPEC_INST(double, Kokkos::LayoutRight, Kokkos::Serial, Kokkos::HostSpace) +} // Impl +} // KokkosBlas +#endif diff --git a/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_dbl_LayoutRight_Threads_HBWSpace.cpp b/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_dbl_LayoutRight_Threads_HBWSpace.cpp new file mode 100644 index 0000000000..ef2825bd40 --- /dev/null +++ b/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_dbl_LayoutRight_Threads_HBWSpace.cpp @@ -0,0 +1,58 @@ +/* +//@HEADER +// ************************************************************************ +// +// KokkosKernels 0.9: Linear Algebra and Graph Kernels +// Copyright 2017 Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Siva Rajamanickam (srajama@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + + +#define KOKKOSKERNELS_IMPL_COMPILE_LIBRARY true +#include "KokkosKernels_config.h" +#if defined (KOKKOSKERNELS_INST_DOUBLE) \ + && defined (KOKKOSKERNELS_INST_LAYOUTRIGHT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_THREADS) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_HBWSPACE) +#include "KokkosBlas3_trsm_spec.hpp" + +namespace KokkosBlas { +namespace Impl { + KOKKOSBLAS3_TRSM_ETI_SPEC_INST(double, Kokkos::LayoutRight, Kokkos::Threads, Kokkos::Experimental::HBWSpace) +} // Impl +} // KokkosBlas +#endif diff --git a/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_dbl_LayoutRight_Threads_HostSpace.cpp b/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_dbl_LayoutRight_Threads_HostSpace.cpp new file mode 100644 index 0000000000..584f5f942d --- /dev/null +++ b/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_dbl_LayoutRight_Threads_HostSpace.cpp @@ -0,0 +1,58 @@ +/* +//@HEADER +// ************************************************************************ +// +// KokkosKernels 0.9: Linear Algebra and Graph Kernels +// Copyright 2017 Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Siva Rajamanickam (srajama@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + + +#define KOKKOSKERNELS_IMPL_COMPILE_LIBRARY true +#include "KokkosKernels_config.h" +#if defined (KOKKOSKERNELS_INST_DOUBLE) \ + && defined (KOKKOSKERNELS_INST_LAYOUTRIGHT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_THREADS) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_HOSTSPACE) +#include "KokkosBlas3_trsm_spec.hpp" + +namespace KokkosBlas { +namespace Impl { + KOKKOSBLAS3_TRSM_ETI_SPEC_INST(double, Kokkos::LayoutRight, Kokkos::Threads, Kokkos::HostSpace) +} // Impl +} // KokkosBlas +#endif diff --git a/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_flt_LayoutLeft_Cuda_CudaS.cpp b/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_flt_LayoutLeft_Cuda_CudaS.cpp new file mode 100644 index 0000000000..16f24ffc7e --- /dev/null +++ b/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_flt_LayoutLeft_Cuda_CudaS.cpp @@ -0,0 +1,58 @@ +/* +//@HEADER +// ************************************************************************ +// +// KokkosKernels 0.9: Linear Algebra and Graph Kernels +// Copyright 2017 Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Siva Rajamanickam (srajama@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + + +#define KOKKOSKERNELS_IMPL_COMPILE_LIBRARY true +#include "KokkosKernels_config.h" +#if defined (KOKKOSKERNELS_INST_FLOAT) \ + && defined (KOKKOSKERNELS_INST_LAYOUTLEFT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_CUDA) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_CUDASPACE) +#include "KokkosBlas3_trsm_spec.hpp" + +namespace KokkosBlas { +namespace Impl { + KOKKOSBLAS3_TRSM_ETI_SPEC_INST(float, Kokkos::LayoutLeft, Kokkos::Cuda, Kokkos::CudaSpace) +} // Impl +} // KokkosBlas +#endif diff --git a/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_flt_LayoutLeft_Cuda_CudaUS.cpp b/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_flt_LayoutLeft_Cuda_CudaUS.cpp new file mode 100644 index 0000000000..1b6ed41693 --- /dev/null +++ b/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_flt_LayoutLeft_Cuda_CudaUS.cpp @@ -0,0 +1,58 @@ +/* +//@HEADER +// ************************************************************************ +// +// KokkosKernels 0.9: Linear Algebra and Graph Kernels +// Copyright 2017 Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Siva Rajamanickam (srajama@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + + +#define KOKKOSKERNELS_IMPL_COMPILE_LIBRARY true +#include "KokkosKernels_config.h" +#if defined (KOKKOSKERNELS_INST_FLOAT) \ + && defined (KOKKOSKERNELS_INST_LAYOUTLEFT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_CUDA) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_CUDAUVMSPACE) +#include "KokkosBlas3_trsm_spec.hpp" + +namespace KokkosBlas { +namespace Impl { + KOKKOSBLAS3_TRSM_ETI_SPEC_INST(float, Kokkos::LayoutLeft, Kokkos::Cuda, Kokkos::CudaUVMSpace) +} // Impl +} // KokkosBlas +#endif diff --git a/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_flt_LayoutLeft_OpenMP_HBWSpace.cpp b/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_flt_LayoutLeft_OpenMP_HBWSpace.cpp new file mode 100644 index 0000000000..aabfc73ef6 --- /dev/null +++ b/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_flt_LayoutLeft_OpenMP_HBWSpace.cpp @@ -0,0 +1,58 @@ +/* +//@HEADER +// ************************************************************************ +// +// KokkosKernels 0.9: Linear Algebra and Graph Kernels +// Copyright 2017 Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Siva Rajamanickam (srajama@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + + +#define KOKKOSKERNELS_IMPL_COMPILE_LIBRARY true +#include "KokkosKernels_config.h" +#if defined (KOKKOSKERNELS_INST_FLOAT) \ + && defined (KOKKOSKERNELS_INST_LAYOUTLEFT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_OPENMP) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_HBWSPACE) +#include "KokkosBlas3_trsm_spec.hpp" + +namespace KokkosBlas { +namespace Impl { + KOKKOSBLAS3_TRSM_ETI_SPEC_INST(float, Kokkos::LayoutLeft, Kokkos::OpenMP, Kokkos::Experimental::HBWSpace) +} // Impl +} // KokkosBlas +#endif diff --git a/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_flt_LayoutLeft_OpenMP_HostSpace.cpp b/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_flt_LayoutLeft_OpenMP_HostSpace.cpp new file mode 100644 index 0000000000..51d3ed4665 --- /dev/null +++ b/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_flt_LayoutLeft_OpenMP_HostSpace.cpp @@ -0,0 +1,58 @@ +/* +//@HEADER +// ************************************************************************ +// +// KokkosKernels 0.9: Linear Algebra and Graph Kernels +// Copyright 2017 Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Siva Rajamanickam (srajama@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + + +#define KOKKOSKERNELS_IMPL_COMPILE_LIBRARY true +#include "KokkosKernels_config.h" +#if defined (KOKKOSKERNELS_INST_FLOAT) \ + && defined (KOKKOSKERNELS_INST_LAYOUTLEFT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_OPENMP) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_HOSTSPACE) +#include "KokkosBlas3_trsm_spec.hpp" + +namespace KokkosBlas { +namespace Impl { + KOKKOSBLAS3_TRSM_ETI_SPEC_INST(float, Kokkos::LayoutLeft, Kokkos::OpenMP, Kokkos::HostSpace) +} // Impl +} // KokkosBlas +#endif diff --git a/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_flt_LayoutLeft_Serial_HBWSpace.cpp b/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_flt_LayoutLeft_Serial_HBWSpace.cpp new file mode 100644 index 0000000000..5e1d7f11d0 --- /dev/null +++ b/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_flt_LayoutLeft_Serial_HBWSpace.cpp @@ -0,0 +1,58 @@ +/* +//@HEADER +// ************************************************************************ +// +// KokkosKernels 0.9: Linear Algebra and Graph Kernels +// Copyright 2017 Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Siva Rajamanickam (srajama@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + + +#define KOKKOSKERNELS_IMPL_COMPILE_LIBRARY true +#include "KokkosKernels_config.h" +#if defined (KOKKOSKERNELS_INST_FLOAT) \ + && defined (KOKKOSKERNELS_INST_LAYOUTLEFT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_SERIAL) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_HBWSPACE) +#include "KokkosBlas3_trsm_spec.hpp" + +namespace KokkosBlas { +namespace Impl { + KOKKOSBLAS3_TRSM_ETI_SPEC_INST(float, Kokkos::LayoutLeft, Kokkos::Serial, Kokkos::Experimental::HBWSpace) +} // Impl +} // KokkosBlas +#endif diff --git a/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_flt_LayoutLeft_Serial_HostSpace.cpp b/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_flt_LayoutLeft_Serial_HostSpace.cpp new file mode 100644 index 0000000000..5b3a488d81 --- /dev/null +++ b/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_flt_LayoutLeft_Serial_HostSpace.cpp @@ -0,0 +1,58 @@ +/* +//@HEADER +// ************************************************************************ +// +// KokkosKernels 0.9: Linear Algebra and Graph Kernels +// Copyright 2017 Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Siva Rajamanickam (srajama@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + + +#define KOKKOSKERNELS_IMPL_COMPILE_LIBRARY true +#include "KokkosKernels_config.h" +#if defined (KOKKOSKERNELS_INST_FLOAT) \ + && defined (KOKKOSKERNELS_INST_LAYOUTLEFT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_SERIAL) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_HOSTSPACE) +#include "KokkosBlas3_trsm_spec.hpp" + +namespace KokkosBlas { +namespace Impl { + KOKKOSBLAS3_TRSM_ETI_SPEC_INST(float, Kokkos::LayoutLeft, Kokkos::Serial, Kokkos::HostSpace) +} // Impl +} // KokkosBlas +#endif diff --git a/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_flt_LayoutLeft_Threads_HBWSpace.cpp b/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_flt_LayoutLeft_Threads_HBWSpace.cpp new file mode 100644 index 0000000000..efc79583ea --- /dev/null +++ b/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_flt_LayoutLeft_Threads_HBWSpace.cpp @@ -0,0 +1,58 @@ +/* +//@HEADER +// ************************************************************************ +// +// KokkosKernels 0.9: Linear Algebra and Graph Kernels +// Copyright 2017 Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Siva Rajamanickam (srajama@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + + +#define KOKKOSKERNELS_IMPL_COMPILE_LIBRARY true +#include "KokkosKernels_config.h" +#if defined (KOKKOSKERNELS_INST_FLOAT) \ + && defined (KOKKOSKERNELS_INST_LAYOUTLEFT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_THREADS) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_HBWSPACE) +#include "KokkosBlas3_trsm_spec.hpp" + +namespace KokkosBlas { +namespace Impl { + KOKKOSBLAS3_TRSM_ETI_SPEC_INST(float, Kokkos::LayoutLeft, Kokkos::Threads, Kokkos::Experimental::HBWSpace) +} // Impl +} // KokkosBlas +#endif diff --git a/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_flt_LayoutLeft_Threads_HostSpace.cpp b/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_flt_LayoutLeft_Threads_HostSpace.cpp new file mode 100644 index 0000000000..fa175d4688 --- /dev/null +++ b/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_flt_LayoutLeft_Threads_HostSpace.cpp @@ -0,0 +1,58 @@ +/* +//@HEADER +// ************************************************************************ +// +// KokkosKernels 0.9: Linear Algebra and Graph Kernels +// Copyright 2017 Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Siva Rajamanickam (srajama@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + + +#define KOKKOSKERNELS_IMPL_COMPILE_LIBRARY true +#include "KokkosKernels_config.h" +#if defined (KOKKOSKERNELS_INST_FLOAT) \ + && defined (KOKKOSKERNELS_INST_LAYOUTLEFT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_THREADS) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_HOSTSPACE) +#include "KokkosBlas3_trsm_spec.hpp" + +namespace KokkosBlas { +namespace Impl { + KOKKOSBLAS3_TRSM_ETI_SPEC_INST(float, Kokkos::LayoutLeft, Kokkos::Threads, Kokkos::HostSpace) +} // Impl +} // KokkosBlas +#endif diff --git a/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_flt_LayoutRight_Cuda_CudaS.cpp b/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_flt_LayoutRight_Cuda_CudaS.cpp new file mode 100644 index 0000000000..de267982a7 --- /dev/null +++ b/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_flt_LayoutRight_Cuda_CudaS.cpp @@ -0,0 +1,58 @@ +/* +//@HEADER +// ************************************************************************ +// +// KokkosKernels 0.9: Linear Algebra and Graph Kernels +// Copyright 2017 Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Siva Rajamanickam (srajama@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + + +#define KOKKOSKERNELS_IMPL_COMPILE_LIBRARY true +#include "KokkosKernels_config.h" +#if defined (KOKKOSKERNELS_INST_FLOAT) \ + && defined (KOKKOSKERNELS_INST_LAYOUTRIGHT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_CUDA) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_CUDASPACE) +#include "KokkosBlas3_trsm_spec.hpp" + +namespace KokkosBlas { +namespace Impl { + KOKKOSBLAS3_TRSM_ETI_SPEC_INST(float, Kokkos::LayoutRight, Kokkos::Cuda, Kokkos::CudaSpace) +} // Impl +} // KokkosBlas +#endif diff --git a/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_flt_LayoutRight_Cuda_CudaUS.cpp b/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_flt_LayoutRight_Cuda_CudaUS.cpp new file mode 100644 index 0000000000..8409a3585f --- /dev/null +++ b/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_flt_LayoutRight_Cuda_CudaUS.cpp @@ -0,0 +1,58 @@ +/* +//@HEADER +// ************************************************************************ +// +// KokkosKernels 0.9: Linear Algebra and Graph Kernels +// Copyright 2017 Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Siva Rajamanickam (srajama@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + + +#define KOKKOSKERNELS_IMPL_COMPILE_LIBRARY true +#include "KokkosKernels_config.h" +#if defined (KOKKOSKERNELS_INST_FLOAT) \ + && defined (KOKKOSKERNELS_INST_LAYOUTRIGHT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_CUDA) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_CUDAUVMSPACE) +#include "KokkosBlas3_trsm_spec.hpp" + +namespace KokkosBlas { +namespace Impl { + KOKKOSBLAS3_TRSM_ETI_SPEC_INST(float, Kokkos::LayoutRight, Kokkos::Cuda, Kokkos::CudaUVMSpace) +} // Impl +} // KokkosBlas +#endif diff --git a/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_flt_LayoutRight_OpenMP_HBWSpace.cpp b/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_flt_LayoutRight_OpenMP_HBWSpace.cpp new file mode 100644 index 0000000000..946009f33c --- /dev/null +++ b/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_flt_LayoutRight_OpenMP_HBWSpace.cpp @@ -0,0 +1,58 @@ +/* +//@HEADER +// ************************************************************************ +// +// KokkosKernels 0.9: Linear Algebra and Graph Kernels +// Copyright 2017 Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Siva Rajamanickam (srajama@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + + +#define KOKKOSKERNELS_IMPL_COMPILE_LIBRARY true +#include "KokkosKernels_config.h" +#if defined (KOKKOSKERNELS_INST_FLOAT) \ + && defined (KOKKOSKERNELS_INST_LAYOUTRIGHT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_OPENMP) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_HBWSPACE) +#include "KokkosBlas3_trsm_spec.hpp" + +namespace KokkosBlas { +namespace Impl { + KOKKOSBLAS3_TRSM_ETI_SPEC_INST(float, Kokkos::LayoutRight, Kokkos::OpenMP, Kokkos::Experimental::HBWSpace) +} // Impl +} // KokkosBlas +#endif diff --git a/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_flt_LayoutRight_OpenMP_HostSpace.cpp b/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_flt_LayoutRight_OpenMP_HostSpace.cpp new file mode 100644 index 0000000000..a5172b65fb --- /dev/null +++ b/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_flt_LayoutRight_OpenMP_HostSpace.cpp @@ -0,0 +1,58 @@ +/* +//@HEADER +// ************************************************************************ +// +// KokkosKernels 0.9: Linear Algebra and Graph Kernels +// Copyright 2017 Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Siva Rajamanickam (srajama@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + + +#define KOKKOSKERNELS_IMPL_COMPILE_LIBRARY true +#include "KokkosKernels_config.h" +#if defined (KOKKOSKERNELS_INST_FLOAT) \ + && defined (KOKKOSKERNELS_INST_LAYOUTRIGHT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_OPENMP) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_HOSTSPACE) +#include "KokkosBlas3_trsm_spec.hpp" + +namespace KokkosBlas { +namespace Impl { + KOKKOSBLAS3_TRSM_ETI_SPEC_INST(float, Kokkos::LayoutRight, Kokkos::OpenMP, Kokkos::HostSpace) +} // Impl +} // KokkosBlas +#endif diff --git a/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_flt_LayoutRight_Serial_HBWSpace.cpp b/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_flt_LayoutRight_Serial_HBWSpace.cpp new file mode 100644 index 0000000000..1c09886300 --- /dev/null +++ b/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_flt_LayoutRight_Serial_HBWSpace.cpp @@ -0,0 +1,58 @@ +/* +//@HEADER +// ************************************************************************ +// +// KokkosKernels 0.9: Linear Algebra and Graph Kernels +// Copyright 2017 Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Siva Rajamanickam (srajama@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + + +#define KOKKOSKERNELS_IMPL_COMPILE_LIBRARY true +#include "KokkosKernels_config.h" +#if defined (KOKKOSKERNELS_INST_FLOAT) \ + && defined (KOKKOSKERNELS_INST_LAYOUTRIGHT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_SERIAL) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_HBWSPACE) +#include "KokkosBlas3_trsm_spec.hpp" + +namespace KokkosBlas { +namespace Impl { + KOKKOSBLAS3_TRSM_ETI_SPEC_INST(float, Kokkos::LayoutRight, Kokkos::Serial, Kokkos::Experimental::HBWSpace) +} // Impl +} // KokkosBlas +#endif diff --git a/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_flt_LayoutRight_Serial_HostSpace.cpp b/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_flt_LayoutRight_Serial_HostSpace.cpp new file mode 100644 index 0000000000..afc8948f28 --- /dev/null +++ b/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_flt_LayoutRight_Serial_HostSpace.cpp @@ -0,0 +1,58 @@ +/* +//@HEADER +// ************************************************************************ +// +// KokkosKernels 0.9: Linear Algebra and Graph Kernels +// Copyright 2017 Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Siva Rajamanickam (srajama@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + + +#define KOKKOSKERNELS_IMPL_COMPILE_LIBRARY true +#include "KokkosKernels_config.h" +#if defined (KOKKOSKERNELS_INST_FLOAT) \ + && defined (KOKKOSKERNELS_INST_LAYOUTRIGHT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_SERIAL) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_HOSTSPACE) +#include "KokkosBlas3_trsm_spec.hpp" + +namespace KokkosBlas { +namespace Impl { + KOKKOSBLAS3_TRSM_ETI_SPEC_INST(float, Kokkos::LayoutRight, Kokkos::Serial, Kokkos::HostSpace) +} // Impl +} // KokkosBlas +#endif diff --git a/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_flt_LayoutRight_Threads_HBWSpace.cpp b/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_flt_LayoutRight_Threads_HBWSpace.cpp new file mode 100644 index 0000000000..45a20b08ff --- /dev/null +++ b/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_flt_LayoutRight_Threads_HBWSpace.cpp @@ -0,0 +1,58 @@ +/* +//@HEADER +// ************************************************************************ +// +// KokkosKernels 0.9: Linear Algebra and Graph Kernels +// Copyright 2017 Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Siva Rajamanickam (srajama@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + + +#define KOKKOSKERNELS_IMPL_COMPILE_LIBRARY true +#include "KokkosKernels_config.h" +#if defined (KOKKOSKERNELS_INST_FLOAT) \ + && defined (KOKKOSKERNELS_INST_LAYOUTRIGHT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_THREADS) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_HBWSPACE) +#include "KokkosBlas3_trsm_spec.hpp" + +namespace KokkosBlas { +namespace Impl { + KOKKOSBLAS3_TRSM_ETI_SPEC_INST(float, Kokkos::LayoutRight, Kokkos::Threads, Kokkos::Experimental::HBWSpace) +} // Impl +} // KokkosBlas +#endif diff --git a/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_flt_LayoutRight_Threads_HostSpace.cpp b/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_flt_LayoutRight_Threads_HostSpace.cpp new file mode 100644 index 0000000000..ba5a577255 --- /dev/null +++ b/src/impl/generated_specializations_cpp/trsm/KokkosBlas3_trsm_eti_spec_inst_flt_LayoutRight_Threads_HostSpace.cpp @@ -0,0 +1,58 @@ +/* +//@HEADER +// ************************************************************************ +// +// KokkosKernels 0.9: Linear Algebra and Graph Kernels +// Copyright 2017 Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Siva Rajamanickam (srajama@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + + +#define KOKKOSKERNELS_IMPL_COMPILE_LIBRARY true +#include "KokkosKernels_config.h" +#if defined (KOKKOSKERNELS_INST_FLOAT) \ + && defined (KOKKOSKERNELS_INST_LAYOUTRIGHT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_THREADS) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_HOSTSPACE) +#include "KokkosBlas3_trsm_spec.hpp" + +namespace KokkosBlas { +namespace Impl { + KOKKOSBLAS3_TRSM_ETI_SPEC_INST(float, Kokkos::LayoutRight, Kokkos::Threads, Kokkos::HostSpace) +} // Impl +} // KokkosBlas +#endif diff --git a/src/impl/generated_specializations_hpp/KokkosBlas3_trsm_eti_spec_avail.hpp b/src/impl/generated_specializations_hpp/KokkosBlas3_trsm_eti_spec_avail.hpp new file mode 100644 index 0000000000..9982bc1016 --- /dev/null +++ b/src/impl/generated_specializations_hpp/KokkosBlas3_trsm_eti_spec_avail.hpp @@ -0,0 +1,498 @@ +#ifndef KOKKOSBLAS3_TRSM_ETI_SPEC_AVAIL_HPP_ +#define KOKKOSBLAS3_TRSM_ETI_SPEC_AVAIL_HPP_ +/* +//@HEADER +// ************************************************************************ +// +// KokkosKernels 0.9: Linear Algebra and Graph Kernels +// Copyright 2017 Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Siva Rajamanickam (srajama@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +namespace KokkosBlas { +namespace Impl { + +#if defined (KOKKOSKERNELS_INST_DOUBLE) \ + && defined (KOKKOSKERNELS_INST_LAYOUTLEFT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_CUDA) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_CUDASPACE) + KOKKOSBLAS3_TRSM_ETI_SPEC_AVAIL(double, Kokkos::LayoutLeft, Kokkos::Cuda, Kokkos::CudaSpace) +#endif + +#if defined (KOKKOSKERNELS_INST_DOUBLE) \ + && defined (KOKKOSKERNELS_INST_LAYOUTLEFT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_CUDA) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_CUDAUVMSPACE) + KOKKOSBLAS3_TRSM_ETI_SPEC_AVAIL(double, Kokkos::LayoutLeft, Kokkos::Cuda, Kokkos::CudaUVMSpace) +#endif + +#if defined (KOKKOSKERNELS_INST_DOUBLE) \ + && defined (KOKKOSKERNELS_INST_LAYOUTLEFT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_OPENMP) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_HOSTSPACE) + KOKKOSBLAS3_TRSM_ETI_SPEC_AVAIL(double, Kokkos::LayoutLeft, Kokkos::OpenMP, Kokkos::HostSpace) +#endif + +#if defined (KOKKOSKERNELS_INST_DOUBLE) \ + && defined (KOKKOSKERNELS_INST_LAYOUTLEFT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_THREADS) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_HOSTSPACE) + KOKKOSBLAS3_TRSM_ETI_SPEC_AVAIL(double, Kokkos::LayoutLeft, Kokkos::Threads, Kokkos::HostSpace) +#endif + +#if defined (KOKKOSKERNELS_INST_DOUBLE) \ + && defined (KOKKOSKERNELS_INST_LAYOUTLEFT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_SERIAL) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_HOSTSPACE) + KOKKOSBLAS3_TRSM_ETI_SPEC_AVAIL(double, Kokkos::LayoutLeft, Kokkos::Serial, Kokkos::HostSpace) +#endif + +#if defined (KOKKOSKERNELS_INST_DOUBLE) \ + && defined (KOKKOSKERNELS_INST_LAYOUTLEFT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_OPENMP) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_HBWSPACE) + KOKKOSBLAS3_TRSM_ETI_SPEC_AVAIL(double, Kokkos::LayoutLeft, Kokkos::OpenMP, Kokkos::Experimental::HBWSpace) +#endif + +#if defined (KOKKOSKERNELS_INST_DOUBLE) \ + && defined (KOKKOSKERNELS_INST_LAYOUTLEFT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_THREADS) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_HBWSPACE) + KOKKOSBLAS3_TRSM_ETI_SPEC_AVAIL(double, Kokkos::LayoutLeft, Kokkos::Threads, Kokkos::Experimental::HBWSpace) +#endif + +#if defined (KOKKOSKERNELS_INST_DOUBLE) \ + && defined (KOKKOSKERNELS_INST_LAYOUTLEFT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_SERIAL) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_HBWSPACE) + KOKKOSBLAS3_TRSM_ETI_SPEC_AVAIL(double, Kokkos::LayoutLeft, Kokkos::Serial, Kokkos::Experimental::HBWSpace) +#endif + +#if defined (KOKKOSKERNELS_INST_DOUBLE) \ + && defined (KOKKOSKERNELS_INST_LAYOUTRIGHT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_CUDA) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_CUDASPACE) + KOKKOSBLAS3_TRSM_ETI_SPEC_AVAIL(double, Kokkos::LayoutRight, Kokkos::Cuda, Kokkos::CudaSpace) +#endif + +#if defined (KOKKOSKERNELS_INST_DOUBLE) \ + && defined (KOKKOSKERNELS_INST_LAYOUTRIGHT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_CUDA) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_CUDAUVMSPACE) + KOKKOSBLAS3_TRSM_ETI_SPEC_AVAIL(double, Kokkos::LayoutRight, Kokkos::Cuda, Kokkos::CudaUVMSpace) +#endif + +#if defined (KOKKOSKERNELS_INST_DOUBLE) \ + && defined (KOKKOSKERNELS_INST_LAYOUTRIGHT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_OPENMP) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_HOSTSPACE) + KOKKOSBLAS3_TRSM_ETI_SPEC_AVAIL(double, Kokkos::LayoutRight, Kokkos::OpenMP, Kokkos::HostSpace) +#endif + +#if defined (KOKKOSKERNELS_INST_DOUBLE) \ + && defined (KOKKOSKERNELS_INST_LAYOUTRIGHT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_THREADS) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_HOSTSPACE) + KOKKOSBLAS3_TRSM_ETI_SPEC_AVAIL(double, Kokkos::LayoutRight, Kokkos::Threads, Kokkos::HostSpace) +#endif + +#if defined (KOKKOSKERNELS_INST_DOUBLE) \ + && defined (KOKKOSKERNELS_INST_LAYOUTRIGHT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_SERIAL) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_HOSTSPACE) + KOKKOSBLAS3_TRSM_ETI_SPEC_AVAIL(double, Kokkos::LayoutRight, Kokkos::Serial, Kokkos::HostSpace) +#endif + +#if defined (KOKKOSKERNELS_INST_DOUBLE) \ + && defined (KOKKOSKERNELS_INST_LAYOUTRIGHT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_OPENMP) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_HBWSPACE) + KOKKOSBLAS3_TRSM_ETI_SPEC_AVAIL(double, Kokkos::LayoutRight, Kokkos::OpenMP, Kokkos::Experimental::HBWSpace) +#endif + +#if defined (KOKKOSKERNELS_INST_DOUBLE) \ + && defined (KOKKOSKERNELS_INST_LAYOUTRIGHT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_THREADS) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_HBWSPACE) + KOKKOSBLAS3_TRSM_ETI_SPEC_AVAIL(double, Kokkos::LayoutRight, Kokkos::Threads, Kokkos::Experimental::HBWSpace) +#endif + +#if defined (KOKKOSKERNELS_INST_DOUBLE) \ + && defined (KOKKOSKERNELS_INST_LAYOUTRIGHT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_SERIAL) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_HBWSPACE) + KOKKOSBLAS3_TRSM_ETI_SPEC_AVAIL(double, Kokkos::LayoutRight, Kokkos::Serial, Kokkos::Experimental::HBWSpace) +#endif + +#if defined (KOKKOSKERNELS_INST_FLOAT) \ + && defined (KOKKOSKERNELS_INST_LAYOUTLEFT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_CUDA) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_CUDASPACE) + KOKKOSBLAS3_TRSM_ETI_SPEC_AVAIL(float, Kokkos::LayoutLeft, Kokkos::Cuda, Kokkos::CudaSpace) +#endif + +#if defined (KOKKOSKERNELS_INST_FLOAT) \ + && defined (KOKKOSKERNELS_INST_LAYOUTLEFT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_CUDA) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_CUDAUVMSPACE) + KOKKOSBLAS3_TRSM_ETI_SPEC_AVAIL(float, Kokkos::LayoutLeft, Kokkos::Cuda, Kokkos::CudaUVMSpace) +#endif + +#if defined (KOKKOSKERNELS_INST_FLOAT) \ + && defined (KOKKOSKERNELS_INST_LAYOUTLEFT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_OPENMP) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_HOSTSPACE) + KOKKOSBLAS3_TRSM_ETI_SPEC_AVAIL(float, Kokkos::LayoutLeft, Kokkos::OpenMP, Kokkos::HostSpace) +#endif + +#if defined (KOKKOSKERNELS_INST_FLOAT) \ + && defined (KOKKOSKERNELS_INST_LAYOUTLEFT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_THREADS) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_HOSTSPACE) + KOKKOSBLAS3_TRSM_ETI_SPEC_AVAIL(float, Kokkos::LayoutLeft, Kokkos::Threads, Kokkos::HostSpace) +#endif + +#if defined (KOKKOSKERNELS_INST_FLOAT) \ + && defined (KOKKOSKERNELS_INST_LAYOUTLEFT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_SERIAL) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_HOSTSPACE) + KOKKOSBLAS3_TRSM_ETI_SPEC_AVAIL(float, Kokkos::LayoutLeft, Kokkos::Serial, Kokkos::HostSpace) +#endif + +#if defined (KOKKOSKERNELS_INST_FLOAT) \ + && defined (KOKKOSKERNELS_INST_LAYOUTLEFT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_OPENMP) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_HBWSPACE) + KOKKOSBLAS3_TRSM_ETI_SPEC_AVAIL(float, Kokkos::LayoutLeft, Kokkos::OpenMP, Kokkos::Experimental::HBWSpace) +#endif + +#if defined (KOKKOSKERNELS_INST_FLOAT) \ + && defined (KOKKOSKERNELS_INST_LAYOUTLEFT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_THREADS) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_HBWSPACE) + KOKKOSBLAS3_TRSM_ETI_SPEC_AVAIL(float, Kokkos::LayoutLeft, Kokkos::Threads, Kokkos::Experimental::HBWSpace) +#endif + +#if defined (KOKKOSKERNELS_INST_FLOAT) \ + && defined (KOKKOSKERNELS_INST_LAYOUTLEFT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_SERIAL) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_HBWSPACE) + KOKKOSBLAS3_TRSM_ETI_SPEC_AVAIL(float, Kokkos::LayoutLeft, Kokkos::Serial, Kokkos::Experimental::HBWSpace) +#endif + +#if defined (KOKKOSKERNELS_INST_FLOAT) \ + && defined (KOKKOSKERNELS_INST_LAYOUTRIGHT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_CUDA) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_CUDASPACE) + KOKKOSBLAS3_TRSM_ETI_SPEC_AVAIL(float, Kokkos::LayoutRight, Kokkos::Cuda, Kokkos::CudaSpace) +#endif + +#if defined (KOKKOSKERNELS_INST_FLOAT) \ + && defined (KOKKOSKERNELS_INST_LAYOUTRIGHT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_CUDA) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_CUDAUVMSPACE) + KOKKOSBLAS3_TRSM_ETI_SPEC_AVAIL(float, Kokkos::LayoutRight, Kokkos::Cuda, Kokkos::CudaUVMSpace) +#endif + +#if defined (KOKKOSKERNELS_INST_FLOAT) \ + && defined (KOKKOSKERNELS_INST_LAYOUTRIGHT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_OPENMP) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_HOSTSPACE) + KOKKOSBLAS3_TRSM_ETI_SPEC_AVAIL(float, Kokkos::LayoutRight, Kokkos::OpenMP, Kokkos::HostSpace) +#endif + +#if defined (KOKKOSKERNELS_INST_FLOAT) \ + && defined (KOKKOSKERNELS_INST_LAYOUTRIGHT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_THREADS) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_HOSTSPACE) + KOKKOSBLAS3_TRSM_ETI_SPEC_AVAIL(float, Kokkos::LayoutRight, Kokkos::Threads, Kokkos::HostSpace) +#endif + +#if defined (KOKKOSKERNELS_INST_FLOAT) \ + && defined (KOKKOSKERNELS_INST_LAYOUTRIGHT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_SERIAL) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_HOSTSPACE) + KOKKOSBLAS3_TRSM_ETI_SPEC_AVAIL(float, Kokkos::LayoutRight, Kokkos::Serial, Kokkos::HostSpace) +#endif + +#if defined (KOKKOSKERNELS_INST_FLOAT) \ + && defined (KOKKOSKERNELS_INST_LAYOUTRIGHT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_OPENMP) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_HBWSPACE) + KOKKOSBLAS3_TRSM_ETI_SPEC_AVAIL(float, Kokkos::LayoutRight, Kokkos::OpenMP, Kokkos::Experimental::HBWSpace) +#endif + +#if defined (KOKKOSKERNELS_INST_FLOAT) \ + && defined (KOKKOSKERNELS_INST_LAYOUTRIGHT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_THREADS) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_HBWSPACE) + KOKKOSBLAS3_TRSM_ETI_SPEC_AVAIL(float, Kokkos::LayoutRight, Kokkos::Threads, Kokkos::Experimental::HBWSpace) +#endif + +#if defined (KOKKOSKERNELS_INST_FLOAT) \ + && defined (KOKKOSKERNELS_INST_LAYOUTRIGHT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_SERIAL) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_HBWSPACE) + KOKKOSBLAS3_TRSM_ETI_SPEC_AVAIL(float, Kokkos::LayoutRight, Kokkos::Serial, Kokkos::Experimental::HBWSpace) +#endif + +#if defined (KOKKOSKERNELS_INST_KOKKOS_COMPLEX_DOUBLE_) \ + && defined (KOKKOSKERNELS_INST_LAYOUTLEFT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_CUDA) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_CUDASPACE) + KOKKOSBLAS3_TRSM_ETI_SPEC_AVAIL(Kokkos::complex, Kokkos::LayoutLeft, Kokkos::Cuda, Kokkos::CudaSpace) +#endif + +#if defined (KOKKOSKERNELS_INST_KOKKOS_COMPLEX_DOUBLE_) \ + && defined (KOKKOSKERNELS_INST_LAYOUTLEFT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_CUDA) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_CUDAUVMSPACE) + KOKKOSBLAS3_TRSM_ETI_SPEC_AVAIL(Kokkos::complex, Kokkos::LayoutLeft, Kokkos::Cuda, Kokkos::CudaUVMSpace) +#endif + +#if defined (KOKKOSKERNELS_INST_KOKKOS_COMPLEX_DOUBLE_) \ + && defined (KOKKOSKERNELS_INST_LAYOUTLEFT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_OPENMP) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_HOSTSPACE) + KOKKOSBLAS3_TRSM_ETI_SPEC_AVAIL(Kokkos::complex, Kokkos::LayoutLeft, Kokkos::OpenMP, Kokkos::HostSpace) +#endif + +#if defined (KOKKOSKERNELS_INST_KOKKOS_COMPLEX_DOUBLE_) \ + && defined (KOKKOSKERNELS_INST_LAYOUTLEFT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_THREADS) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_HOSTSPACE) + KOKKOSBLAS3_TRSM_ETI_SPEC_AVAIL(Kokkos::complex, Kokkos::LayoutLeft, Kokkos::Threads, Kokkos::HostSpace) +#endif + +#if defined (KOKKOSKERNELS_INST_KOKKOS_COMPLEX_DOUBLE_) \ + && defined (KOKKOSKERNELS_INST_LAYOUTLEFT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_SERIAL) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_HOSTSPACE) + KOKKOSBLAS3_TRSM_ETI_SPEC_AVAIL(Kokkos::complex, Kokkos::LayoutLeft, Kokkos::Serial, Kokkos::HostSpace) +#endif + +#if defined (KOKKOSKERNELS_INST_KOKKOS_COMPLEX_DOUBLE_) \ + && defined (KOKKOSKERNELS_INST_LAYOUTLEFT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_OPENMP) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_HBWSPACE) + KOKKOSBLAS3_TRSM_ETI_SPEC_AVAIL(Kokkos::complex, Kokkos::LayoutLeft, Kokkos::OpenMP, Kokkos::Experimental::HBWSpace) +#endif + +#if defined (KOKKOSKERNELS_INST_KOKKOS_COMPLEX_DOUBLE_) \ + && defined (KOKKOSKERNELS_INST_LAYOUTLEFT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_THREADS) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_HBWSPACE) + KOKKOSBLAS3_TRSM_ETI_SPEC_AVAIL(Kokkos::complex, Kokkos::LayoutLeft, Kokkos::Threads, Kokkos::Experimental::HBWSpace) +#endif + +#if defined (KOKKOSKERNELS_INST_KOKKOS_COMPLEX_DOUBLE_) \ + && defined (KOKKOSKERNELS_INST_LAYOUTLEFT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_SERIAL) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_HBWSPACE) + KOKKOSBLAS3_TRSM_ETI_SPEC_AVAIL(Kokkos::complex, Kokkos::LayoutLeft, Kokkos::Serial, Kokkos::Experimental::HBWSpace) +#endif + +#if defined (KOKKOSKERNELS_INST_KOKKOS_COMPLEX_DOUBLE_) \ + && defined (KOKKOSKERNELS_INST_LAYOUTRIGHT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_CUDA) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_CUDASPACE) + KOKKOSBLAS3_TRSM_ETI_SPEC_AVAIL(Kokkos::complex, Kokkos::LayoutRight, Kokkos::Cuda, Kokkos::CudaSpace) +#endif + +#if defined (KOKKOSKERNELS_INST_KOKKOS_COMPLEX_DOUBLE_) \ + && defined (KOKKOSKERNELS_INST_LAYOUTRIGHT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_CUDA) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_CUDAUVMSPACE) + KOKKOSBLAS3_TRSM_ETI_SPEC_AVAIL(Kokkos::complex, Kokkos::LayoutRight, Kokkos::Cuda, Kokkos::CudaUVMSpace) +#endif + +#if defined (KOKKOSKERNELS_INST_KOKKOS_COMPLEX_DOUBLE_) \ + && defined (KOKKOSKERNELS_INST_LAYOUTRIGHT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_OPENMP) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_HOSTSPACE) + KOKKOSBLAS3_TRSM_ETI_SPEC_AVAIL(Kokkos::complex, Kokkos::LayoutRight, Kokkos::OpenMP, Kokkos::HostSpace) +#endif + +#if defined (KOKKOSKERNELS_INST_KOKKOS_COMPLEX_DOUBLE_) \ + && defined (KOKKOSKERNELS_INST_LAYOUTRIGHT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_THREADS) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_HOSTSPACE) + KOKKOSBLAS3_TRSM_ETI_SPEC_AVAIL(Kokkos::complex, Kokkos::LayoutRight, Kokkos::Threads, Kokkos::HostSpace) +#endif + +#if defined (KOKKOSKERNELS_INST_KOKKOS_COMPLEX_DOUBLE_) \ + && defined (KOKKOSKERNELS_INST_LAYOUTRIGHT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_SERIAL) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_HOSTSPACE) + KOKKOSBLAS3_TRSM_ETI_SPEC_AVAIL(Kokkos::complex, Kokkos::LayoutRight, Kokkos::Serial, Kokkos::HostSpace) +#endif + +#if defined (KOKKOSKERNELS_INST_KOKKOS_COMPLEX_DOUBLE_) \ + && defined (KOKKOSKERNELS_INST_LAYOUTRIGHT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_OPENMP) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_HBWSPACE) + KOKKOSBLAS3_TRSM_ETI_SPEC_AVAIL(Kokkos::complex, Kokkos::LayoutRight, Kokkos::OpenMP, Kokkos::Experimental::HBWSpace) +#endif + +#if defined (KOKKOSKERNELS_INST_KOKKOS_COMPLEX_DOUBLE_) \ + && defined (KOKKOSKERNELS_INST_LAYOUTRIGHT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_THREADS) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_HBWSPACE) + KOKKOSBLAS3_TRSM_ETI_SPEC_AVAIL(Kokkos::complex, Kokkos::LayoutRight, Kokkos::Threads, Kokkos::Experimental::HBWSpace) +#endif + +#if defined (KOKKOSKERNELS_INST_KOKKOS_COMPLEX_DOUBLE_) \ + && defined (KOKKOSKERNELS_INST_LAYOUTRIGHT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_SERIAL) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_HBWSPACE) + KOKKOSBLAS3_TRSM_ETI_SPEC_AVAIL(Kokkos::complex, Kokkos::LayoutRight, Kokkos::Serial, Kokkos::Experimental::HBWSpace) +#endif + +#if defined (KOKKOSKERNELS_INST_KOKKOS_COMPLEX_FLOAT_) \ + && defined (KOKKOSKERNELS_INST_LAYOUTLEFT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_CUDA) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_CUDASPACE) + KOKKOSBLAS3_TRSM_ETI_SPEC_AVAIL(Kokkos::complex, Kokkos::LayoutLeft, Kokkos::Cuda, Kokkos::CudaSpace) +#endif + +#if defined (KOKKOSKERNELS_INST_KOKKOS_COMPLEX_FLOAT_) \ + && defined (KOKKOSKERNELS_INST_LAYOUTLEFT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_CUDA) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_CUDAUVMSPACE) + KOKKOSBLAS3_TRSM_ETI_SPEC_AVAIL(Kokkos::complex, Kokkos::LayoutLeft, Kokkos::Cuda, Kokkos::CudaUVMSpace) +#endif + +#if defined (KOKKOSKERNELS_INST_KOKKOS_COMPLEX_FLOAT_) \ + && defined (KOKKOSKERNELS_INST_LAYOUTLEFT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_OPENMP) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_HOSTSPACE) + KOKKOSBLAS3_TRSM_ETI_SPEC_AVAIL(Kokkos::complex, Kokkos::LayoutLeft, Kokkos::OpenMP, Kokkos::HostSpace) +#endif + +#if defined (KOKKOSKERNELS_INST_KOKKOS_COMPLEX_FLOAT_) \ + && defined (KOKKOSKERNELS_INST_LAYOUTLEFT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_THREADS) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_HOSTSPACE) + KOKKOSBLAS3_TRSM_ETI_SPEC_AVAIL(Kokkos::complex, Kokkos::LayoutLeft, Kokkos::Threads, Kokkos::HostSpace) +#endif + +#if defined (KOKKOSKERNELS_INST_KOKKOS_COMPLEX_FLOAT_) \ + && defined (KOKKOSKERNELS_INST_LAYOUTLEFT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_SERIAL) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_HOSTSPACE) + KOKKOSBLAS3_TRSM_ETI_SPEC_AVAIL(Kokkos::complex, Kokkos::LayoutLeft, Kokkos::Serial, Kokkos::HostSpace) +#endif + +#if defined (KOKKOSKERNELS_INST_KOKKOS_COMPLEX_FLOAT_) \ + && defined (KOKKOSKERNELS_INST_LAYOUTLEFT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_OPENMP) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_HBWSPACE) + KOKKOSBLAS3_TRSM_ETI_SPEC_AVAIL(Kokkos::complex, Kokkos::LayoutLeft, Kokkos::OpenMP, Kokkos::Experimental::HBWSpace) +#endif + +#if defined (KOKKOSKERNELS_INST_KOKKOS_COMPLEX_FLOAT_) \ + && defined (KOKKOSKERNELS_INST_LAYOUTLEFT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_THREADS) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_HBWSPACE) + KOKKOSBLAS3_TRSM_ETI_SPEC_AVAIL(Kokkos::complex, Kokkos::LayoutLeft, Kokkos::Threads, Kokkos::Experimental::HBWSpace) +#endif + +#if defined (KOKKOSKERNELS_INST_KOKKOS_COMPLEX_FLOAT_) \ + && defined (KOKKOSKERNELS_INST_LAYOUTLEFT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_SERIAL) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_HBWSPACE) + KOKKOSBLAS3_TRSM_ETI_SPEC_AVAIL(Kokkos::complex, Kokkos::LayoutLeft, Kokkos::Serial, Kokkos::Experimental::HBWSpace) +#endif + +#if defined (KOKKOSKERNELS_INST_KOKKOS_COMPLEX_FLOAT_) \ + && defined (KOKKOSKERNELS_INST_LAYOUTRIGHT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_CUDA) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_CUDASPACE) + KOKKOSBLAS3_TRSM_ETI_SPEC_AVAIL(Kokkos::complex, Kokkos::LayoutRight, Kokkos::Cuda, Kokkos::CudaSpace) +#endif + +#if defined (KOKKOSKERNELS_INST_KOKKOS_COMPLEX_FLOAT_) \ + && defined (KOKKOSKERNELS_INST_LAYOUTRIGHT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_CUDA) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_CUDAUVMSPACE) + KOKKOSBLAS3_TRSM_ETI_SPEC_AVAIL(Kokkos::complex, Kokkos::LayoutRight, Kokkos::Cuda, Kokkos::CudaUVMSpace) +#endif + +#if defined (KOKKOSKERNELS_INST_KOKKOS_COMPLEX_FLOAT_) \ + && defined (KOKKOSKERNELS_INST_LAYOUTRIGHT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_OPENMP) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_HOSTSPACE) + KOKKOSBLAS3_TRSM_ETI_SPEC_AVAIL(Kokkos::complex, Kokkos::LayoutRight, Kokkos::OpenMP, Kokkos::HostSpace) +#endif + +#if defined (KOKKOSKERNELS_INST_KOKKOS_COMPLEX_FLOAT_) \ + && defined (KOKKOSKERNELS_INST_LAYOUTRIGHT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_THREADS) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_HOSTSPACE) + KOKKOSBLAS3_TRSM_ETI_SPEC_AVAIL(Kokkos::complex, Kokkos::LayoutRight, Kokkos::Threads, Kokkos::HostSpace) +#endif + +#if defined (KOKKOSKERNELS_INST_KOKKOS_COMPLEX_FLOAT_) \ + && defined (KOKKOSKERNELS_INST_LAYOUTRIGHT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_SERIAL) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_HOSTSPACE) + KOKKOSBLAS3_TRSM_ETI_SPEC_AVAIL(Kokkos::complex, Kokkos::LayoutRight, Kokkos::Serial, Kokkos::HostSpace) +#endif + +#if defined (KOKKOSKERNELS_INST_KOKKOS_COMPLEX_FLOAT_) \ + && defined (KOKKOSKERNELS_INST_LAYOUTRIGHT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_OPENMP) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_HBWSPACE) + KOKKOSBLAS3_TRSM_ETI_SPEC_AVAIL(Kokkos::complex, Kokkos::LayoutRight, Kokkos::OpenMP, Kokkos::Experimental::HBWSpace) +#endif + +#if defined (KOKKOSKERNELS_INST_KOKKOS_COMPLEX_FLOAT_) \ + && defined (KOKKOSKERNELS_INST_LAYOUTRIGHT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_THREADS) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_HBWSPACE) + KOKKOSBLAS3_TRSM_ETI_SPEC_AVAIL(Kokkos::complex, Kokkos::LayoutRight, Kokkos::Threads, Kokkos::Experimental::HBWSpace) +#endif + +#if defined (KOKKOSKERNELS_INST_KOKKOS_COMPLEX_FLOAT_) \ + && defined (KOKKOSKERNELS_INST_LAYOUTRIGHT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_SERIAL) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_HBWSPACE) + KOKKOSBLAS3_TRSM_ETI_SPEC_AVAIL(Kokkos::complex, Kokkos::LayoutRight, Kokkos::Serial, Kokkos::Experimental::HBWSpace) +#endif +} // Impl +} // KokkosBlas +#endif // KOKKOSBLAS3_TRSM_ETI_SPEC_AVAIL_HPP_ diff --git a/src/impl/generated_specializations_hpp/KokkosBlas3_trsm_eti_spec_decl.hpp b/src/impl/generated_specializations_hpp/KokkosBlas3_trsm_eti_spec_decl.hpp new file mode 100644 index 0000000000..b509d1d39b --- /dev/null +++ b/src/impl/generated_specializations_hpp/KokkosBlas3_trsm_eti_spec_decl.hpp @@ -0,0 +1,498 @@ +#ifndef KOKKOSBLAS3_TRSM_ETI_SPEC_DECL_HPP_ +#define KOKKOSBLAS3_TRSM_ETI_SPEC_DECL_HPP_ +/* +//@HEADER +// ************************************************************************ +// +// KokkosKernels 0.9: Linear Algebra and Graph Kernels +// Copyright 2017 Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Siva Rajamanickam (srajama@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +namespace KokkosBlas { +namespace Impl { + +#if defined (KOKKOSKERNELS_INST_DOUBLE) \ + && defined (KOKKOSKERNELS_INST_LAYOUTLEFT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_CUDA) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_CUDASPACE) + KOKKOSBLAS3_TRSM_ETI_SPEC_DECL(double, Kokkos::LayoutLeft, Kokkos::Cuda, Kokkos::CudaSpace) +#endif + +#if defined (KOKKOSKERNELS_INST_DOUBLE) \ + && defined (KOKKOSKERNELS_INST_LAYOUTLEFT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_CUDA) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_CUDAUVMSPACE) + KOKKOSBLAS3_TRSM_ETI_SPEC_DECL(double, Kokkos::LayoutLeft, Kokkos::Cuda, Kokkos::CudaUVMSpace) +#endif + +#if defined (KOKKOSKERNELS_INST_DOUBLE) \ + && defined (KOKKOSKERNELS_INST_LAYOUTLEFT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_OPENMP) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_HOSTSPACE) + KOKKOSBLAS3_TRSM_ETI_SPEC_DECL(double, Kokkos::LayoutLeft, Kokkos::OpenMP, Kokkos::HostSpace) +#endif + +#if defined (KOKKOSKERNELS_INST_DOUBLE) \ + && defined (KOKKOSKERNELS_INST_LAYOUTLEFT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_THREADS) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_HOSTSPACE) + KOKKOSBLAS3_TRSM_ETI_SPEC_DECL(double, Kokkos::LayoutLeft, Kokkos::Threads, Kokkos::HostSpace) +#endif + +#if defined (KOKKOSKERNELS_INST_DOUBLE) \ + && defined (KOKKOSKERNELS_INST_LAYOUTLEFT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_SERIAL) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_HOSTSPACE) + KOKKOSBLAS3_TRSM_ETI_SPEC_DECL(double, Kokkos::LayoutLeft, Kokkos::Serial, Kokkos::HostSpace) +#endif + +#if defined (KOKKOSKERNELS_INST_DOUBLE) \ + && defined (KOKKOSKERNELS_INST_LAYOUTLEFT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_OPENMP) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_HBWSPACE) + KOKKOSBLAS3_TRSM_ETI_SPEC_DECL(double, Kokkos::LayoutLeft, Kokkos::OpenMP, Kokkos::Experimental::HBWSpace) +#endif + +#if defined (KOKKOSKERNELS_INST_DOUBLE) \ + && defined (KOKKOSKERNELS_INST_LAYOUTLEFT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_THREADS) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_HBWSPACE) + KOKKOSBLAS3_TRSM_ETI_SPEC_DECL(double, Kokkos::LayoutLeft, Kokkos::Threads, Kokkos::Experimental::HBWSpace) +#endif + +#if defined (KOKKOSKERNELS_INST_DOUBLE) \ + && defined (KOKKOSKERNELS_INST_LAYOUTLEFT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_SERIAL) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_HBWSPACE) + KOKKOSBLAS3_TRSM_ETI_SPEC_DECL(double, Kokkos::LayoutLeft, Kokkos::Serial, Kokkos::Experimental::HBWSpace) +#endif + +#if defined (KOKKOSKERNELS_INST_DOUBLE) \ + && defined (KOKKOSKERNELS_INST_LAYOUTRIGHT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_CUDA) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_CUDASPACE) + KOKKOSBLAS3_TRSM_ETI_SPEC_DECL(double, Kokkos::LayoutRight, Kokkos::Cuda, Kokkos::CudaSpace) +#endif + +#if defined (KOKKOSKERNELS_INST_DOUBLE) \ + && defined (KOKKOSKERNELS_INST_LAYOUTRIGHT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_CUDA) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_CUDAUVMSPACE) + KOKKOSBLAS3_TRSM_ETI_SPEC_DECL(double, Kokkos::LayoutRight, Kokkos::Cuda, Kokkos::CudaUVMSpace) +#endif + +#if defined (KOKKOSKERNELS_INST_DOUBLE) \ + && defined (KOKKOSKERNELS_INST_LAYOUTRIGHT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_OPENMP) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_HOSTSPACE) + KOKKOSBLAS3_TRSM_ETI_SPEC_DECL(double, Kokkos::LayoutRight, Kokkos::OpenMP, Kokkos::HostSpace) +#endif + +#if defined (KOKKOSKERNELS_INST_DOUBLE) \ + && defined (KOKKOSKERNELS_INST_LAYOUTRIGHT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_THREADS) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_HOSTSPACE) + KOKKOSBLAS3_TRSM_ETI_SPEC_DECL(double, Kokkos::LayoutRight, Kokkos::Threads, Kokkos::HostSpace) +#endif + +#if defined (KOKKOSKERNELS_INST_DOUBLE) \ + && defined (KOKKOSKERNELS_INST_LAYOUTRIGHT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_SERIAL) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_HOSTSPACE) + KOKKOSBLAS3_TRSM_ETI_SPEC_DECL(double, Kokkos::LayoutRight, Kokkos::Serial, Kokkos::HostSpace) +#endif + +#if defined (KOKKOSKERNELS_INST_DOUBLE) \ + && defined (KOKKOSKERNELS_INST_LAYOUTRIGHT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_OPENMP) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_HBWSPACE) + KOKKOSBLAS3_TRSM_ETI_SPEC_DECL(double, Kokkos::LayoutRight, Kokkos::OpenMP, Kokkos::Experimental::HBWSpace) +#endif + +#if defined (KOKKOSKERNELS_INST_DOUBLE) \ + && defined (KOKKOSKERNELS_INST_LAYOUTRIGHT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_THREADS) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_HBWSPACE) + KOKKOSBLAS3_TRSM_ETI_SPEC_DECL(double, Kokkos::LayoutRight, Kokkos::Threads, Kokkos::Experimental::HBWSpace) +#endif + +#if defined (KOKKOSKERNELS_INST_DOUBLE) \ + && defined (KOKKOSKERNELS_INST_LAYOUTRIGHT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_SERIAL) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_HBWSPACE) + KOKKOSBLAS3_TRSM_ETI_SPEC_DECL(double, Kokkos::LayoutRight, Kokkos::Serial, Kokkos::Experimental::HBWSpace) +#endif + +#if defined (KOKKOSKERNELS_INST_FLOAT) \ + && defined (KOKKOSKERNELS_INST_LAYOUTLEFT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_CUDA) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_CUDASPACE) + KOKKOSBLAS3_TRSM_ETI_SPEC_DECL(float, Kokkos::LayoutLeft, Kokkos::Cuda, Kokkos::CudaSpace) +#endif + +#if defined (KOKKOSKERNELS_INST_FLOAT) \ + && defined (KOKKOSKERNELS_INST_LAYOUTLEFT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_CUDA) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_CUDAUVMSPACE) + KOKKOSBLAS3_TRSM_ETI_SPEC_DECL(float, Kokkos::LayoutLeft, Kokkos::Cuda, Kokkos::CudaUVMSpace) +#endif + +#if defined (KOKKOSKERNELS_INST_FLOAT) \ + && defined (KOKKOSKERNELS_INST_LAYOUTLEFT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_OPENMP) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_HOSTSPACE) + KOKKOSBLAS3_TRSM_ETI_SPEC_DECL(float, Kokkos::LayoutLeft, Kokkos::OpenMP, Kokkos::HostSpace) +#endif + +#if defined (KOKKOSKERNELS_INST_FLOAT) \ + && defined (KOKKOSKERNELS_INST_LAYOUTLEFT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_THREADS) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_HOSTSPACE) + KOKKOSBLAS3_TRSM_ETI_SPEC_DECL(float, Kokkos::LayoutLeft, Kokkos::Threads, Kokkos::HostSpace) +#endif + +#if defined (KOKKOSKERNELS_INST_FLOAT) \ + && defined (KOKKOSKERNELS_INST_LAYOUTLEFT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_SERIAL) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_HOSTSPACE) + KOKKOSBLAS3_TRSM_ETI_SPEC_DECL(float, Kokkos::LayoutLeft, Kokkos::Serial, Kokkos::HostSpace) +#endif + +#if defined (KOKKOSKERNELS_INST_FLOAT) \ + && defined (KOKKOSKERNELS_INST_LAYOUTLEFT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_OPENMP) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_HBWSPACE) + KOKKOSBLAS3_TRSM_ETI_SPEC_DECL(float, Kokkos::LayoutLeft, Kokkos::OpenMP, Kokkos::Experimental::HBWSpace) +#endif + +#if defined (KOKKOSKERNELS_INST_FLOAT) \ + && defined (KOKKOSKERNELS_INST_LAYOUTLEFT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_THREADS) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_HBWSPACE) + KOKKOSBLAS3_TRSM_ETI_SPEC_DECL(float, Kokkos::LayoutLeft, Kokkos::Threads, Kokkos::Experimental::HBWSpace) +#endif + +#if defined (KOKKOSKERNELS_INST_FLOAT) \ + && defined (KOKKOSKERNELS_INST_LAYOUTLEFT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_SERIAL) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_HBWSPACE) + KOKKOSBLAS3_TRSM_ETI_SPEC_DECL(float, Kokkos::LayoutLeft, Kokkos::Serial, Kokkos::Experimental::HBWSpace) +#endif + +#if defined (KOKKOSKERNELS_INST_FLOAT) \ + && defined (KOKKOSKERNELS_INST_LAYOUTRIGHT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_CUDA) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_CUDASPACE) + KOKKOSBLAS3_TRSM_ETI_SPEC_DECL(float, Kokkos::LayoutRight, Kokkos::Cuda, Kokkos::CudaSpace) +#endif + +#if defined (KOKKOSKERNELS_INST_FLOAT) \ + && defined (KOKKOSKERNELS_INST_LAYOUTRIGHT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_CUDA) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_CUDAUVMSPACE) + KOKKOSBLAS3_TRSM_ETI_SPEC_DECL(float, Kokkos::LayoutRight, Kokkos::Cuda, Kokkos::CudaUVMSpace) +#endif + +#if defined (KOKKOSKERNELS_INST_FLOAT) \ + && defined (KOKKOSKERNELS_INST_LAYOUTRIGHT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_OPENMP) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_HOSTSPACE) + KOKKOSBLAS3_TRSM_ETI_SPEC_DECL(float, Kokkos::LayoutRight, Kokkos::OpenMP, Kokkos::HostSpace) +#endif + +#if defined (KOKKOSKERNELS_INST_FLOAT) \ + && defined (KOKKOSKERNELS_INST_LAYOUTRIGHT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_THREADS) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_HOSTSPACE) + KOKKOSBLAS3_TRSM_ETI_SPEC_DECL(float, Kokkos::LayoutRight, Kokkos::Threads, Kokkos::HostSpace) +#endif + +#if defined (KOKKOSKERNELS_INST_FLOAT) \ + && defined (KOKKOSKERNELS_INST_LAYOUTRIGHT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_SERIAL) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_HOSTSPACE) + KOKKOSBLAS3_TRSM_ETI_SPEC_DECL(float, Kokkos::LayoutRight, Kokkos::Serial, Kokkos::HostSpace) +#endif + +#if defined (KOKKOSKERNELS_INST_FLOAT) \ + && defined (KOKKOSKERNELS_INST_LAYOUTRIGHT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_OPENMP) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_HBWSPACE) + KOKKOSBLAS3_TRSM_ETI_SPEC_DECL(float, Kokkos::LayoutRight, Kokkos::OpenMP, Kokkos::Experimental::HBWSpace) +#endif + +#if defined (KOKKOSKERNELS_INST_FLOAT) \ + && defined (KOKKOSKERNELS_INST_LAYOUTRIGHT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_THREADS) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_HBWSPACE) + KOKKOSBLAS3_TRSM_ETI_SPEC_DECL(float, Kokkos::LayoutRight, Kokkos::Threads, Kokkos::Experimental::HBWSpace) +#endif + +#if defined (KOKKOSKERNELS_INST_FLOAT) \ + && defined (KOKKOSKERNELS_INST_LAYOUTRIGHT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_SERIAL) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_HBWSPACE) + KOKKOSBLAS3_TRSM_ETI_SPEC_DECL(float, Kokkos::LayoutRight, Kokkos::Serial, Kokkos::Experimental::HBWSpace) +#endif + +#if defined (KOKKOSKERNELS_INST_KOKKOS_COMPLEX_DOUBLE_) \ + && defined (KOKKOSKERNELS_INST_LAYOUTLEFT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_CUDA) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_CUDASPACE) + KOKKOSBLAS3_TRSM_ETI_SPEC_DECL(Kokkos::complex, Kokkos::LayoutLeft, Kokkos::Cuda, Kokkos::CudaSpace) +#endif + +#if defined (KOKKOSKERNELS_INST_KOKKOS_COMPLEX_DOUBLE_) \ + && defined (KOKKOSKERNELS_INST_LAYOUTLEFT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_CUDA) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_CUDAUVMSPACE) + KOKKOSBLAS3_TRSM_ETI_SPEC_DECL(Kokkos::complex, Kokkos::LayoutLeft, Kokkos::Cuda, Kokkos::CudaUVMSpace) +#endif + +#if defined (KOKKOSKERNELS_INST_KOKKOS_COMPLEX_DOUBLE_) \ + && defined (KOKKOSKERNELS_INST_LAYOUTLEFT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_OPENMP) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_HOSTSPACE) + KOKKOSBLAS3_TRSM_ETI_SPEC_DECL(Kokkos::complex, Kokkos::LayoutLeft, Kokkos::OpenMP, Kokkos::HostSpace) +#endif + +#if defined (KOKKOSKERNELS_INST_KOKKOS_COMPLEX_DOUBLE_) \ + && defined (KOKKOSKERNELS_INST_LAYOUTLEFT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_THREADS) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_HOSTSPACE) + KOKKOSBLAS3_TRSM_ETI_SPEC_DECL(Kokkos::complex, Kokkos::LayoutLeft, Kokkos::Threads, Kokkos::HostSpace) +#endif + +#if defined (KOKKOSKERNELS_INST_KOKKOS_COMPLEX_DOUBLE_) \ + && defined (KOKKOSKERNELS_INST_LAYOUTLEFT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_SERIAL) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_HOSTSPACE) + KOKKOSBLAS3_TRSM_ETI_SPEC_DECL(Kokkos::complex, Kokkos::LayoutLeft, Kokkos::Serial, Kokkos::HostSpace) +#endif + +#if defined (KOKKOSKERNELS_INST_KOKKOS_COMPLEX_DOUBLE_) \ + && defined (KOKKOSKERNELS_INST_LAYOUTLEFT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_OPENMP) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_HBWSPACE) + KOKKOSBLAS3_TRSM_ETI_SPEC_DECL(Kokkos::complex, Kokkos::LayoutLeft, Kokkos::OpenMP, Kokkos::Experimental::HBWSpace) +#endif + +#if defined (KOKKOSKERNELS_INST_KOKKOS_COMPLEX_DOUBLE_) \ + && defined (KOKKOSKERNELS_INST_LAYOUTLEFT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_THREADS) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_HBWSPACE) + KOKKOSBLAS3_TRSM_ETI_SPEC_DECL(Kokkos::complex, Kokkos::LayoutLeft, Kokkos::Threads, Kokkos::Experimental::HBWSpace) +#endif + +#if defined (KOKKOSKERNELS_INST_KOKKOS_COMPLEX_DOUBLE_) \ + && defined (KOKKOSKERNELS_INST_LAYOUTLEFT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_SERIAL) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_HBWSPACE) + KOKKOSBLAS3_TRSM_ETI_SPEC_DECL(Kokkos::complex, Kokkos::LayoutLeft, Kokkos::Serial, Kokkos::Experimental::HBWSpace) +#endif + +#if defined (KOKKOSKERNELS_INST_KOKKOS_COMPLEX_DOUBLE_) \ + && defined (KOKKOSKERNELS_INST_LAYOUTRIGHT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_CUDA) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_CUDASPACE) + KOKKOSBLAS3_TRSM_ETI_SPEC_DECL(Kokkos::complex, Kokkos::LayoutRight, Kokkos::Cuda, Kokkos::CudaSpace) +#endif + +#if defined (KOKKOSKERNELS_INST_KOKKOS_COMPLEX_DOUBLE_) \ + && defined (KOKKOSKERNELS_INST_LAYOUTRIGHT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_CUDA) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_CUDAUVMSPACE) + KOKKOSBLAS3_TRSM_ETI_SPEC_DECL(Kokkos::complex, Kokkos::LayoutRight, Kokkos::Cuda, Kokkos::CudaUVMSpace) +#endif + +#if defined (KOKKOSKERNELS_INST_KOKKOS_COMPLEX_DOUBLE_) \ + && defined (KOKKOSKERNELS_INST_LAYOUTRIGHT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_OPENMP) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_HOSTSPACE) + KOKKOSBLAS3_TRSM_ETI_SPEC_DECL(Kokkos::complex, Kokkos::LayoutRight, Kokkos::OpenMP, Kokkos::HostSpace) +#endif + +#if defined (KOKKOSKERNELS_INST_KOKKOS_COMPLEX_DOUBLE_) \ + && defined (KOKKOSKERNELS_INST_LAYOUTRIGHT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_THREADS) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_HOSTSPACE) + KOKKOSBLAS3_TRSM_ETI_SPEC_DECL(Kokkos::complex, Kokkos::LayoutRight, Kokkos::Threads, Kokkos::HostSpace) +#endif + +#if defined (KOKKOSKERNELS_INST_KOKKOS_COMPLEX_DOUBLE_) \ + && defined (KOKKOSKERNELS_INST_LAYOUTRIGHT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_SERIAL) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_HOSTSPACE) + KOKKOSBLAS3_TRSM_ETI_SPEC_DECL(Kokkos::complex, Kokkos::LayoutRight, Kokkos::Serial, Kokkos::HostSpace) +#endif + +#if defined (KOKKOSKERNELS_INST_KOKKOS_COMPLEX_DOUBLE_) \ + && defined (KOKKOSKERNELS_INST_LAYOUTRIGHT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_OPENMP) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_HBWSPACE) + KOKKOSBLAS3_TRSM_ETI_SPEC_DECL(Kokkos::complex, Kokkos::LayoutRight, Kokkos::OpenMP, Kokkos::Experimental::HBWSpace) +#endif + +#if defined (KOKKOSKERNELS_INST_KOKKOS_COMPLEX_DOUBLE_) \ + && defined (KOKKOSKERNELS_INST_LAYOUTRIGHT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_THREADS) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_HBWSPACE) + KOKKOSBLAS3_TRSM_ETI_SPEC_DECL(Kokkos::complex, Kokkos::LayoutRight, Kokkos::Threads, Kokkos::Experimental::HBWSpace) +#endif + +#if defined (KOKKOSKERNELS_INST_KOKKOS_COMPLEX_DOUBLE_) \ + && defined (KOKKOSKERNELS_INST_LAYOUTRIGHT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_SERIAL) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_HBWSPACE) + KOKKOSBLAS3_TRSM_ETI_SPEC_DECL(Kokkos::complex, Kokkos::LayoutRight, Kokkos::Serial, Kokkos::Experimental::HBWSpace) +#endif + +#if defined (KOKKOSKERNELS_INST_KOKKOS_COMPLEX_FLOAT_) \ + && defined (KOKKOSKERNELS_INST_LAYOUTLEFT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_CUDA) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_CUDASPACE) + KOKKOSBLAS3_TRSM_ETI_SPEC_DECL(Kokkos::complex, Kokkos::LayoutLeft, Kokkos::Cuda, Kokkos::CudaSpace) +#endif + +#if defined (KOKKOSKERNELS_INST_KOKKOS_COMPLEX_FLOAT_) \ + && defined (KOKKOSKERNELS_INST_LAYOUTLEFT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_CUDA) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_CUDAUVMSPACE) + KOKKOSBLAS3_TRSM_ETI_SPEC_DECL(Kokkos::complex, Kokkos::LayoutLeft, Kokkos::Cuda, Kokkos::CudaUVMSpace) +#endif + +#if defined (KOKKOSKERNELS_INST_KOKKOS_COMPLEX_FLOAT_) \ + && defined (KOKKOSKERNELS_INST_LAYOUTLEFT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_OPENMP) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_HOSTSPACE) + KOKKOSBLAS3_TRSM_ETI_SPEC_DECL(Kokkos::complex, Kokkos::LayoutLeft, Kokkos::OpenMP, Kokkos::HostSpace) +#endif + +#if defined (KOKKOSKERNELS_INST_KOKKOS_COMPLEX_FLOAT_) \ + && defined (KOKKOSKERNELS_INST_LAYOUTLEFT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_THREADS) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_HOSTSPACE) + KOKKOSBLAS3_TRSM_ETI_SPEC_DECL(Kokkos::complex, Kokkos::LayoutLeft, Kokkos::Threads, Kokkos::HostSpace) +#endif + +#if defined (KOKKOSKERNELS_INST_KOKKOS_COMPLEX_FLOAT_) \ + && defined (KOKKOSKERNELS_INST_LAYOUTLEFT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_SERIAL) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_HOSTSPACE) + KOKKOSBLAS3_TRSM_ETI_SPEC_DECL(Kokkos::complex, Kokkos::LayoutLeft, Kokkos::Serial, Kokkos::HostSpace) +#endif + +#if defined (KOKKOSKERNELS_INST_KOKKOS_COMPLEX_FLOAT_) \ + && defined (KOKKOSKERNELS_INST_LAYOUTLEFT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_OPENMP) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_HBWSPACE) + KOKKOSBLAS3_TRSM_ETI_SPEC_DECL(Kokkos::complex, Kokkos::LayoutLeft, Kokkos::OpenMP, Kokkos::Experimental::HBWSpace) +#endif + +#if defined (KOKKOSKERNELS_INST_KOKKOS_COMPLEX_FLOAT_) \ + && defined (KOKKOSKERNELS_INST_LAYOUTLEFT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_THREADS) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_HBWSPACE) + KOKKOSBLAS3_TRSM_ETI_SPEC_DECL(Kokkos::complex, Kokkos::LayoutLeft, Kokkos::Threads, Kokkos::Experimental::HBWSpace) +#endif + +#if defined (KOKKOSKERNELS_INST_KOKKOS_COMPLEX_FLOAT_) \ + && defined (KOKKOSKERNELS_INST_LAYOUTLEFT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_SERIAL) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_HBWSPACE) + KOKKOSBLAS3_TRSM_ETI_SPEC_DECL(Kokkos::complex, Kokkos::LayoutLeft, Kokkos::Serial, Kokkos::Experimental::HBWSpace) +#endif + +#if defined (KOKKOSKERNELS_INST_KOKKOS_COMPLEX_FLOAT_) \ + && defined (KOKKOSKERNELS_INST_LAYOUTRIGHT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_CUDA) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_CUDASPACE) + KOKKOSBLAS3_TRSM_ETI_SPEC_DECL(Kokkos::complex, Kokkos::LayoutRight, Kokkos::Cuda, Kokkos::CudaSpace) +#endif + +#if defined (KOKKOSKERNELS_INST_KOKKOS_COMPLEX_FLOAT_) \ + && defined (KOKKOSKERNELS_INST_LAYOUTRIGHT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_CUDA) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_CUDAUVMSPACE) + KOKKOSBLAS3_TRSM_ETI_SPEC_DECL(Kokkos::complex, Kokkos::LayoutRight, Kokkos::Cuda, Kokkos::CudaUVMSpace) +#endif + +#if defined (KOKKOSKERNELS_INST_KOKKOS_COMPLEX_FLOAT_) \ + && defined (KOKKOSKERNELS_INST_LAYOUTRIGHT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_OPENMP) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_HOSTSPACE) + KOKKOSBLAS3_TRSM_ETI_SPEC_DECL(Kokkos::complex, Kokkos::LayoutRight, Kokkos::OpenMP, Kokkos::HostSpace) +#endif + +#if defined (KOKKOSKERNELS_INST_KOKKOS_COMPLEX_FLOAT_) \ + && defined (KOKKOSKERNELS_INST_LAYOUTRIGHT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_THREADS) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_HOSTSPACE) + KOKKOSBLAS3_TRSM_ETI_SPEC_DECL(Kokkos::complex, Kokkos::LayoutRight, Kokkos::Threads, Kokkos::HostSpace) +#endif + +#if defined (KOKKOSKERNELS_INST_KOKKOS_COMPLEX_FLOAT_) \ + && defined (KOKKOSKERNELS_INST_LAYOUTRIGHT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_SERIAL) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_HOSTSPACE) + KOKKOSBLAS3_TRSM_ETI_SPEC_DECL(Kokkos::complex, Kokkos::LayoutRight, Kokkos::Serial, Kokkos::HostSpace) +#endif + +#if defined (KOKKOSKERNELS_INST_KOKKOS_COMPLEX_FLOAT_) \ + && defined (KOKKOSKERNELS_INST_LAYOUTRIGHT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_OPENMP) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_HBWSPACE) + KOKKOSBLAS3_TRSM_ETI_SPEC_DECL(Kokkos::complex, Kokkos::LayoutRight, Kokkos::OpenMP, Kokkos::Experimental::HBWSpace) +#endif + +#if defined (KOKKOSKERNELS_INST_KOKKOS_COMPLEX_FLOAT_) \ + && defined (KOKKOSKERNELS_INST_LAYOUTRIGHT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_THREADS) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_HBWSPACE) + KOKKOSBLAS3_TRSM_ETI_SPEC_DECL(Kokkos::complex, Kokkos::LayoutRight, Kokkos::Threads, Kokkos::Experimental::HBWSpace) +#endif + +#if defined (KOKKOSKERNELS_INST_KOKKOS_COMPLEX_FLOAT_) \ + && defined (KOKKOSKERNELS_INST_LAYOUTRIGHT) \ + && defined (KOKKOSKERNELS_INST_EXECSPACE_SERIAL) \ + && defined (KOKKOSKERNELS_INST_MEMSPACE_HBWSPACE) + KOKKOSBLAS3_TRSM_ETI_SPEC_DECL(Kokkos::complex, Kokkos::LayoutRight, Kokkos::Serial, Kokkos::Experimental::HBWSpace) +#endif +} // Impl +} // KokkosBlas +#endif // KOKKOSBLAS3_TRSM_ETI_SPEC_DECL_HPP_