template <typename Dtype>
void caffe_copy(const int N, const Dtype *X, Dtype *Y);
-void caffe_copy(const size_t N, const void *X, void *Y);
+void caffe_memcpy(const size_t N, const void *X, void *Y);
template <typename Dtype>
void caffe_set(const int N, const Dtype alpha, Dtype *X);
count, top_diff, mask, uint_thres_, scale_, bottom_diff);
CUDA_POST_KERNEL_CHECK;
} else {
- caffe_gpu_copy(top[0]->count(), top_diff, bottom_diff);
+ caffe_copy(top[0]->count(), top_diff, bottom_diff);
}
}
}
CaffeMallocHost(&cpu_ptr_, size_);
own_cpu_data_ = true;
}
- caffe_copy(size_, gpu_ptr_, cpu_ptr_);
+ caffe_memcpy(size_, gpu_ptr_, cpu_ptr_);
head_ = SYNCED;
break;
case HEAD_AT_CPU:
if (gpu_ptr_ == NULL) {
CUDA_CHECK(cudaMalloc(&gpu_ptr_, size_));
}
- caffe_copy(size_, cpu_ptr_, gpu_ptr_);
+ caffe_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_copy(size_t(10), gpu_data, reinterpret_cast<void*>(recovered_value));
+ caffe_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_copy(size_t(10), gpu_data, reinterpret_cast<void*>(recovered_value));
+ caffe_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<int>(const int N, const int* X, int* Y) {
- if (X != Y) {
- CUDA_CHECK(cudaMemcpy(Y, X, sizeof(int) * N, cudaMemcpyDefault));
- }
-}
-
-template <>
-void caffe_copy<unsigned int>(const int N, const unsigned int* X,
- unsigned int* Y) {
- if (X != Y) {
- CUDA_CHECK(cudaMemcpy(Y, X, sizeof(unsigned int) * N, cudaMemcpyDefault));
- }
-}
-
-template <>
-void caffe_copy<float>(const int N, const float* X, float* Y) {
+template <typename Dtype>
+void caffe_copy(const int N, const Dtype* X, Dtype* Y) {
if (X != Y) {
- CUDA_CHECK(cudaMemcpy(Y, X, sizeof(float) * N, cudaMemcpyDefault));
+ CUDA_CHECK(cudaMemcpy(Y, X, sizeof(Dtype) * N, cudaMemcpyDefault));
}
}
-template <>
-void caffe_copy<double>(const int N, const double* X, double* Y) {
- CUDA_CHECK(cudaMemcpy(Y, X, sizeof(double) * N, cudaMemcpyDefault));
-}
+template void caffe_copy<int>(const int N, const int* X, int* Y);
+template void caffe_copy<unsigned int>(const int N, const unsigned int* X,
+ unsigned int* Y);
+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_copy(const size_t N, const void* X, void* Y) {
+void caffe_memcpy(const size_t N, const void* X, void* Y) {
if (X != Y) {
CUDA_CHECK(cudaMemcpy(Y, X, N, cudaMemcpyDefault));
}