仅编译caffe中的一个图层文件

时间:2018-01-16 07:25:50

标签: c++ makefile build caffe

当我们在caffe中开发了一个新层,new_layer.cppnew_layer.cunew.layer.hpp时,我们必须重新编译caffe,是否可以只编译这个新的图层文件,比如对原始库的更新,还是我们必须重新编译整个库?有人可以给我一个暗示吗?

ADD:实际上我从github上的某个人的实现中下载了图层文件:https://github.com/farmingyard/ShuffleNet.cpp .cu .hpp个文件,我放.cpp和{在.cu中{1}},将caffe/src/caffe/layers放入.hpp,然后将caffe/include/caffe/layers/添加为:

caffe.proto

也:

message LayerParameter {
...
optional ShuffleChannelParameter shuffle_channel_param = 164;
}

在proto文件的末尾,然后我在caffe根目录中调用message ShuffleChannelParameter { optional uint32 group = 1[default = 1]; // The number of group } 然后调用make clean,没有错误,我检查了

make all

CXX src/caffe/layers/shuffle_channel_layer.cpp

和(我不知道这是否意味着原型文件已被重新编译)

NVCC src/caffe/layers/shuffle_channel_layer.cu

然后CXX .build_release/src/caffe/proto/caffe.pb.cc ,它给出了:

make proto

然后我调用make: Nothing to be done for proto ,没有错误提示,编译成功。然后我使用作者编写的示例原型文件文件,使用新图层进行示例网络,然后按照错误提示:

make pycaffe

完整Message type "caffe.LayerParameter" has no field named "shuffle_channel_param".

LayerParameter

1 个答案:

答案 0 :(得分:1)

使用make进行编译时,make知道它已编译的源以及自上次构建以来发生了哪些更改。如果您只进行本地更改,make将仅编译/链接已更改的源以及受其影响的内容(更改头文件可能需要编译#include此标头的其他源。
也就是说,您不需要做任何特别的事情,只需继续使用make 如果你make clean删除所有编译对象并强制make从头开始重新编译整个项目。