PARALUTION  1.0.0
PARALUTION
backend_manager.hpp
Go to the documentation of this file.
1 #ifndef PARALUTION_BACKEND_MANAGER_HPP_
2 #define PARALUTION_BACKEND_MANAGER_HPP_
3 
4 #include <iostream>
5 #include <fstream>
6 
7 namespace paralution {
8 
9 template <typename ValueType>
11 template <typename ValueType>
13 template <typename ValueType>
14 class HostMatrix;
15 
20 
21  // set by initbackend();
22  bool init;
23 
24  // current backend
25  int backend;
28 
29  // OpenMP threads
31  // OpenMP threads before PARALUTION init
33  // OpenMP nested before PARALUTION init
35  // Host affinity (true-yes/false-no)
37  // Host threshold size
39 
40  // GPU section
41  // gpu handles
42  // cublasHandle_t casted in void **
44  // cusparseHandle_t casted in void **
46 
47  int GPU_dev;
48  int GPU_warp;
51 
52  // OCL section
53  // ocl handle
54  void *OCL_handle;
55 
56  int OCL_plat;
57  int OCL_dev;
61 
62  // MIC section
63  int MIC_dev;
64 
65  // Software marker
66  // DO NOT REMOVE
67  char marker[15];
68 
69  std::ofstream *log_file;
70 };
71 
74 
76 extern const std::string _paralution_host_name [1];
77 
79 extern const std::string _paralution_backend_name [4];
80 
83  GPU=1,
84  OCL=2,
85  MIC=3};
86 
87 
88 
90 int init_paralution(void);
91 
93 int stop_paralution(void);
94 
96 int set_device_paralution(int dev);
97 
99 void set_omp_threads_paralution(int nthreads);
100 
102 void set_omp_affinity(bool affinity);
103 
105 void set_gpu_cuda_paralution(int ngpu);
106 
108 void set_ocl_paralution(int nplatform, int ndevice);
109 
111 void set_ocl_platform_paralution(int platform);
112 
114 void set_ocl_work_group_size_paralution(size_t size);
115 
117 void set_ocl_compute_units_paralution(size_t cu);
118 
120 void set_ocl_warp_size_paralution(int size);
121 
123 void set_omp_threshold(const int threshold);
124 
126 void info_paralution(void);
127 
129 void info_paralution(const struct Paralution_Backend_Descriptor backend_descriptor);
130 
133 
135 void disable_accelerator_paralution(const bool onoff=true);
136 
138 struct Paralution_Backend_Descriptor *_get_backend_descriptor(void);
139 
141 void _set_backend_descriptor(const struct Paralution_Backend_Descriptor backend_descriptor);
142 
144 void _set_omp_backend_threads(const struct Paralution_Backend_Descriptor backend_descriptor,
145  const int size);
146 
148 template <typename ValueType>
149 AcceleratorVector<ValueType>* _paralution_init_base_backend_vector(const struct Paralution_Backend_Descriptor backend_descriptor);
150 
152 template <typename ValueType>
153 HostMatrix<ValueType>* _paralution_init_base_host_matrix(const struct Paralution_Backend_Descriptor backend_descriptor,
154  const unsigned int matrix_format);
155 
157 template <typename ValueType>
158 AcceleratorMatrix<ValueType>* _paralution_init_base_backend_matrix(const struct Paralution_Backend_Descriptor backend_descriptor,
159  const unsigned int matrix_format);
160 
162 void _paralution_sync(void);
163 
164 size_t _paralution_add_obj(class ParalutionObj* ptr);
165 bool _paralution_del_obj(class ParalutionObj* ptr,
166  size_t id);
167 void _paralution_delete_all_obj(void);
169 
170 }
171 
172 #endif // PARALUTION_BACKEND_MANAGER_HPP_
int OpenMP_def_nested
Definition: backend_manager.hpp:34
void * OCL_handle
Definition: backend_manager.hpp:54
Definition: backend_manager.hpp:85
void set_omp_threads_paralution(int nthreads)
Set the number of threads in the platform.
Definition: backend_manager.cpp:257
int GPU_max_threads
Definition: backend_manager.hpp:50
bool _paralution_available_accelerator(void)
Return true if any accelerator is available.
Definition: backend_manager.cpp:464
bool init
Definition: backend_manager.hpp:22
void info_paralution(void)
Print information about the platform.
Definition: backend_manager.cpp:352
bool disable_accelerator
Definition: backend_manager.hpp:27
void _set_backend_descriptor(const struct Paralution_Backend_Descriptor backend_descriptor)
Set backend descriptor.
Definition: backend_manager.cpp:485
void * GPU_cusparse_handle
Definition: backend_manager.hpp:45
void set_ocl_paralution(int nplatform, int ndevice)
Set a specific OpenCL platform and device.
Definition: backend_manager.cpp:294
std::ofstream * log_file
Definition: backend_manager.hpp:69
Definition: backend_manager.hpp:10
Backend descriptor - keeps information about the hardware - OpenMP (threads); CUDA (blocksizes...
Definition: backend_manager.hpp:19
int init_paralution(void)
Initialization of the paralution platform.
Definition: backend_manager.cpp:106
void _set_omp_backend_threads(const struct Paralution_Backend_Descriptor backend_descriptor, const int size)
Set the OMP threads based on the size threshold.
Definition: backend_manager.cpp:651
Paralution_Backend_Descriptor _Backend_Descriptor
Global backend descriptor.
Definition: backend_manager.cpp:46
int OpenMP_def_threads
Definition: backend_manager.hpp:32
void _paralution_sync(void)
Sync the active async transfers.
Definition: backend_manager.cpp:631
void set_ocl_warp_size_paralution(int size)
Set OpenCL warp size.
Definition: backend_manager.cpp:341
size_t _paralution_add_obj(class ParalutionObj *ptr)
Definition: backend_manager.cpp:669
void disable_accelerator_paralution(const bool onoff)
Disable/Enable the accelerator.
Definition: backend_manager.cpp:470
int GPU_block_size
Definition: backend_manager.hpp:49
int OCL_warp_size
Definition: backend_manager.hpp:60
Definition: backend_manager.hpp:84
int set_device_paralution(int dev)
Select a device.
Definition: backend_manager.cpp:234
HostMatrix< ValueType > * _paralution_init_base_host_matrix(const struct Paralution_Backend_Descriptor backend_descriptor, const unsigned int matrix_format)
Build (and return) a matrix on the host.
Definition: backend_manager.cpp:584
int OpenMP_threads
Definition: backend_manager.hpp:30
int backend
Definition: backend_manager.hpp:25
bool accelerator
Definition: backend_manager.hpp:26
bool _paralution_check_if_any_obj(void)
Definition: backend_manager.cpp:745
bool _paralution_del_obj(class ParalutionObj *ptr, size_t id)
Definition: backend_manager.cpp:691
Definition: backend_manager.hpp:12
void set_omp_affinity(bool affinity)
Set host affinity (true-on/false-off)
Definition: backend_manager.cpp:450
int OCL_dev
Definition: backend_manager.hpp:57
size_t OCL_max_work_group_size
Definition: backend_manager.hpp:58
const std::string _paralution_host_name[1]
Host name.
Definition: backend_manager.cpp:92
void set_ocl_compute_units_paralution(size_t cu)
Set OpenCL compute units.
Definition: backend_manager.cpp:330
Definition: backend_manager.cpp:43
AcceleratorVector< ValueType > * _paralution_init_base_backend_vector(const struct Paralution_Backend_Descriptor backend_descriptor)
Build (and return) a vector on the selected in the descriptor accelerator.
Definition: backend_manager.cpp:493
AcceleratorMatrix< ValueType > * _paralution_init_base_backend_matrix(const struct Paralution_Backend_Descriptor backend_descriptor, const unsigned int matrix_format)
Build (and return) a matrix on the selected in the descriptor accelerator.
Definition: backend_manager.cpp:539
Definition: backend_manager.hpp:14
int OCL_plat
Definition: backend_manager.hpp:56
void _paralution_delete_all_obj(void)
Definition: backend_manager.cpp:720
void set_ocl_work_group_size_paralution(size_t size)
Set OpenCL work group size.
Definition: backend_manager.cpp:319
void set_gpu_cuda_paralution(int ngpu)
Set a specific GPU device.
Definition: backend_manager.cpp:283
struct Paralution_Backend_Descriptor * _get_backend_descriptor(void)
Return backend descriptor.
Definition: backend_manager.cpp:478
int OpenMP_threshold
Definition: backend_manager.hpp:38
bool OpenMP_affinity
Definition: backend_manager.hpp:36
_paralution_backend_id
Backend IDs.
Definition: backend_manager.hpp:82
const std::string _paralution_backend_name[4]
Backend names.
Definition: backend_manager.cpp:100
void * GPU_cublas_handle
Definition: backend_manager.hpp:43
int GPU_warp
Definition: backend_manager.hpp:48
int stop_paralution(void)
Shutdown the paralution platform.
Definition: backend_manager.cpp:195
int MIC_dev
Definition: backend_manager.hpp:63
void set_omp_threshold(const int threshold)
Set OpenMP threshold size.
Definition: backend_manager.cpp:457
void set_ocl_platform_paralution(int platform)
Set a specific OpenCL platform.
Definition: backend_manager.cpp:308
Definition: backend_manager.hpp:83
Definition: backend_manager.hpp:82
char marker[15]
Definition: backend_manager.hpp:67
size_t OCL_computeUnits
Definition: backend_manager.hpp:59
int GPU_dev
Definition: backend_manager.hpp:47