From 57862ef6e2855de392dab266d16e57d5b5829210 Mon Sep 17 00:00:00 2001 From: "Victor A. P. Magri" <50467563+victorapm@users.noreply.github.com> Date: Fri, 22 Sep 2023 16:02:53 -0400 Subject: [PATCH] Add HYPRE_GetExecutionPolicyName (#969) * Add HYPRE_GetExecutionPolicyName * Add doc entries to memory/execution routines --- src/utilities/HYPRE_utilities.h | 24 ++++++++++++++++++++++++ src/utilities/general.c | 28 ++++++++++++++++++++++++++++ 2 files changed, 52 insertions(+) diff --git a/src/utilities/HYPRE_utilities.h b/src/utilities/HYPRE_utilities.h index 62deddd99..8c4c768a7 100644 --- a/src/utilities/HYPRE_utilities.h +++ b/src/utilities/HYPRE_utilities.h @@ -249,7 +249,16 @@ typedef enum _HYPRE_MemoryLocation HYPRE_MEMORY_DEVICE } HYPRE_MemoryLocation; +/** + * (Optional) Sets the default (abstract) memory location. + **/ + HYPRE_Int HYPRE_SetMemoryLocation(HYPRE_MemoryLocation memory_location); + +/** + * (Optional) Gets a pointer to the default (abstract) memory location. + **/ + HYPRE_Int HYPRE_GetMemoryLocation(HYPRE_MemoryLocation *memory_location); #include @@ -265,9 +274,24 @@ typedef enum _HYPRE_ExecutionPolicy HYPRE_EXEC_DEVICE } HYPRE_ExecutionPolicy; +/** + * (Optional) Sets the default execution policy. + **/ + HYPRE_Int HYPRE_SetExecutionPolicy(HYPRE_ExecutionPolicy exec_policy); + +/** + * (Optional) Gets a pointer to the default execution policy. + **/ + HYPRE_Int HYPRE_GetExecutionPolicy(HYPRE_ExecutionPolicy *exec_policy); +/** + * (Optional) Returns a string denoting the execution policy passed as input. + **/ + +const char* HYPRE_GetExecutionPolicyName(HYPRE_ExecutionPolicy exec_policy); + /*-------------------------------------------------------------------------- * HYPRE UMPIRE *--------------------------------------------------------------------------*/ diff --git a/src/utilities/general.c b/src/utilities/general.c index c2a81c88f..0288708bc 100644 --- a/src/utilities/general.c +++ b/src/utilities/general.c @@ -662,3 +662,31 @@ HYPRE_GetExecutionPolicy(HYPRE_ExecutionPolicy *exec_policy) return hypre_error_flag; } + +const char* +HYPRE_GetExecutionPolicyName(HYPRE_ExecutionPolicy exec_policy) +{ + switch (exec_policy) + { + case HYPRE_EXEC_HOST: + return "Host"; + + case HYPRE_EXEC_DEVICE: +#if defined(HYPRE_USING_GPU) || defined(HYPRE_USING_DEVICE_OPENMP) +#if defined(HYPRE_USING_CUDA) + return "Device (CUDA)"; +#elif defined(HYPRE_USING_HIP) + return "Device (HIP)"; +#elif defined(HYPRE_USING_SYCL) + return "Device (SYCL)"; +#else + return "Device (OpenMP)"; +#endif +#else + return "Host"; +#endif + case HYPRE_EXEC_UNDEFINED: + default: + return "Undefined"; + } +}