From a77afc8cf98095effb9c36d3507a7b8451c8861c Mon Sep 17 00:00:00 2001 From: Nathan Ellingwood Date: Wed, 22 Nov 2023 13:44:47 -0700 Subject: [PATCH] lapack magma tpl fixes Fixes for 4.2.00 See issue #2042 --- lapack/CMakeLists.txt | 2 +- lapack/tpls/KokkosLapack_Cuda_tpl.hpp | 25 +------------ .../tpls/KokkosLapack_gesv_tpl_spec_decl.hpp | 2 +- lapack/tpls/KokkosLapack_magma.hpp | 35 +++++++++++++++++++ .../tpls/KokkosLapack_trtri_tpl_spec_decl.hpp | 4 ++- 5 files changed, 41 insertions(+), 27 deletions(-) create mode 100644 lapack/tpls/KokkosLapack_magma.hpp diff --git a/lapack/CMakeLists.txt b/lapack/CMakeLists.txt index 8ab784a325..7c0c3183bd 100644 --- a/lapack/CMakeLists.txt +++ b/lapack/CMakeLists.txt @@ -28,7 +28,7 @@ IF (KOKKOSKERNELS_ENABLE_TPL_LAPACK OR KOKKOSKERNELS_ENABLE_TPL_MKL OR KOKKOSKER ENDIF() # Include cuda lapack TPL source file -IF (KOKKOSKERNELS_ENABLE_TPL_CUSOLVER) +IF (KOKKOSKERNELS_ENABLE_TPL_MAGMA) LIST(APPEND SOURCES lapack/tpls/KokkosLapack_Cuda_tpl.cpp ) diff --git a/lapack/tpls/KokkosLapack_Cuda_tpl.hpp b/lapack/tpls/KokkosLapack_Cuda_tpl.hpp index b59d6d99c8..2ce9f69954 100644 --- a/lapack/tpls/KokkosLapack_Cuda_tpl.hpp +++ b/lapack/tpls/KokkosLapack_Cuda_tpl.hpp @@ -16,31 +16,8 @@ #ifndef KOKKOSLAPACK_CUDA_TPL_HPP_ #define KOKKOSLAPACK_CUDA_TPL_HPP_ -#if defined(KOKKOSKERNELS_ENABLE_TPL_CUSOLVER) -#include - -namespace KokkosLapack { -namespace Impl { - -CudaLapackSingleton::CudaLapackSingleton() { - cusolverStatus_t stat = cusolverDnCreate(&handle); - if (stat != CUSOLVER_STATUS_SUCCESS) - Kokkos::abort("CUSOLVER initialization failed\n"); - - Kokkos::push_finalize_hook([&]() { cusolverDnDestroy(handle); }); -} - -CudaLapackSingleton& CudaLapackSingleton::singleton() { - static CudaLapackSingleton s; - return s; -} - -} // namespace Impl -} // namespace KokkosLapack -#endif // defined (KOKKOSKERNELS_ENABLE_TPL_CUSOLVER) - #if defined(KOKKOSKERNELS_ENABLE_TPL_MAGMA) -#include +#include namespace KokkosLapack { namespace Impl { diff --git a/lapack/tpls/KokkosLapack_gesv_tpl_spec_decl.hpp b/lapack/tpls/KokkosLapack_gesv_tpl_spec_decl.hpp index 2baa76a132..5846e177d6 100644 --- a/lapack/tpls/KokkosLapack_gesv_tpl_spec_decl.hpp +++ b/lapack/tpls/KokkosLapack_gesv_tpl_spec_decl.hpp @@ -275,7 +275,7 @@ KOKKOSLAPACK_CGESV_LAPACK(Kokkos::LayoutLeft, Kokkos::HostSpace, false) // MAGMA #ifdef KOKKOSKERNELS_ENABLE_TPL_MAGMA -#include +#include namespace KokkosLapack { namespace Impl { diff --git a/lapack/tpls/KokkosLapack_magma.hpp b/lapack/tpls/KokkosLapack_magma.hpp new file mode 100644 index 0000000000..c5f9df6cdc --- /dev/null +++ b/lapack/tpls/KokkosLapack_magma.hpp @@ -0,0 +1,35 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 4.0 +// Copyright (2022) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// the U.S. Government retains certain rights in this software. +// +// Part of Kokkos, under the Apache License v2.0 with LLVM Exceptions. +// See https://kokkos.org/LICENSE for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//@HEADER + +#ifndef KOKKOSLAPACK_MAGMA_HPP_ +#define KOKKOSLAPACK_MAGMA_HPP_ +// If LAPACK TPL is enabled, it is preferred over magma's LAPACK +#ifdef KOKKOSKERNELS_ENABLE_TPL_MAGMA +#include "magma_v2.h" + +namespace KokkosLapack { +namespace Impl { + +struct MagmaSingleton { + MagmaSingleton(); + + static MagmaSingleton& singleton(); +}; + +} // namespace Impl +} // namespace KokkosBlas +#endif // KOKKOSKERNELS_ENABLE_TPL_MAGMA +#endif // KOKKOSLAPACK_MAGMA_HPP_ diff --git a/lapack/tpls/KokkosLapack_trtri_tpl_spec_decl.hpp b/lapack/tpls/KokkosLapack_trtri_tpl_spec_decl.hpp index 3ed0623018..655b5b8579 100644 --- a/lapack/tpls/KokkosLapack_trtri_tpl_spec_decl.hpp +++ b/lapack/tpls/KokkosLapack_trtri_tpl_spec_decl.hpp @@ -18,7 +18,9 @@ #define KOKKOSLAPACK_TRTRI_TPL_SPEC_DECL_HPP_ #include "KokkosLapack_Host_tpl.hpp" // trtri prototype -//#include "KokkosLapack_tpl_spec.hpp" +#ifdef KOKKOSKERNELS_ENABLE_TPL_MAGMA +#include "KokkosLapack_magma.hpp" +#endif namespace KokkosLapack { namespace Impl {