Skip to content
This repository was archived by the owner on Aug 5, 2022. It is now read-only.

Commit f6d01ef

Browse files
committed
Merge remote-tracking branch 'remotes/internal/release_1.1.0'
2 parents f6a2a6b + 4bb950c commit f6d01ef

File tree

90 files changed

+31916
-2507
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

90 files changed

+31916
-2507
lines changed

CMakeLists.txt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@ endif()
1010
project(Caffe C CXX)
1111

1212
# ---[ Caffe version
13-
set(CAFFE_TARGET_VERSION "1.0.0-rc3" CACHE STRING "Caffe logical version")
14-
set(CAFFE_TARGET_SOVERSION "1.0.0-rc3" CACHE STRING "Caffe soname version")
13+
set(CAFFE_TARGET_VERSION "1.1.0" CACHE STRING "Caffe logical version")
14+
set(CAFFE_TARGET_SOVERSION "1.1.0" CACHE STRING "Caffe soname version")
1515
add_definitions(-DCAFFE_VERSION=${CAFFE_TARGET_VERSION})
1616

1717
# ---[ Using cmake scripts and modules
@@ -26,7 +26,7 @@ include(cmake/Summary.cmake)
2626
include(cmake/ConfigGen.cmake)
2727

2828
# ---[ Options
29-
caffe_option(CPU_ONLY "Build Caffe without CUDA support" OFF) # TODO: rename to USE_CUDA
29+
caffe_option(CPU_ONLY "Build Caffe without CUDA support" ON) # TODO: rename to USE_CUDA
3030
caffe_option(USE_OPENMP "Build Caffe with OpenMP support" ON )
3131
caffe_option(USE_CUDNN "Build Caffe with cuDNN library support" ON IF NOT CPU_ONLY)
3232
caffe_option(USE_MKL2017_AS_DEFAULT_ENGINE "Use MKL2017 primitives for supported layers" OFF)

Makefile

Lines changed: 20 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,9 @@ else
6060
OTHER_BUILD_DIR := $(DEBUG_BUILD_DIR)
6161
endif
6262

63+
ifeq ($(CAFFE_PER_LAYER_TIMINGS), 1)
64+
COMMON_FLAGS += -DCAFFE_PER_LAYER_TIMINGS
65+
endif
6366

6467
#################### MLSL ####################
6568

@@ -71,17 +74,12 @@ endif
7174

7275
RETURN_STRING=$(shell ./external/mlsl/prepare_mlsl.sh)
7376
MLSL_ROOT=$(firstword $(RETURN_STRING))
74-
MLSL_LDFLAGS=$(lastword $(RETURN_STRING))
77+
MLSL_LDFLAGS:=-l$(lastword $(RETURN_STRING)) -Wl,-rpath,$(MLSL_ROOT)/intel64/lib
7578
COMMON_FLAGS += -DUSE_MLSL=1
7679
LIBRARIES += mlsl
7780
INCLUDE_DIRS += $(MLSL_ROOT)/intel64/include
7881
LIBRARY_DIRS += $(MLSL_ROOT)/intel64/lib
79-
IGNORE := $(shell bash -c "source $(MLSL_ROOT)/intel64/bin/mlslvars.sh; env | sed 's/=/:=/' | sed 's/^/export /' > make_mlsl_env")
80-
include make_mlsl_env
81-
82-
ifeq ($(CAFFE_PER_LAYER_TIMINGS), 1)
83-
COMMON_FLAGS += -DCAFFE_PER_LAYER_TIMINGS
84-
endif
82+
COMMON_FLAGS += -DFOUNDED_MLSL_ROOT=$(MLSL_ROOT)
8583

