Apollo 10.0
自动驾驶开放平台
apollo::perception::base::SyncedMemory类 参考

Manages memory allocation and synchronization between the host (CPU) and device (GPU). 更多...

#include <syncedmem.h>

apollo::perception::base::SyncedMemory 的协作图:

Public 类型

enum  SyncedHead { UNINITIALIZED , HEAD_AT_CPU , HEAD_AT_GPU , SYNCED }
 

Public 成员函数

 SyncedMemory (bool use_cuda)
 
 SyncedMemory (size_t size, bool use_cuda)
 
 SyncedMemory (const SyncedMemory &)=delete
 
void operator= (const SyncedMemory &)=delete
 
 ~SyncedMemory ()
 
const void * cpu_data ()
 
void set_cpu_data (void *data)
 
const void * gpu_data ()
 
void set_gpu_data (void *data)
 
void * mutable_cpu_data ()
 
void * mutable_gpu_data ()
 
SyncedHead head () const
 
void set_head (SyncedHead head)
 
void set_head_gpu ()
 
void set_head_cpu ()
 
size_t size ()
 

详细描述

Manages memory allocation and synchronization between the host (CPU) and device (GPU).

TODO(dox): more thorough description.

在文件 syncedmem.h99 行定义.

成员枚举类型说明

◆ SyncedHead

构造及析构函数说明

◆ SyncedMemory() [1/3]

apollo::perception::base::SyncedMemory::SyncedMemory ( bool  use_cuda)
explicit

在文件 syncedmem.cc69 行定义.

70 : cpu_ptr_(NULL),
71 gpu_ptr_(NULL),
72 size_(0),
73 head_(UNINITIALIZED),
74 own_cpu_data_(false),
75 cpu_malloc_use_cuda_(use_cuda),
76 own_gpu_data_(false),
77 device_(-1) {
78#if USE_GPU == 1
79#ifdef PERCEPTION_DEBUG
80 BASE_GPU_CHECK(cudaGetDevice(&device_));
81#endif
82#endif
83}

◆ SyncedMemory() [2/3]

apollo::perception::base::SyncedMemory::SyncedMemory ( size_t  size,
bool  use_cuda 
)

在文件 syncedmem.cc85 行定义.

86 : cpu_ptr_(NULL),
87 gpu_ptr_(NULL),
88 size_(size),
89 head_(UNINITIALIZED),
90 own_cpu_data_(false),
91 cpu_malloc_use_cuda_(use_cuda),
92 own_gpu_data_(false),
93 device_(-1) {
94#if USE_GPU == 1
95#ifdef PERCEPTION_DEBUG
96 BASE_GPU_CHECK(cudaGetDevice(&device_));
97#endif
98#endif
99}

◆ SyncedMemory() [3/3]

apollo::perception::base::SyncedMemory::SyncedMemory ( const SyncedMemory )
delete

◆ ~SyncedMemory()

apollo::perception::base::SyncedMemory::~SyncedMemory ( )

在文件 syncedmem.cc101 行定义.

101 {
102 check_device();
103 if (cpu_ptr_ && own_cpu_data_) {
104 PerceptionFreeHost(cpu_ptr_, cpu_malloc_use_cuda_);
105 }
106
107#if USE_GPU == 1
108 if (gpu_ptr_ && own_gpu_data_) {
109 BASE_GPU_CHECK(cudaFree(gpu_ptr_));
110 }
111#endif // USE_GPU
112}
void PerceptionFreeHost(void *ptr, bool use_cuda)
Definition syncedmem.h:83

成员函数说明

◆ cpu_data()

const void * apollo::perception::base::SyncedMemory::cpu_data ( )

在文件 syncedmem.cc172 行定义.

172 {
173 check_device();
174 to_cpu();
175 return (const void*)cpu_ptr_;
176}

◆ gpu_data()

const void * apollo::perception::base::SyncedMemory::gpu_data ( )

在文件 syncedmem.cc189 行定义.

189 {
190 check_device();
191#if USE_GPU == 1
192 to_gpu();
193 return (const void*)gpu_ptr_;
194#else
195 NO_GPU;
196 return nullptr;
197#endif
198}
#define NO_GPU
Definition common.h:69

◆ head()

SyncedHead apollo::perception::base::SyncedMemory::head ( ) const
inline

在文件 syncedmem.h116 行定义.

116{ return head_; }

◆ mutable_cpu_data()

void * apollo::perception::base::SyncedMemory::mutable_cpu_data ( )

在文件 syncedmem.cc215 行定义.

215 {
216 check_device();
217 to_cpu();
218 head_ = HEAD_AT_CPU;
219 return cpu_ptr_;
220}

◆ mutable_gpu_data()

void * apollo::perception::base::SyncedMemory::mutable_gpu_data ( )

在文件 syncedmem.cc222 行定义.

222 {
223 check_device();
224#if USE_GPU == 1
225 to_gpu();
226 head_ = HEAD_AT_GPU;
227 return gpu_ptr_;
228#else
229 NO_GPU;
230 return nullptr;
231#endif
232}

◆ operator=()

void apollo::perception::base::SyncedMemory::operator= ( const SyncedMemory )
delete

◆ set_cpu_data()

void apollo::perception::base::SyncedMemory::set_cpu_data ( void *  data)

在文件 syncedmem.cc178 行定义.

178 {
179 check_device();
180 ACHECK(data);
181 if (own_cpu_data_) {
182 PerceptionFreeHost(cpu_ptr_, cpu_malloc_use_cuda_);
183 }
184 cpu_ptr_ = data;
185 head_ = HEAD_AT_CPU;
186 own_cpu_data_ = false;
187}
#define ACHECK(cond)
Definition log.h:80

◆ set_gpu_data()

void apollo::perception::base::SyncedMemory::set_gpu_data ( void *  data)

在文件 syncedmem.cc200 行定义.

200 {
201 check_device();
202#if USE_GPU == 1
203 ACHECK(data);
204 if (own_gpu_data_) {
205 BASE_GPU_CHECK(cudaFree(gpu_ptr_));
206 }
207 gpu_ptr_ = data;
208 head_ = HEAD_AT_GPU;
209 own_gpu_data_ = false;
210#else
211 NO_GPU;
212#endif
213}

◆ set_head()

void apollo::perception::base::SyncedMemory::set_head ( SyncedHead  head)
inline

在文件 syncedmem.h117 行定义.

117{ head_ = head; }

◆ set_head_cpu()

void apollo::perception::base::SyncedMemory::set_head_cpu ( )
inline

在文件 syncedmem.h119 行定义.

◆ set_head_gpu()

void apollo::perception::base::SyncedMemory::set_head_gpu ( )
inline

在文件 syncedmem.h118 行定义.

◆ size()

size_t apollo::perception::base::SyncedMemory::size ( )
inline

在文件 syncedmem.h120 行定义.

120{ return size_; }

该类的文档由以下文件生成: