我发现一个层可以用CPU(.cpp)或GPU(.cu)版本实现。例如,批量规范化层有两个源文件:batch_norm_layer.cpp
和batch_norm_layer.cu
。
当我编译代码时,我通过取消注释USE_CUDNN := 1
来选择CUDA模式。然后,当我使用批量规范化层时,CAFFE将执行.cu文件中的所有内容,而不从.cpp文件获取任何信息。我是对的吗?
我问过它,因为我不确定我的CPU实现的更正,但我确定GPU实现是正确的。因此,我不知道CPU代码中的任何错误都会影响我的GPU代码。感谢
答案 0 :(得分:2)
{。{1}}在.cpp代码中执行,因此您需要正确执行此操作。否则,你是对的(给你选择LayerSetup
),你的.cu代码应该为前进和后退传递。