8684
ifeq ($(CAFFE_MLSL_SHUFFLE), 1)
8785
COMMON_FLAGS += -DCAFFE_MLSL_SHUFFLE
@@ -103,8 +101,8 @@ LIBRARY_NAME := $(PROJECT)
103101
LIB_BUILD_DIR := $(BUILD_DIR)/lib
104102
STATIC_NAME := $(LIB_BUILD_DIR)/lib$(LIBRARY_NAME).a
105103
DYNAMIC_VERSION_MAJOR := 1
106-
DYNAMIC_VERSION_MINOR := 0
107-
DYNAMIC_VERSION_REVISION := 0-rc3
104+
DYNAMIC_VERSION_MINOR := 1
105+
DYNAMIC_VERSION_REVISION := 0
108106
DYNAMIC_NAME_SHORT := lib$(LIBRARY_NAME).so
109107
#DYNAMIC_SONAME_SHORT := $(DYNAMIC_NAME_SHORT).$(DYNAMIC_VERSION_MAJOR)
110108
DYNAMIC_VERSIONED_NAME_SHORT := $(DYNAMIC_NAME_SHORT).$(DYNAMIC_VERSION_MAJOR).$(DYNAMIC_VERSION_MINOR).$(DYNAMIC_VERSION_REVISION)
@@ -336,6 +334,9 @@ endif
336334
ifdef CUSTOM_CXX
337335
CXX := $(CUSTOM_CXX)
338336
endif
337+
ifdef CUSTOM_CC
338+
CC := $(CUSTOM_CC)
339+
endif
339340

340341
# Linux
341342
ifeq ($(LINUX), 1)
@@ -492,6 +493,11 @@ ifeq ($(DISABLE_BN_FOLDING), 1)
492493
COMMON_FLAGS += -DDISABLE_BN_FOLDING
493494
endif
494495

496+
# Disable the conv/eltwise/relu layer fusion
497+
ifeq ($(DISABLE_CONV_SUM_FUSION), 1)
498+
COMMON_FLAGS += -DDISABLE_CONV_SUM_FUSION
499+
endif
500+
495501
# Performance monitoring
496502
ifeq ($(PERFORMANCE_MONITORING), 1)
497503
CXXFLAGS += -DPERFORMANCE_MONITORING
@@ -772,7 +778,7 @@ $(ALL_BUILD_DIRS): | $(BUILD_DIR_LINK)
772778

773779
$(DYNAMIC_NAME): $(OBJS) | $(LIB_BUILD_DIR)
774780
@ echo LD -o $@
775-
$(Q)$(CXX) -shared -o $@ $(OBJS) $(VERSIONFLAGS) $(BOOST_LDFLAGS) $(LINKFLAGS) $(MKL_LDFLAGS) $(MKLDNN_LDFLAGS) $(DLCP_LDFLAGS) $(CXX_HARDENING_FLAGS) $(LINKER_SHARED_HARDENING_FLAGS) $(LDFLAGS)
781+
$(Q)$(CXX) -shared -o $@ $(OBJS) $(VERSIONFLAGS) $(BOOST_LDFLAGS) $(LINKFLAGS) $(MKL_LDFLAGS) $(MLSL_LDFLAGS) $(MKLDNN_LDFLAGS) $(DLCP_LDFLAGS) $(CXX_HARDENING_FLAGS) $(LINKER_SHARED_HARDENING_FLAGS) $(LDFLAGS)
776782
@ cd $(BUILD_DIR)/lib; rm -f $(DYNAMIC_NAME_SHORT); ln -s $(DYNAMIC_VERSIONED_NAME_SHORT) $(DYNAMIC_NAME_SHORT)
777783

