75 cpu_malloc_use_cuda_(use_cuda),
79#ifdef PERCEPTION_DEBUG
80 BASE_GPU_CHECK(cudaGetDevice(&device_));
91 cpu_malloc_use_cuda_(use_cuda),
95#ifdef PERCEPTION_DEBUG
96 BASE_GPU_CHECK(cudaGetDevice(&device_));
103 if (cpu_ptr_ && own_cpu_data_) {
108 if (gpu_ptr_ && own_gpu_data_) {
109 BASE_GPU_CHECK(cudaFree(gpu_ptr_));
114inline void SyncedMemory::to_cpu() {
119 if (cpu_ptr_ ==
nullptr) {
120 AERROR <<
"cpu_ptr_ is null";
123 memset(cpu_ptr_, 0, size_);
125 own_cpu_data_ =
true;
129 if (cpu_ptr_ ==
nullptr) {
131 own_cpu_data_ =
true;
133 BASE_GPU_CHECK(cudaMemcpy(cpu_ptr_, gpu_ptr_, size_, cudaMemcpyDefault));
145inline void SyncedMemory::to_gpu() {
150 BASE_GPU_CHECK(cudaMalloc(&gpu_ptr_, size_));
151 BASE_GPU_CHECK(cudaMemset(gpu_ptr_, 0, size_));
153 own_gpu_data_ =
true;
156 if (gpu_ptr_ ==
nullptr) {
157 BASE_GPU_CHECK(cudaMalloc(&gpu_ptr_, size_));
158 own_gpu_data_ =
true;
160 BASE_GPU_CHECK(cudaMemcpy(gpu_ptr_, cpu_ptr_, size_, cudaMemcpyDefault));
175 return (
const void*)cpu_ptr_;
186 own_cpu_data_ =
false;
193 return (
const void*)gpu_ptr_;
205 BASE_GPU_CHECK(cudaFree(gpu_ptr_));
209 own_gpu_data_ =
false;
235void SyncedMemory::async_gpu_push(
const cudaStream_t& stream) {
238 if (gpu_ptr_ ==
nullptr) {
239 BASE_GPU_CHECK(cudaMalloc(&gpu_ptr_, size_));
240 own_gpu_data_ =
true;
242 const cudaMemcpyKind put = cudaMemcpyHostToDevice;
243 BASE_GPU_CHECK(cudaMemcpyAsync(gpu_ptr_, cpu_ptr_, size_, put, stream));
249void SyncedMemory::check_device() {
251#ifdef PERCEPTION_DEBUG
254 CHECK_EQ(
device, device_);
255 if (gpu_ptr_ && own_gpu_data_) {
256 cudaPointerAttributes attributes;
257 BASE_GPU_CHECK(cudaPointerGetAttributes(&attributes, gpu_ptr_));
258 CHECK_EQ(attributes.device, device_);
void * mutable_gpu_data()
SyncedMemory(bool use_cuda)
void * mutable_cpu_data()
void set_gpu_data(void *data)
void set_cpu_data(void *data)
first check imutoantoffset saved in device
void PerceptionFreeHost(void *ptr, bool use_cuda)
void PerceptionMallocHost(void **ptr, size_t size, bool use_cuda)