UNIVERS  15.3
UNIVERS base processing software API
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
cuda_manager.hpp
1 /* cuda_manager.hpp */
2 /* $Id$ */
3 #ifndef __cuda_manager_hpp
4 #define __cuda_manager_hpp
5 
6 #ifdef U_CUDA_ENABLED
7 
8 #include <cuda.h>
9 #include <cuda_runtime_api.h>
10 #include <dcf/ipcmsg_man.hpp>
11 #include <dcf/manager.hpp>
12 
13 namespace dcf
14 {
17  class CUDAManager : public dcf::Manager
18  {
19  public:
20 
22  CUDAManager();
23 
25  virtual ~CUDAManager();
26 
28  virtual dcf::Manager* clone() const;
29 
31  virtual size_t getUnitsCount() const;
32 
36  virtual dcf::error_t unitAlloc(int unit_id);
37 
40  virtual dcf::error_t unitFree(int unit_id);
41 
44  virtual dcf::error_t unitsFree();
45 
48  virtual dcf::error_t isAllocatedUnit(int unit_id, bool &is_allocated) const;
49 
53  dcf::error_t isAllocatedUnit(int unit_id, bool &is_allocated, IPCMsgMan::Message &udata) const;
54 
56  dcf::error_t currAllocatedUnit(int &unit_id) const;
57 
61  virtual dcf::error_t unitPower(int unit_id, double &power) const;
62 
64  dcf::error_t unitProp(int dev_id, cudaDeviceProp &dev_prop) const;
65 
67  dcf::error_t currentUnitProp(cudaDeviceProp &dev_prop) const;
68 
70  bool isInitialized() const {return m_is_initialized;}
71 
73  const dcf::IPCMsgMan& getMsgMan() const {return m_msg_man;}
74 
75  protected:
76 
78  cudaError_t cuda_dev_alloc(int dev_id) const;
79 
81  cudaError_t cuda_dev_free() const;
82 
84  int m_curr_allocated_unit;
85 
87  bool m_is_initialized;
88 
90  dcf::IPCMsgMan m_msg_man;
91 
92  private:
93 
94  };
95 
96 };
97 
98 #endif /* U_CUDA_ENABLED */
99 
100 #endif /* cuda_manager.hpp */
error_t
Definition: types.hpp:11
Definition: manager.hpp:19
Definition: ipcmsg_man.hpp:18