778784
$(STATIC_NAME): $(OBJS) | $(LIB_BUILD_DIR)
@@ -804,7 +810,7 @@ $(TEST_ALL_BIN): $(TEST_MAIN_SRC) $(TEST_OBJS) $(GTEST_OBJS) \
804810
| $(DYNAMIC_NAME) $(TEST_BIN_DIR)
805811
@ echo CXX/LD -o $@ $<
806812
$(Q)$(CXX) -std=c++11 $(TEST_MAIN_SRC) $(TEST_OBJS) $(GTEST_OBJS) \
807-
-o $@ $(BOOST_LDFLAGS) $(LINKFLAGS) $(MKL_LDFLAGS) $(MKLDNN_LDFLAGS) $(DLCP_LDFLAGS) $(CXX_HARDENING_FLAGS) $(LINKER_EXEC_HARDENING_FLAGS) $(LDFLAGS) -l$(LIBRARY_NAME) -Wl,-rpath,$(ORIGIN)/../lib
813+
-o $@ $(BOOST_LDFLAGS) $(LINKFLAGS) $(MKL_LDFLAGS) $(MLSL_LDFLAGS) $(MKLDNN_LDFLAGS) $(DLCP_LDFLAGS) $(CXX_HARDENING_FLAGS) $(LINKER_EXEC_HARDENING_FLAGS) $(LDFLAGS) -l$(LIBRARY_NAME) -Wl,-rpath,$(ORIGIN)/../lib
808814

809815
$(TEST_CU_BINS): $(TEST_BIN_DIR)/%.testbin: $(TEST_CU_BUILD_DIR)/%.o \
810816
$(GTEST_OBJS) | $(DYNAMIC_NAME) $(TEST_BIN_DIR)
@@ -816,7 +822,7 @@ $(TEST_CXX_BINS): $(TEST_BIN_DIR)/%.testbin: $(TEST_CXX_BUILD_DIR)/%.o \
816822
$(GTEST_OBJS) | $(DYNAMIC_NAME) $(TEST_BIN_DIR)
817823
@ echo LD $<
818824
$(Q)$(CXX) -std=c++11 $(TEST_MAIN_SRC) $< $(GTEST_OBJS) \
819-
-o $@ $(BOOST_LDFLAGS) $(LINKFLAGS) $(MKL_LDFLAGS) $(MKLDNN_LDFLAGS) $(DLCP_LDFLAGS) $(CXX_HARDENING_FLAGS) $(LINKER_EXEC_HARDENING_FLAGS) $(LDFLAGS) -l$(LIBRARY_NAME) -Wl,-rpath,$(ORIGIN)/../lib
825+
-o $@ $(BOOST_LDFLAGS) $(LINKFLAGS) $(MKL_LDFLAGS) $(MLSL_LDFLAGS) $(MKLDNN_LDFLAGS) $(DLCP_LDFLAGS) $(CXX_HARDENING_FLAGS) $(LINKER_EXEC_HARDENING_FLAGS) $(LDFLAGS) -l$(LIBRARY_NAME) -Wl,-rpath,$(ORIGIN)/../lib
820826

821827
# Target for extension-less symlinks to tool binaries with extension '*.bin'.
822828
$(TOOL_BUILD_DIR)/%: $(TOOL_BUILD_DIR)/%.bin | $(TOOL_BUILD_DIR)
@@ -825,12 +831,12 @@ $(TOOL_BUILD_DIR)/%: $(TOOL_BUILD_DIR)/%.bin | $(TOOL_BUILD_DIR)
825831

826832
$(TOOL_BINS): %.bin : %.o | $(DYNAMIC_NAME)
827833
@ echo CXX/LD -o $@
828-
$(Q)$(CXX) $< -o $@ $(BOOST_LDFLAGS) $(LINKFLAGS) $(MKL_LDFLAGS) $(MKLDNN_LDFLAGS) $(DLCP_LDFLAGS) $(CXX_HARDENING_FLAGS) $(LINKER_EXEC_HARDENING_FLAGS) -l$(LIBRARY_NAME) $(LDFLAGS) \
834+
$(Q)$(CXX) $< -o $@ $(BOOST_LDFLAGS) $(LINKFLAGS) $(MKL_LDFLAGS) $(MLSL_LDFLAGS) $(MKLDNN_LDFLAGS) $(DLCP_LDFLAGS) $(CXX_HARDENING_FLAGS) $(LINKER_EXEC_HARDENING_FLAGS) -l$(LIBRARY_NAME) $(LDFLAGS) \
829835
-Wl,-rpath,$(ORIGIN)/../lib
830836

