MagmaDNN  1.0
c++NeuralNetworkFramework
memorymanager.h
Go to the documentation of this file.
1 
9 #pragma once
10 
11 #include <vector>
12 #include <algorithm>
13 #include <stdlib.h>
14 #include <stdio.h>
15 #include <assert.h>
16 #include "types.h"
17 #include "utilities_internal.h"
18 
19 // include cuda files if on GPU
20 #if defined(_HAS_CUDA_)
21 #include <cuda.h>
22 #include <cuda_runtime_api.h>
23 #include "memory_internal_device.h"
24 #endif
25 
26 namespace magmadnn {
27 
28 template <typename T>
30 public:
36  MemoryManager(unsigned int size, memory_t mem_type, device_t device_id);
37 
41  MemoryManager(const MemoryManager& that);
42 
48 
52 
58  magmadnn_error_t copy_from(const MemoryManager<T>& src, unsigned int begin_idx, unsigned int size);
59 
65  magmadnn_error_t copy_from(const MemoryManager<T>& src, unsigned int size);
66 
72  magmadnn_error_t copy_from(const MemoryManager<T>& src);
73 
79  magmadnn_error_t copy_from_host(T *src, unsigned int begin_idx, unsigned int size);
80 
81 
82  #if defined(_HAS_CUDA_)
83 
88  magmadnn_error_t copy_from_device(T *src, unsigned int begin_idx, unsigned int size);
89 
95  magmadnn_error_t copy_from_managed(T *host_src, T *device_src, unsigned int begin_idx, unsigned int size);
96 
102  magmadnn_error_t copy_from_cudamanaged(T *src, unsigned int begin_idx, unsigned int size);
103  #endif
104 
112  magmadnn_error_t sync(bool gpu_was_modified=true);
113 
118  magmadnn_error_t set_device(device_t device_id);
119 
124  T get(unsigned int idx) const;
125 
130  void set(unsigned int idx, T val);
131 
135  T* get_host_ptr();
136 
137  #if defined(_HAS_CUDA_)
138 
141  T* get_device_ptr();
142 
146  T* get_cuda_managed_ptr();
147  #endif
148 
153  T* get_ptr();
154 
158  unsigned int get_size() const { return size; }
159 
163  memory_t get_memory_type() const { return mem_type; }
164 
165 private:
166 
168  void init_host();
169 
170  #if defined(_HAS_CUDA_)
171 
172  void init_device();
173 
175  void init_managed();
176 
178  void init_cuda_managed();
179  #endif
180 
181  memory_t mem_type;
182  device_t device_id;
183 
184  unsigned int size;
185  T* host_ptr;
186 
187  #if defined(_HAS_CUDA_)
188  T* device_ptr;
189  T* cuda_managed_ptr;
190  #endif
191 };
192 
193 }
~MemoryManager()
Definition: memorymanager.cpp:77
Definition: addop.cpp:11
MemoryManager & operator=(const MemoryManager &that)
Definition: memorymanager.cpp:66
unsigned int get_size() const
Definition: memorymanager.h:158
magmadnn_error_t copy_from(const MemoryManager< T > &src, unsigned int begin_idx, unsigned int size)
Definition: memorymanager.cpp:94
T * get_ptr()
Definition: memorymanager.cpp:337
T * get_host_ptr()
Definition: memorymanager.cpp:320
memory_t get_memory_type() const
Definition: memorymanager.h:163
magmadnn_error_t sync(bool gpu_was_modified=true)
Definition: memorymanager.cpp:238
magmadnn_error_t copy_from_host(T *src, unsigned int begin_idx, unsigned int size)
Definition: memorymanager.cpp:127
magmadnn_error_t set_device(device_t device_id)
Definition: memorymanager.cpp:304
MemoryManager(unsigned int size, memory_t mem_type, device_t device_id)
Definition: memorymanager.cpp:14
Definition: memorymanager.h:29