template <typename Dtype>
void caffe_copy(const int N, const Dtype *X, Dtype *Y);
-void caffe_memcpy(const size_t N, const void *X, void *Y);
+void caffe_gpu_memcpy(const size_t N, const void *X, void *Y);
template <typename Dtype>
void caffe_set(const int N, const Dtype alpha, Dtype *X);
CaffeMallocHost(&cpu_ptr_, size_);
own_cpu_data_ = true;
}
- CUDA_CHECK(cudaMemcpy(cpu_ptr_, gpu_ptr_, size_, cudaMemcpyDefault));
+ caffe_gpu_memcpy(size_, gpu_ptr_, cpu_ptr_);
head_ = SYNCED;
break;
case HEAD_AT_CPU:
if (gpu_ptr_ == NULL) {
CUDA_CHECK(cudaMalloc(&gpu_ptr_, size_));
}
- CUDA_CHECK(cudaMemcpy(gpu_ptr_, cpu_ptr_, size_, cudaMemcpyDefault));
+ caffe_gpu_memcpy(size_, cpu_ptr_, gpu_ptr_);
head_ = SYNCED;
break;
case HEAD_AT_GPU:
EXPECT_EQ(mem.head(), SyncedMemory::SYNCED);
// check if values are the same
char* recovered_value = new char[10];
- caffe_memcpy(10, gpu_data, recovered_value);
+ caffe_gpu_memcpy(10, gpu_data, recovered_value);
for (int i = 0; i < mem.size(); ++i) {
EXPECT_EQ((reinterpret_cast<char*>(recovered_value))[i], 1);
}
gpu_data = mem.gpu_data();
EXPECT_EQ(mem.head(), SyncedMemory::SYNCED);
// check if values are the same
- caffe_memcpy(10, gpu_data, recovered_value);
+ caffe_gpu_memcpy(10, gpu_data, recovered_value);
for (int i = 0; i < mem.size(); ++i) {
EXPECT_EQ((reinterpret_cast<char*>(recovered_value))[i], 2);
}
template void caffe_copy<float>(const int N, const float* X, float* Y);
template void caffe_copy<double>(const int N, const double* X, double* Y);
-void caffe_memcpy(const size_t N, const void* X, void* Y) {
+void caffe_gpu_memcpy(const size_t N, const void* X, void* Y) {
if (X != Y) {
- if (Caffe::mode() == Caffe::GPU) {
- CUDA_CHECK(cudaMemcpy(Y, X, N, cudaMemcpyDefault));
- } else {
- memcpy(Y, X, N);
- }
+ CUDA_CHECK(cudaMemcpy(Y, X, N, cudaMemcpyDefault));
}
}