831837
$(EXAMPLE_BINS): %.bin : %.o | $(DYNAMIC_NAME)
832838
@ echo CXX/LD -o $@
833-
$(Q)$(CXX) $< -o $@ $(BOOST_LDFLAGS) $(LINKFLAGS) $(MKL_LDFLAGS) $(MKLDNN_LDFLAGS) $(DLCP_LDFLAGS) $(CXX_HARDENING_FLAGS) $(LINKER_EXEC_HARDENING_FLAGS) -l$(LIBRARY_NAME) $(LDFLAGS) \
839+
$(Q)$(CXX) $< -o $@ $(BOOST_LDFLAGS) $(LINKFLAGS) $(MKL_LDFLAGS) $(MLSL_LDFLAGS) $(MKLDNN_LDFLAGS) $(DLCP_LDFLAGS) $(CXX_HARDENING_FLAGS) $(LINKER_EXEC_HARDENING_FLAGS) -l$(LIBRARY_NAME) $(LDFLAGS) \
834840
-Wl,-rpath,$(ORIGIN)/../../lib
835841

836842
proto: $(PROTO_GEN_CC) $(PROTO_GEN_HEADER)

Makefile.config.example

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,8 +76,11 @@ USE_MKLDNN_AS_DEFAULT_ENGINE := 1
7676
# already.
7777
# BOOST_ROOT :=
7878

79-
# Use remove batch norm optimization to boost inferrence
79+
# Use remove batch norm optimization to boost inference
8080
DISABLE_BN_FOLDING := 0
81+
82+
#Use conv/eltwise/relu layer fusion to boost inference.
83+
DISABLE_CONV_SUM_FUSION := 0
8184
# Intel(r) Machine Learning Scaling Library (uncomment to build
8285
# with MLSL for multi-node training)
8386
# USE_MLSL :=1

Makefile.dlcp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ endif
4242
endif
4343

4444
ifeq ($(USE_MLSL), 1)
45+
ifneq ($(ENABLE_WEIGHT_GRAD_COMPRESSION), 0)
4546
ifeq ($(origin DLCPROOT), environment)
4647
dlcp: dlcproot_set
4748
else
@@ -53,6 +54,10 @@ dlcp:
5354
endif
5455
endif
5556
else
57+
dlcp:
58+
@echo "disabling weight grad compression if ENABLE_WEIGHT_GRAD_COMPRESSION is set to 0"
59+
endif
60+
else
5661
dlcp:
5762
@echo "disabling weight grad compression if USE_MLSL is not 1"
5863
endif

cmake/Dependencies.cmake

Lines changed: 26 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,10 @@ if(USE_OPENCV)
9494
add_definitions(-DUSE_OPENCV)
9595
endif()
9696

97+
if(CAFFE_PER_LAYER_TIMINGS)
98+
add_definitions("-DCAFFE_PER_LAYER_TIMINGS")
99+
endif()
100+
97101
# ---[ MLSL
98102
if(USE_MLSL)
99103
if (NOT CPU_ONLY)
@@ -116,13 +120,11 @@ if(USE_MLSL)
116120
endif()
117121
message(STATUS "Machine Learning Scaling Library (MLSL) found (${MLSL_ROOT}/intel64)")
118122
add_definitions("-DUSE_MLSL=1")
123+
add_definitions("-DFOUNDED_MLSL_ROOT=${MLSL_ROOT}")
119124
include_directories(SYSTEM "${MLSL_ROOT}/intel64/include")
120125
link_directories(SYSTEM "${MLSL_ROOT}/intel64/lib")
121126
list(APPEND Caffe_LINKER_LIBS mlsl)
122127

123-
if(CAFFE_PER_LAYER_TIMINGS)
124-
add_definitions("-DCAFFE_PER_LAYER_TIMINGS")
125-
endif()
126128
if(CAFFE_MLSL_SHUFFLE)
127129
add_definitions("-DCAFFE_MLSL_SHUFFLE")
128130
endif()
@@ -134,28 +136,30 @@ endif()
134136

