void Blob<Dtype>::scale_diff(Dtype scale_factor) { Dtype* diff; if (!diff_) { return; } switch (diff_->head()) { case SyncedMemory::SYNCED_PRV: case SyncedMemory::HEAD_AT_PRV: diff = mutable_prv_diff(); caffe_scal(prv_diff_count(), scale_factor, diff); break; case SyncedMemory::HEAD_AT_CPU: diff = mutable_cpu_diff(); caffe_scal(count_, scale_factor, diff); return; case SyncedMemory::HEAD_AT_GPU: case SyncedMemory::SYNCED: #ifndef CPU_ONLY diff = mutable_gpu_diff(); caffe_gpu_scal(count_, scale_factor, diff); return; #else NO_GPU; #endif case SyncedMemory::UNINITIALIZED: return; default: LOG(FATAL) << "Unknown SyncedMemory head state: " << diff_->head(); } }
void Blob<Dtype>::scale_diff(Dtype scale_factor) { Dtype* diff; if (!diff_) { return; } switch (diff_->head()) { case SyncedMemory::HEAD_AT_CPU: { diff = mutable_cpu_diff(); caffe_scal(count_, scale_factor, diff); return; } case SyncedMemory::HEAD_AT_GPU: case SyncedMemory::SYNCED: { #ifndef CPU_ONLY diff = mutable_gpu_diff(); if (device_->backend() == Backend::BACKEND_CUDA) { #ifdef USE_CUDA caffe_gpu_scal(count_, scale_factor, diff); #endif } else { #ifdef USE_GREENTEA greentea_gpu_scal(device_->id(), count_, scale_factor, (cl_mem) diff, 0); #endif } return; #else NO_GPU; #endif } case SyncedMemory::UNINITIALIZED: return; default: LOG(FATAL)<< "Unknown SyncedMemory head state: " << diff_->head(); } }