PARALUTION  1.0.0
PARALUTION
backend_ocl.hpp
Go to the documentation of this file.
1 #ifndef PARALUTION_BACKEND_OCL_HPP_
2 #define PARALUTION_BACKEND_OCL_HPP_
3 
4 #include "../backend_manager.hpp"
5 
6 #if defined(__APPLE__) && defined(__MACH__)
7 #include <OpenCL/cl.h>
8 #else
9 #include <CL/cl.h>
10 #endif
11 
12 namespace paralution {
13 
14 template <typename ValueType>
15 class AcceleratorVector;
16 template <typename ValueType>
17 class AcceleratorMatrix;
18 template <typename ValueType>
19 class HostMatrix;
20 
21 // OCL handle type that contains all the relevant
22 // OpenCL data such as device, kernels, etc.
23 struct oclHandle_t {
24 
25  // OCL context
26  cl_context OCL_context;
27 
28  // OCL command queue
29  cl_command_queue OCL_cmdQueue;
30 
31  // OCL program for single precision
32  cl_program OCL_program_sp;
33  // OCL program for double precision
34  cl_program OCL_program_dp;
35  // OCL program for int
36  cl_program OCL_program_int;
37 
38  // OCL platforms
40  cl_platform_id *OCL_platforms;
41 
42  // OCL devices
43  cl_uint *OCL_numDevices;
44  cl_device_id **OCL_devices;
45 
46  // OCL kernel array
47  cl_kernel *OCL_kernels;
48 
49 };
50 
52 template <typename ValueType>
53 cl_kernel paralution_get_kernel_ocl(int);
55 bool paralution_init_ocl();
57 void paralution_stop_ocl();
58 
61 
62 
64 template <typename ValueType>
66 
68 template <typename ValueType>
70  const unsigned int matrix_format);
71 
72 
73 }
74 
75 #endif // PARALUTION_BACKEND_OCL_HPP_
AcceleratorVector< ValueType > * _paralution_init_base_ocl_vector(const struct Paralution_Backend_Descriptor backend_descriptor)
Build (and return) an OpenCL vector.
Definition: backend_ocl.cpp:710
cl_program OCL_program_sp
Definition: backend_ocl.hpp:32
cl_device_id ** OCL_devices
Definition: backend_ocl.hpp:44
void paralution_stop_ocl(void)
Release the OpenCL resources.
Definition: backend_ocl.cpp:495
cl_uint * OCL_numDevices
Definition: backend_ocl.hpp:43
cl_kernel * OCL_kernels
Definition: backend_ocl.hpp:47
Definition: backend_manager.hpp:10
Backend descriptor - keeps information about the hardware - OpenMP (threads); CUDA (blocksizes...
Definition: backend_manager.hpp:19
cl_context OCL_context
Definition: backend_ocl.hpp:26
cl_program OCL_program_dp
Definition: backend_ocl.hpp:34
AcceleratorMatrix< ValueType > * _paralution_init_base_ocl_matrix(const struct Paralution_Backend_Descriptor backend_descriptor, const unsigned int matrix_format)
Build (and return) an OpenCL matrix.
Definition: backend_ocl.cpp:668
bool paralution_init_ocl(void)
Initialize OpenCL.
Definition: backend_ocl.cpp:187
cl_program OCL_program_int
Definition: backend_ocl.hpp:36
cl_kernel paralution_get_kernel_ocl(int)
Get OpenCL kernel.
Definition: backend_manager.hpp:12
cl_platform_id * OCL_platforms
Definition: backend_ocl.hpp:40
Definition: backend_ocl.hpp:23
Definition: backend_manager.cpp:43
void paralution_info_ocl(const struct Paralution_Backend_Descriptor backend_descriptor)
Print information about the GPUs in the systems.
Definition: backend_ocl.cpp:581
cl_uint OCL_numPlatforms
Definition: backend_ocl.hpp:39
cl_command_queue OCL_cmdQueue
Definition: backend_ocl.hpp:29