135137
# ---| DLCP
136138
if(USE_MLSL)
137-
if(DEFINED ENV{DLCPROOT})
138-
set(DLCPROOT_DIR $ENV{DLCPROOT})
139-
if(NOT ${DLCPROOT_DIR} STREQUAL "")
140-
set(DLCPROOT_INCLUDE_DIR "${DLCPROOT_DIR}/include/")
141-
set(DLCPROOT_LIB_DIR "${DLCPROOT_DIR}/lib/")
142-
if(EXISTS ${DLCPROOT_INCLUDE_DIR}/dl_compression.h AND EXISTS ${DLCPROOT_LIB_DIR}/libdlcomp.so)
143-
message(STATUS "Found DLCP: ${DLCPROOT_DIR}")
139+
if (ENABLE_WEIGHT_GRAD_COMPRESSION OR NOT DEFINED ENABLE_WEIGHT_GRAD_COMPRESSION)
140+
if(DEFINED ENV{DLCPROOT})
141+
set(DLCPROOT_DIR $ENV{DLCPROOT})
142+
if(NOT ${DLCPROOT_DIR} STREQUAL "")
143+
set(DLCPROOT_INCLUDE_DIR "${DLCPROOT_DIR}/include/")
144+
set(DLCPROOT_LIB_DIR "${DLCPROOT_DIR}/lib/")
145+
if(EXISTS ${DLCPROOT_INCLUDE_DIR}/dl_compression.h AND EXISTS ${DLCPROOT_LIB_DIR}/libdlcomp.so)
146+
message(STATUS "Found DLCP: ${DLCPROOT_DIR}")
147+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DENABLE_WEIGHT_GRAD_COMPRESSION")
148+
list(APPEND Caffe_LINKER_LIBS "${DLCPROOT_LIB_DIR}/libdlcomp.so")
149+
include_directories(SYSTEM ${DLCP_INCLUDE_DIR})
150+
else()
151+
message(STATUS "DLCP not found. DLCP_INCLUDE_DIR = ${DLCPROOT_INCLUDE_DIR} DLCP_LIB_DIR = ${DLCPROOT_LIB_DIR}")
152+
message(WARNING "weight grad compression is disabled.")
153+
endif()
154+
endif()
155+
else()
156+
Download_DLCP()
157+
if(DLCP_CXX)
144158
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DENABLE_WEIGHT_GRAD_COMPRESSION")
145-
list(APPEND Caffe_LINKER_LIBS "${DLCPROOT_LIB_DIR}/libdlcomp.so")
146-
include_directories(SYSTEM ${DLCP_INCLUDE_DIR})
147-
else()
148-
message(STATUS "DLCP not found. DLCP_INCLUDE_DIR = ${DLCPROOT_INCLUDE_DIR} DLCP_LIB_DIR = ${DLCPROOT_LIB_DIR}")
149-
message(WARNING "weight grad compression is disabled.")
159+
list(APPEND Caffe_LINKER_LIBS "${DLCP_LIBDIR}/libdlcomp.so")
160+
include_directories(SYSTEM ${DLCP_INCLDIR})
150161
endif()
151162
endif()
152-
else()
153-
Download_DLCP()
154-
if(DLCP_CXX)
155-
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DENABLE_WEIGHT_GRAD_COMPRESSION")
156-
list(APPEND Caffe_LINKER_LIBS "${DLCP_LIBDIR}/libdlcomp.so")
157-
include_directories(SYSTEM ${DLCP_INCLDIR})
158-
endif()
159163
endif()
160164
endif()
161165

