从今天开始,我们来细致的分析一下caffe的源代码。(此系列仅分析caffe原始版本,对于caffe2不涉及,并且只分析各类实现的cpu版,对于gpu实现笔者精力和能力有限,暂不作分析)
分析源码之前,我们需要对caffe的代码结构有一定的了解,只有充分了解了源码的组织层次,我们才能有的放矢的阅读我们需要研究的部分。笔者之前也尝试过阅读caffe源码,但是那时候对于目录结构不甚了解,读起来犹如无头苍蝇,效果十分不好。直到最近先把代码的结构层次弄清楚了以后读起来才比较顺利,因此我先给大家详细的介绍一下caffe的代码结构。
1.整体结构
caffe的整体结构如下图所示
其中最重要的三个文件夹:include(各类头文件的存放,即.hpp部分),src(头文件对应的实现,即.cpp及.cu部分),tools(caffe提供的工具文件)。其中include文件下的目录组织和src下的目录组织基本一致。我们下面仅分析include部分以及tools部分
2.include文件夹
include文件夹下的目录组织如下图所示