Optimized Belief Propagation (CPU and GPU)
RunSettingsConstsEnums.h
Go to the documentation of this file.
1 /*
2 Copyright (C) 2024 Scott Grauer-Gray
3 
4 This program is free software; you can redistribute it and/or modify
5 it under the terms of the GNU General Public License as published by
6 the Free Software Foundation; either version 2 of the License, or
7 (at your option) any later version.
8 
9 This program is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 GNU General Public License for more details.
13 
14 You should have received a copy of the GNU General Public License
15 along with this program; if not, write to the Free Software
16 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17 */
18 
28 #ifndef RUN_SETTINGS_CONSTS_ENUMS_H_
29 #define RUN_SETTINGS_CONSTS_ENUMS_H_
30 
31 #include <string_view>
32 #include <map>
33 
34 #if defined(OPTIMIZED_CUDA_RUN)
36 #endif //OPTIMIZED_CUDA_RUN
37 
38 //set alias for data type used for half-precision
39 #if defined(OPTIMIZED_CPU_RUN)
40 #if defined(COMPILING_FOR_ARM)
41 #include <arm_neon.h> //needed for float16_t type
42 using halftype = float16_t;
43 #else
45 using halftype = short;
46 #endif //COMPILING_FOR_ARM
47 #endif //OPTIMIZED_CPU_RUN
48 
53 namespace run_environment {
54 
56 constexpr std::string_view kAccelerationDescHeader{"Acceleration"};
57 
59 enum class AccSetting {
61 };
62 
69 template <AccSetting ACCELERATION_SETTING>
70 constexpr std::string_view AccelerationString() {
71  if constexpr (ACCELERATION_SETTING == AccSetting::kNEON) { return "NEON"; }
72  else if constexpr (ACCELERATION_SETTING == AccSetting::kAVX256) { return "AVX256"; }
73  else if constexpr (ACCELERATION_SETTING == AccSetting::kAVX256_F16) { return "AVX256_float16Vect"; }
74  else if constexpr (ACCELERATION_SETTING == AccSetting::kAVX512) { return "AVX512"; }
75  else if constexpr (ACCELERATION_SETTING == AccSetting::kAVX512_F16) { return "AVX512_float16Vect"; }
76  else if constexpr (ACCELERATION_SETTING == AccSetting::kCUDA) { return "CUDA"; }
77  else { return "DEFAULT"; }
78 }
79 
86 inline std::string_view AccelerationString(AccSetting acceleration_setting) {
87  if (acceleration_setting == AccSetting::kNEON) { return AccelerationString<AccSetting::kNEON>(); }
88  else if (acceleration_setting == AccSetting::kAVX256) { return AccelerationString<AccSetting::kAVX256>(); }
89  else if (acceleration_setting == AccSetting::kAVX256_F16) { return AccelerationString<AccSetting::kAVX256_F16>(); }
90  else if (acceleration_setting == AccSetting::kAVX512) { return AccelerationString<AccSetting::kAVX512>(); }
91  else if (acceleration_setting == AccSetting::kAVX512_F16) { return AccelerationString<AccSetting::kAVX512_F16>(); }
92  else if (acceleration_setting == AccSetting::kCUDA) { return AccelerationString<AccSetting::kCUDA>(); }
93  else { return "DEFAULT"; }
94 }
95 
97 const std::map<std::size_t, std::string_view> kDataSizeToNameMap{
98  {sizeof(float), "FLOAT"},
99  {sizeof(double), "DOUBLE"},
100  {sizeof(short), "HALF"}
101 };
102 
112 };
113 
116 
124 };
125 
126 //constants for header and descriptions corresponding to optimized parallel
127 //parameters setting
128 constexpr std::string_view kPParamsPerKernelSettingHeader{"Parallel Params Per Kernel Setting"};
129 constexpr std::string_view kPParamsSameEveryKernelDesc{"Same Across Kernels"};
130 constexpr std::string_view kPParamsSetEachKernelDesc{"Set Per Kernel"};
131 const std::map<OptParallelParamsSetting, std::string_view> kOptPParmsSettingToDesc {
134 };
135 
136 //constants for headers corresponding to run settings
137 constexpr std::string_view kCPUThreadsPinnedHeader{"CPU Threads Pinned To Socket"};
138 constexpr std::string_view kOmpPlacesHeader{"OMP_PLACES"};
139 constexpr std::string_view kOmpProcBindHeader{"OMP_PROC_BIND"};
140 constexpr std::string_view kNumCPUThreadsHeader{"Total number of CPU threads"};
141 constexpr std::string_view kBytesAlignMemHeader{"BYTES_ALIGN_MEMORY"};
142 
143 };
144 
145 #endif //RUN_SETTINGS_CONSTS_ENUMS_H_
Contains namespace with CPU run defaults and constants.
Contains namespace with constants and functions to get CUDA device properties as well as default and ...
half halftype
Constants and enums related to run environment and settings for run.
Definition: RunSettings.h:41
constexpr std::string_view kCPUThreadsPinnedHeader
constexpr std::string_view AccelerationString()
Get string corresponding to acceleration method at compile time.
constexpr std::string_view kBytesAlignMemHeader
ParallelParamsSetting
Enum for parallel parameters settings in run.
AccSetting
Enum for acceleration setting.
constexpr std::string_view kOmpPlacesHeader
constexpr std::string_view kPParamsSameEveryKernelDesc
const std::map< OptParallelParamsSetting, std::string_view > kOptPParmsSettingToDesc
constexpr std::string_view kOmpProcBindHeader
constexpr std::string_view kNumCPUThreadsHeader
const std::map< std::size_t, std::string_view > kDataSizeToNameMap
Mapping from data size to data type string.
constexpr std::string_view kPParamsPerKernelSettingHeader
constexpr std::string_view kAccelerationDescHeader
Constant string for acceleration.
constexpr std::string_view kPParamsSetEachKernelDesc
OptParallelParamsSetting
Enum to specify if optimizing parallel parameters per kernel or using same parallel parameters across...
TemplatedItersSetting
Enum that specifies whether or not to use templated counts for the number of iterations in processing...