Dtype Blob<Dtype>::asum_diff() const {
  if (!diff_) { return 0; }
  switch (diff_->head()) {
  case SyncedMemory::HEAD_AT_CPU:
    return caffe_cpu_asum(count_, cpu_diff());
  case SyncedMemory::HEAD_AT_GPU:
  case SyncedMemory::SYNCED:
#ifndef CPU_ONLY
  {
    Dtype asum;
    caffe_gpu_asum(count_, gpu_diff(), &asum);
    return asum;
  }
#else
    NO_GPU;
#endif
  case SyncedMemory::UNINITIALIZED:
    return 0;
  default:
    LOG(FATAL) << "Unknown SyncedMemory head state: " << diff_->head();
  }
  return 0;
}
Example #2
0
Dtype Blob<Dtype>::sumsq_diff() const {
	Dtype sumsq;
	const Dtype* diff;
	if (!diff_) { return 0; }
	switch (diff_->head()) {
	case SyncedMemory::HEAD_AT_CPU:
		diff = cpu_diff();
		sumsq = dragon_cpu_dot(count_, diff, diff);
		break;
	case SyncedMemory::HEAD_AT_GPU:
	case SyncedMemory::SYNCED:
#ifndef CPU_ONLY
		diff = gpu_diff();
		sumsq = dragon_gpu_dot(count_, diff, diff);
		break;
#endif
	case SyncedMemory::UNINITIALIZED:
		return 0;
	default:
		LOG(FATAL) << "Unknown SyncedMemory head state: " << data_->head();
	}
	return sumsq;
}
Example #3
0
 inline Dtype diff_at(const vector<int>& index) const {
   return cpu_diff()[offset(index)];
 }
Example #4
0
 inline Dtype diff_at(const int n, const int c, const int h,
     const int w) const {
   return cpu_diff()[offset(n, c, h, w)];
 }
Example #5
0
 inline Dtype diff_at(const int n, const int c, const int h,
     const int w) const {
   return *(cpu_diff() + offset(n, c, h, w));
 }
Example #6
0
 inline Dtype diff_at(const int_tp n, const int_tp c, const int_tp h,
     const int_tp w) const {
   return cpu_diff()[offset(n, c, h, w)];
 }