first try
[jacinto-ai/caffe-jacinto.git] / src / caffeine / syncedmem.hpp
1 #ifndef CAFFEINE_SYNCEDMEM_HPP
2 #define CAFFEINE_SYNCEDMEM_HPP
4 namespace caffeine {
6 class SyncedMemory {
7  public:
8   SyncedMemory()
9       : cpu_ptr_(NULL), gpu_ptr_(NULL), size_(0), head_(SYNCED) {};
10   explicit SyncedMemory(size_t size)
11       : cpu_ptr_(NULL), gpu_ptr_(NULL), head_(SYNCED), size_(size) {};
12   ~SyncedMemory();
13   const void* cpu_data();
14   const void* gpu_data();
15   void* mutable_cpu_data();
16   void* mutable_gpu_data();
17  private:
18   void to_cpu();
19   void to_gpu();
20   void* cpu_ptr_;
21   void* gpu_ptr_;
22   size_t size_;
23   enum SyncedHead { UNINITIALIZED, HEAD_AT_CPU, HEAD_AT_GPU, SYNCED };
24   SyncedHead head_;
25 };  // class SyncedMemory
27 }  // namespace caffeine
29 #endif  // CAFFEINE_SYNCEDMEM_HPP_