From 27d50c92345bcc80e001685937f6ac57b5d56219 Mon Sep 17 00:00:00 2001 From: Yuuichi Asahi Date: Tue, 9 Jul 2024 15:32:00 +0900 Subject: [PATCH] Merge destroy_plan and destroy_info --- fft/src/KokkosFFT_Cuda_plans.hpp | 11 ++--------- fft/src/KokkosFFT_HIP_plans.hpp | 11 ++--------- fft/src/KokkosFFT_Host_plans.hpp | 12 ++---------- fft/src/KokkosFFT_Plans.hpp | 4 ++-- fft/src/KokkosFFT_ROCM_plans.hpp | 13 ++++--------- fft/src/KokkosFFT_SYCL_plans.hpp | 12 ++---------- 6 files changed, 14 insertions(+), 49 deletions(-) diff --git a/fft/src/KokkosFFT_Cuda_plans.hpp b/fft/src/KokkosFFT_Cuda_plans.hpp index f868a659..935be540 100644 --- a/fft/src/KokkosFFT_Cuda_plans.hpp +++ b/fft/src/KokkosFFT_Cuda_plans.hpp @@ -177,19 +177,12 @@ auto create_plan(const ExecutionSpace& exec_space, return fft_size; } -template , std::nullptr_t> = nullptr> -void destroy_plan(std::unique_ptr& plan) { +void destroy_plan_and_info(std::unique_ptr& plan, InfoType&) { cufftDestroy(*plan); } - -template , - std::nullptr_t> = nullptr> -void destroy_info(InfoType&) { - // not used, no finalization is required -} } // namespace Impl } // namespace KokkosFFT diff --git a/fft/src/KokkosFFT_HIP_plans.hpp b/fft/src/KokkosFFT_HIP_plans.hpp index a910ffaf..bc2b3386 100644 --- a/fft/src/KokkosFFT_HIP_plans.hpp +++ b/fft/src/KokkosFFT_HIP_plans.hpp @@ -184,19 +184,12 @@ auto create_plan(const ExecutionSpace& exec_space, return fft_size; } -template , std::nullptr_t> = nullptr> -void destroy_plan(std::unique_ptr& plan) { +void destroy_plan_and_info(std::unique_ptr& plan, InfoType&) { hipfftDestroy(*plan); } - -template , - std::nullptr_t> = nullptr> -void destroy_info(InfoType&) { - // not used, no finalization is required -} } // namespace Impl } // namespace KokkosFFT diff --git a/fft/src/KokkosFFT_Host_plans.hpp b/fft/src/KokkosFFT_Host_plans.hpp index 3ab86d77..2570c0b9 100644 --- a/fft/src/KokkosFFT_Host_plans.hpp +++ b/fft/src/KokkosFFT_Host_plans.hpp @@ -105,25 +105,17 @@ auto create_plan(const ExecutionSpace& exec_space, return fft_size; } -template , std::nullptr_t> = nullptr> -void destroy_plan(std::unique_ptr& plan) { +void destroy_plan_and_info(std::unique_ptr& plan, InfoType&) { if constexpr (std::is_same_v) { fftwf_destroy_plan(*plan); } else { fftw_destroy_plan(*plan); } } - -template , - std::nullptr_t> = nullptr> -void destroy_info(InfoType&) { - // not used, no finalization is required -} } // namespace Impl } // namespace KokkosFFT diff --git a/fft/src/KokkosFFT_Plans.hpp b/fft/src/KokkosFFT_Plans.hpp index 532f5bb8..641fa006 100644 --- a/fft/src/KokkosFFT_Plans.hpp +++ b/fft/src/KokkosFFT_Plans.hpp @@ -285,8 +285,8 @@ class Plan { } ~Plan() { - destroy_info(m_info); - destroy_plan(m_plan); + destroy_plan_and_info(m_plan, + m_info); } Plan(const Plan&) = delete; diff --git a/fft/src/KokkosFFT_ROCM_plans.hpp b/fft/src/KokkosFFT_ROCM_plans.hpp index 7fbb2636..b1ea115d 100644 --- a/fft/src/KokkosFFT_ROCM_plans.hpp +++ b/fft/src/KokkosFFT_ROCM_plans.hpp @@ -192,18 +192,13 @@ auto create_plan(const ExecutionSpace& exec_space, return fft_size; } -template , std::nullptr_t> = nullptr> -void destroy_plan(std::unique_ptr& plan) { - rocfft_plan_destroy(*plan); -} - -template , - std::nullptr_t> = nullptr> -void destroy_info(InfoType& execution_info) { +void destroy_plan_and_info(std::unique_ptr& plan, + InfoType& execution_info) { rocfft_execution_info_destroy(execution_info); + rocfft_plan_destroy(*plan); } } // namespace Impl } // namespace KokkosFFT diff --git a/fft/src/KokkosFFT_SYCL_plans.hpp b/fft/src/KokkosFFT_SYCL_plans.hpp index e62f6b27..8e9fdcd6 100644 --- a/fft/src/KokkosFFT_SYCL_plans.hpp +++ b/fft/src/KokkosFFT_SYCL_plans.hpp @@ -106,20 +106,12 @@ auto create_plan(const ExecutionSpace& exec_space, } template < - typename ExecutionSpace, typename PlanType, + typename ExecutionSpace, typename PlanType, typename InfoType, std::enable_if_t, std::nullptr_t> = nullptr> -void destroy_plan(std::unique_ptr&) { +void destroy_plan_and_info(std::unique_ptr&, InfoType&) { // In oneMKL, plans are destroybed by destructor } - -template < - typename ExecutionSpace, typename InfoType, - std::enable_if_t, - std::nullptr_t> = nullptr> -void destroy_info(InfoType&) { - // not used, no finalization is required -} } // namespace Impl } // namespace KokkosFFT