0

私は自分のカフェ プログラムで cudnn アクセラレーションを使用しています。最初に cudnn 4 を使用し、正常に動作していますが、cudnn をバージョン 5.0 に更新すると、pow 関数が動作しません。呼び出し関数は、batch_norm レイヤーにあります。

caffe_gpu_powx(variance_.count(), variance_.gpu_data(), Dtype(0.5), variance_.mutable_gpu_data());

また、呼び出し後のデータは変更されません。pow 関数は、caffe github banch と同じように、次のように定義されます。

template <typename Dtype>
\__global__ void powx_kernel(const int n, const Dtype* a,
    const Dtype alpha, Dtype* y)
 {
     CUDA_KERNEL_LOOP(index, n)
     {           
         y[index] = pow(a[index], alpha);  
     }  
}

template <>
void caffe_gpu_powx<float>(const int N, const float* a,
    const float alpha, float* y) {
    // NOLINT_NEXT_LINE(whitespace/operators)
    powx_kernel<float><<<CAFFE_GET_BLOCKS(N), CAFFE_CUDA_NUM_THREADS>>>(
      N, a, alpha, y);
}
4

1 に答える 1

1

TITAN X で最初にコード生成を「compute_52,sm_52」に設定したのを間違えましたが、現在は下位の GPU を「compute_20,sm_20」に設定する必要があります。そして、今はうまくいっています。

于 2016-11-10T08:39:10.683 に答える