const int n = this->blob_bottom_->count();
const TypeParam* bottom_data = this->blob_bottom_->cpu_data();
TypeParam* top_data = this->blob_top_->mutable_cpu_data();
+ Caffe::set_mode(Caffe::CPU);
caffe_copy(n, bottom_data, top_data);
for (int i = 0; i < n; ++i) {
EXPECT_EQ(bottom_data[i], top_data[i]);
const int n = this->blob_bottom_->count();
const TypeParam* bottom_data = this->blob_bottom_->gpu_data();
TypeParam* top_data = this->blob_top_->mutable_gpu_data();
+ Caffe::set_mode(Caffe::GPU);
caffe_copy(n, bottom_data, top_data);
bottom_data = this->blob_bottom_->cpu_data();
top_data = this->blob_top_->mutable_cpu_data();
template <typename Dtype>
void caffe_copy(const int N, const Dtype* X, Dtype* Y) {
if (X != Y) {
- CUDA_CHECK(cudaMemcpy(Y, X, sizeof(Dtype) * N, cudaMemcpyDefault));
+ if (Caffe::mode() == Caffe::CPU) {
+ memcpy(Y, X, sizeof(Dtype) * N);
+ } else {
+ CUDA_CHECK(cudaMemcpy(Y, X, sizeof(Dtype) * N, cudaMemcpyDefault));
+ }
}
}
void caffe_memcpy(const size_t N, const void* X, void* Y) {
if (X != Y) {
- CUDA_CHECK(cudaMemcpy(Y, X, N, cudaMemcpyDefault));
+ if (Caffe::mode() == Caffe::CPU) {
+ memcpy(Y, X, N);
+ } else {
+ CUDA_CHECK(cudaMemcpy(Y, X, N, cudaMemcpyDefault));
+ }
}
}