PARALUTION  1.0.0
PARALUTION
base_paralution.hpp
Go to the documentation of this file.
1 #ifndef PARALUTION_BASE_HPP_
2 #define PARALUTION_BASE_HPP_
3 
4 #include "backend_manager.hpp"
5 
6 #include <complex>
7 #include <vector>
8 
9 namespace paralution {
10 
12 
13 public:
14 
15  ParalutionObj();
16  virtual ~ParalutionObj();
17 
19  virtual void Clear() = 0;
20 
21 protected:
22  size_t global_obj_id;
23 
24 };
25 
28 
29  std::vector<class ParalutionObj*> all_obj;
30 
31 };
32 
35 
40 template <typename ValueType>
41 class BaseParalution : public ParalutionObj {
42 
43 public:
44 
47  virtual ~BaseParalution();
48 
50 
52  virtual void MoveToAccelerator(void) = 0;
53 
55  virtual void MoveToHost(void) = 0;
56 
58  virtual void MoveToAcceleratorAsync(void);
59 
61  virtual void MoveToHostAsync(void);
62 
63  // Sync (the async move)
64  virtual void Sync(void);
65 
67  void CloneBackend(const BaseParalution<ValueType> &src);
68 
70  template <typename ValueType2>
72 
74  virtual void info() const = 0;
75 
77  virtual void Clear() = 0;
78 
79 protected:
80 
82  std::string object_name_;
83 
86 
88  virtual bool is_host(void) const = 0;
89 
91  virtual bool is_accel(void) const = 0;
92 
93  // active async transfer
94  bool asyncf;
95 
96  friend class BaseParalution<double>;
97  friend class BaseParalution<float>;
98  friend class BaseParalution<std::complex<double> >;
99  friend class BaseParalution<std::complex<float> >;
100 
101  friend class BaseParalution<int>;
102 
103 };
104 
105 
106 }
107 
108 #endif // PARALUTION_LOCAL_BASE_HPP_
virtual void MoveToAccelerator(void)=0
Move the object to the Accelerator backend.
size_t global_obj_id
Definition: base_paralution.hpp:22
virtual void MoveToHostAsync(void)
Move the object to the Host backend with async move.
Definition: base_paralution.cpp:159
BaseParalution()
Definition: base_paralution.cpp:52
ParalutionObj()
Definition: base_paralution.cpp:11
virtual ~ParalutionObj()
Definition: base_paralution.cpp:28
virtual void Sync(void)
Definition: base_paralution.cpp:167
Backend descriptor - keeps information about the hardware - OpenMP (threads); CUDA (blocksizes...
Definition: backend_manager.hpp:19
virtual void MoveToAcceleratorAsync(void)
Move the object to the Accelerator backend with async move.
Definition: base_paralution.cpp:151
virtual void Clear()=0
Clear (free all data) the object.
Paralution_Backend_Descriptor local_backend_
Backend descriptor.
Definition: base_paralution.hpp:85
virtual bool is_accel(void) const =0
Return true if the object is on the accelerator.
std::string object_name_
Name of the object.
Definition: base_paralution.hpp:82
BaseParalution< ValueType > & operator=(const BaseParalution< ValueType > &src)
Definition: base_paralution.cpp:86
Global data for all PARALUTION objects.
Definition: base_paralution.hpp:27
Paralution_Object_Data Paralution_Object_Data_Tracking
Global obj tracking structure.
Definition: base_paralution.cpp:9
virtual ~BaseParalution()
Definition: base_paralution.cpp:78
std::vector< class ParalutionObj * > all_obj
Definition: base_paralution.hpp:29
virtual bool is_host(void) const =0
Return true if the object is on the host.
Base class for operator and vector (i.e. global/local matrix/stencil/vector) classes, all the backend-related interface and data are defined here.
Definition: base_paralution.hpp:41
bool asyncf
Definition: base_paralution.hpp:94
Definition: backend_manager.cpp:43
Definition: base_paralution.hpp:11
virtual void info() const =0
Print the object information (properties, backends)
virtual void MoveToHost(void)=0
Move the object to the Host backend.
virtual void Clear()=0
Clear (free all data) the object.
void CloneBackend(const BaseParalution< ValueType > &src)
Clone the Backend descriptor from another object.
Definition: base_paralution.cpp:97