SkePU  1.2
 All Classes Namespaces Files Functions Variables Enumerations Friends Macros Groups Pages
device_allocations_cu.h
1 #include <iostream>
2 #include <cuda.h>
3 #include <map>
4 
5 #include "mem_pointer_base.h"
6 
7 namespace skepu
8 {
9 
10 // Forward declaration
11 template <typename T>
12 class DeviceAllocations_CUDestroyer;
19 template <typename T>
21 {
22  typedef std::map<void *,MemPointerBase*> m_alloctype;
23 public:
25  void addAllocation(void *datapointer,MemPointerBase *device_mem_pointer, int deviceid);
26  void removeAllocation(void *datapointer,MemPointerBase *device_mem_pointer, int deviceid);
27  bool freeAllocation(size_t minsize,int deviceid);
28  void printList(int deviceid);
29 protected:
31 
32  virtual ~DeviceAllocations_CU();
33 
34  friend class DeviceAllocations_CUDestroyer<T>; // To safely clean resources
35 private:
36 
37  static DeviceAllocations_CUDestroyer<T> _destroyer;
38 
39  void init();
40 
41  m_alloctype allocations[MAX_GPU_DEVICES];
42  static DeviceAllocations_CU* instance;
43 };
44 
45 template <typename T>
46 DeviceAllocations_CUDestroyer<T> DeviceAllocations_CU<T>::_destroyer;
47 
48 template <typename T>
49 class DeviceAllocations_CUDestroyer
50 {
51 public:
52  DeviceAllocations_CUDestroyer(DeviceAllocations_CU<T>* = 0);
53  ~DeviceAllocations_CUDestroyer();
54 
55  void SetDeviceAllocations_CU(DeviceAllocations_CU<T>* s);
56 private:
57  DeviceAllocations_CU<T>* _singleton;
58 };
59 
60 
61 
62 
63 template <typename T>
64 DeviceAllocations_CUDestroyer<T>::DeviceAllocations_CUDestroyer(DeviceAllocations_CU<T>* s)
65 {
66  _singleton = s;
67 }
68 
69 template <typename T>
70 DeviceAllocations_CUDestroyer<T>::~DeviceAllocations_CUDestroyer ()
71 {
72  delete _singleton;
73 }
74 
75 template <typename T>
76 void DeviceAllocations_CUDestroyer<T>::SetDeviceAllocations_CU (DeviceAllocations_CU<T>* s)
77 {
78  _singleton = s;
79 }
80 }
81 
82 #include "device_allocations_cu.inl"
83 
84 
85 
void addAllocation(void *datapointer, MemPointerBase *device_mem_pointer, int deviceid)
Definition: device_allocations_cu.inl:58
void removeAllocation(void *datapointer, MemPointerBase *device_mem_pointer, int deviceid)
Definition: device_allocations_cu.inl:71
#define MAX_GPU_DEVICES
Definition: globals.h:43
bool freeAllocation(size_t minsize, int deviceid)
Definition: device_allocations_cu.inl:93
DeviceAllocations_CU()
Definition: device_allocations_cu.inl:29
virtual ~DeviceAllocations_CU()
Definition: device_allocations_cu.inl:38
static DeviceAllocations_CU * getInstance()
Definition: device_allocations_cu.inl:15
void printList(int deviceid)
Definition: device_allocations_cu.inl:115
Definition: device_allocations_cu.h:20