cmake/Misc.cmake

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,12 @@ if(DISABLE_BN_FOLDING)
1010
message(STATUS "Bn folding is disabled!")
1111
add_definitions("-DDISABLE_BN_FOLDING")
1212
endif()
13+
14+
if(DISABLE_CONV_SUM_FUSION)
15+
message(STATUS "conv/eltwise/relu fusion is disabled!")
16+
add_definitions("-DDISABLE_CONV_SUM_FUSION")
17+
endif()
18+
1319
# --[ If user doesn't specify build type then assume release
1420
if("${CMAKE_BUILD_TYPE}" STREQUAL "")
1521
set(CMAKE_BUILD_TYPE Release)

docker/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ docker run -ti caffe:cpu caffe --version
1717
```
1818
which should show a message like:
1919
```
20-
caffe version 1.0.0-rc3
20+
caffe version 1.1.0
2121
```
2222

2323
One can also build and run the Caffe tests in the image using:

examples/pycaffe/tune_model.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,13 @@ def genOptimalModel(net, mkldnn_direct_time_map, mkldnn_winograd_time_map, optim
1010
for index in range(0, len(net.layer)):
1111
l = net.layer[index]
1212
if l.type == "Convolution":
13-
if mkldnn_winograd_time_map[l.name] < mkldnn_direct_time_map[l.name]:
13+
if len(l.convolution_param.kernel_size) == 0:
14+
continue
15+
kernel_size = l.convolution_param.kernel_size[0]
16+
stride = 1
17+
if len(l.convolution_param.stride) != 0:
18+
stride = l.convolution_param.stride[0]
19+
if mkldnn_winograd_time_map[l.name] < mkldnn_direct_time_map[l.name] and kernel_size == 3 and stride == 1 and l.convolution_param.num_output % 16 ==0:
1420
l.convolution_param.conv_algorithm = "winograd"
1521
else:
1622
l.convolution_param.conv_algorithm = "direct"

external/mkl/prepare_mkl.sh

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -74,12 +74,11 @@ echo $VERSION_LINE # Return Version Line
7474
# MKL
7575
DST=`dirname $0`
7676
OMP=0
77-
VERSION_MATCH=20171007
78-
ARCHIVE_BASENAME=mklml_lnx_2018.0.1.20171007.tgz
77+
VERSION_MATCH=20171227
78+
ARCHIVE_BASENAME=mklml_lnx_2018.0.1.20171227.tgz
7979
MKL_CONTENT_DIR=`echo $ARCHIVE_BASENAME | rev | cut -d "." -f 2- | rev`
80-
GITHUB_RELEASE_TAG=1.0.6
8180

82-
MKLURL="https://github.com/intel/caffe/releases/download/$GITHUB_RELEASE_TAG/$ARCHIVE_BASENAME"
81+
MKLURL="https://github.com/01org/mkl-dnn/releases/download/v0.12/$ARCHIVE_BASENAME"
8382
# there are diffrent MKL lib to be used for GCC and for ICC
8483
reg='^[0-9]+$'
8584
VERSION_LINE=`GetVersionName $MKLROOT`

include/caffe/filler.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -230,7 +230,7 @@ template <typename Dtype> class MSRAFiller : public Filler<Dtype> {
230230
FillerParameter_VarianceNorm_FAN_OUT) {
231231
n = fan_out;
232232
}
233-
Dtype std = sqrt(Dtype(2) / n);
233+
Dtype std = this->filler_param_.scale() * sqrt(Dtype(2) / n);
234234
caffe_rng_gaussian<Dtype>(blob->count(), Dtype(0), std,
235235
blob->mutable_cpu_data());
236236
CHECK_EQ(this->filler_param_.sparse(), -1)

include/caffe/layers/base_conv_layer.hpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,8 +63,9 @@ class BaseConvolutionLayer : public Layer<Dtype> {
6363

6464
virtual inline int MinBottomBlobs() const { return 1; }
6565
virtual inline int MinTopBlobs() const { return 1; }
66+
#ifdef DISABLE_CONV_SUM_FUSION
6667
virtual inline bool EqualNumBottomTopBlobs() const { return true; }
67-
68+
#endif
6869
protected:
6970
// Split Reshape into two parts
7071
// Part 1 for normal blob reshape

0 commit comments

Comments
 (0)