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

Commit

Permalink
Merge remote-tracking branch 'remotes/internal/release_1.1.0'
Browse files Browse the repository at this point in the history
  • Loading branch information
daisyden committed Jan 13, 2018
2 parents f6a2a6b + 4bb950c commit f6d01ef
Show file tree
Hide file tree
Showing 90 changed files with 31,916 additions and 2,507 deletions.
6 changes: 3 additions & 3 deletions CMakeLists.txt
Expand Up @@ -10,8 +10,8 @@ endif()
project(Caffe C CXX)

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

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

# ---[ Options
caffe_option(CPU_ONLY "Build Caffe without CUDA support" OFF) # TODO: rename to USE_CUDA
caffe_option(CPU_ONLY "Build Caffe without CUDA support" ON) # TODO: rename to USE_CUDA
caffe_option(USE_OPENMP "Build Caffe with OpenMP support" ON )
caffe_option(USE_CUDNN "Build Caffe with cuDNN library support" ON IF NOT CPU_ONLY)
caffe_option(USE_MKL2017_AS_DEFAULT_ENGINE "Use MKL2017 primitives for supported layers" OFF)
Expand Down
34 changes: 20 additions & 14 deletions Makefile
Expand Up @@ -60,6 +60,9 @@ else
OTHER_BUILD_DIR := $(DEBUG_BUILD_DIR)
endif

ifeq ($(CAFFE_PER_LAYER_TIMINGS), 1)
COMMON_FLAGS += -DCAFFE_PER_LAYER_TIMINGS
endif

#################### MLSL ####################

Expand All @@ -71,17 +74,12 @@ endif

RETURN_STRING=$(shell ./external/mlsl/prepare_mlsl.sh)
MLSL_ROOT=$(firstword $(RETURN_STRING))
MLSL_LDFLAGS=$(lastword $(RETURN_STRING))
MLSL_LDFLAGS:=-l$(lastword $(RETURN_STRING)) -Wl,-rpath,$(MLSL_ROOT)/intel64/lib
COMMON_FLAGS += -DUSE_MLSL=1
LIBRARIES += mlsl
INCLUDE_DIRS += $(MLSL_ROOT)/intel64/include
LIBRARY_DIRS += $(MLSL_ROOT)/intel64/lib
IGNORE := $(shell bash -c "source $(MLSL_ROOT)/intel64/bin/mlslvars.sh; env | sed 's/=/:=/' | sed 's/^/export /' > make_mlsl_env")
include make_mlsl_env

ifeq ($(CAFFE_PER_LAYER_TIMINGS), 1)
COMMON_FLAGS += -DCAFFE_PER_LAYER_TIMINGS
endif
COMMON_FLAGS += -DFOUNDED_MLSL_ROOT=$(MLSL_ROOT)

ifeq ($(CAFFE_MLSL_SHUFFLE), 1)
COMMON_FLAGS += -DCAFFE_MLSL_SHUFFLE
Expand All @@ -103,8 +101,8 @@ LIBRARY_NAME := $(PROJECT)
LIB_BUILD_DIR := $(BUILD_DIR)/lib
STATIC_NAME := $(LIB_BUILD_DIR)/lib$(LIBRARY_NAME).a
DYNAMIC_VERSION_MAJOR := 1
DYNAMIC_VERSION_MINOR := 0
DYNAMIC_VERSION_REVISION := 0-rc3
DYNAMIC_VERSION_MINOR := 1
DYNAMIC_VERSION_REVISION := 0
DYNAMIC_NAME_SHORT := lib$(LIBRARY_NAME).so
#DYNAMIC_SONAME_SHORT := $(DYNAMIC_NAME_SHORT).$(DYNAMIC_VERSION_MAJOR)
DYNAMIC_VERSIONED_NAME_SHORT := $(DYNAMIC_NAME_SHORT).$(DYNAMIC_VERSION_MAJOR).$(DYNAMIC_VERSION_MINOR).$(DYNAMIC_VERSION_REVISION)
Expand Down Expand Up @@ -336,6 +334,9 @@ endif
ifdef CUSTOM_CXX
CXX := $(CUSTOM_CXX)
endif
ifdef CUSTOM_CC
CC := $(CUSTOM_CC)
endif

# Linux
ifeq ($(LINUX), 1)
Expand Down Expand Up @@ -492,6 +493,11 @@ ifeq ($(DISABLE_BN_FOLDING), 1)
COMMON_FLAGS += -DDISABLE_BN_FOLDING
endif

# Disable the conv/eltwise/relu layer fusion
ifeq ($(DISABLE_CONV_SUM_FUSION), 1)
COMMON_FLAGS += -DDISABLE_CONV_SUM_FUSION
endif

# Performance monitoring
ifeq ($(PERFORMANCE_MONITORING), 1)
CXXFLAGS += -DPERFORMANCE_MONITORING
Expand Down Expand Up @@ -772,7 +778,7 @@ $(ALL_BUILD_DIRS): | $(BUILD_DIR_LINK)

$(DYNAMIC_NAME): $(OBJS) | $(LIB_BUILD_DIR)
@ echo LD -o $@
$(Q)$(CXX) -shared -o $@ $(OBJS) $(VERSIONFLAGS) $(BOOST_LDFLAGS) $(LINKFLAGS) $(MKL_LDFLAGS) $(MKLDNN_LDFLAGS) $(DLCP_LDFLAGS) $(CXX_HARDENING_FLAGS) $(LINKER_SHARED_HARDENING_FLAGS) $(LDFLAGS)
$(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)
@ cd $(BUILD_DIR)/lib; rm -f $(DYNAMIC_NAME_SHORT); ln -s $(DYNAMIC_VERSIONED_NAME_SHORT) $(DYNAMIC_NAME_SHORT)

$(STATIC_NAME): $(OBJS) | $(LIB_BUILD_DIR)
Expand Down Expand Up @@ -804,7 +810,7 @@ $(TEST_ALL_BIN): $(TEST_MAIN_SRC) $(TEST_OBJS) $(GTEST_OBJS) \
| $(DYNAMIC_NAME) $(TEST_BIN_DIR)
@ echo CXX/LD -o $@ $<
$(Q)$(CXX) -std=c++11 $(TEST_MAIN_SRC) $(TEST_OBJS) $(GTEST_OBJS) \
-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
-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

$(TEST_CU_BINS): $(TEST_BIN_DIR)/%.testbin: $(TEST_CU_BUILD_DIR)/%.o \
$(GTEST_OBJS) | $(DYNAMIC_NAME) $(TEST_BIN_DIR)
Expand All @@ -816,7 +822,7 @@ $(TEST_CXX_BINS): $(TEST_BIN_DIR)/%.testbin: $(TEST_CXX_BUILD_DIR)/%.o \
$(GTEST_OBJS) | $(DYNAMIC_NAME) $(TEST_BIN_DIR)
@ echo LD $<
$(Q)$(CXX) -std=c++11 $(TEST_MAIN_SRC) $< $(GTEST_OBJS) \
-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
-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

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

$(TOOL_BINS): %.bin : %.o | $(DYNAMIC_NAME)
@ echo CXX/LD -o $@
$(Q)$(CXX) $< -o $@ $(BOOST_LDFLAGS) $(LINKFLAGS) $(MKL_LDFLAGS) $(MKLDNN_LDFLAGS) $(DLCP_LDFLAGS) $(CXX_HARDENING_FLAGS) $(LINKER_EXEC_HARDENING_FLAGS) -l$(LIBRARY_NAME) $(LDFLAGS) \
$(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) \
-Wl,-rpath,$(ORIGIN)/../lib

$(EXAMPLE_BINS): %.bin : %.o | $(DYNAMIC_NAME)
@ echo CXX/LD -o $@
$(Q)$(CXX) $< -o $@ $(BOOST_LDFLAGS) $(LINKFLAGS) $(MKL_LDFLAGS) $(MKLDNN_LDFLAGS) $(DLCP_LDFLAGS) $(CXX_HARDENING_FLAGS) $(LINKER_EXEC_HARDENING_FLAGS) -l$(LIBRARY_NAME) $(LDFLAGS) \
$(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) \
-Wl,-rpath,$(ORIGIN)/../../lib

proto: $(PROTO_GEN_CC) $(PROTO_GEN_HEADER)
Expand Down
5 changes: 4 additions & 1 deletion Makefile.config.example
Expand Up @@ -76,8 +76,11 @@ USE_MKLDNN_AS_DEFAULT_ENGINE := 1
# already.
# BOOST_ROOT :=

# Use remove batch norm optimization to boost inferrence
# Use remove batch norm optimization to boost inference
DISABLE_BN_FOLDING := 0

#Use conv/eltwise/relu layer fusion to boost inference.
DISABLE_CONV_SUM_FUSION := 0
# Intel(r) Machine Learning Scaling Library (uncomment to build
# with MLSL for multi-node training)
# USE_MLSL :=1
Expand Down
5 changes: 5 additions & 0 deletions Makefile.dlcp
Expand Up @@ -42,6 +42,7 @@ endif
endif

ifeq ($(USE_MLSL), 1)
ifneq ($(ENABLE_WEIGHT_GRAD_COMPRESSION), 0)
ifeq ($(origin DLCPROOT), environment)
dlcp: dlcproot_set
else
Expand All @@ -53,6 +54,10 @@ dlcp:
endif
endif
else
dlcp:
@echo "disabling weight grad compression if ENABLE_WEIGHT_GRAD_COMPRESSION is set to 0"
endif
else
dlcp:
@echo "disabling weight grad compression if USE_MLSL is not 1"
endif
48 changes: 26 additions & 22 deletions cmake/Dependencies.cmake
Expand Up @@ -94,6 +94,10 @@ if(USE_OPENCV)
add_definitions(-DUSE_OPENCV)
endif()

if(CAFFE_PER_LAYER_TIMINGS)
add_definitions("-DCAFFE_PER_LAYER_TIMINGS")
endif()

# ---[ MLSL
if(USE_MLSL)
if (NOT CPU_ONLY)
Expand All @@ -116,13 +120,11 @@ if(USE_MLSL)
endif()
message(STATUS "Machine Learning Scaling Library (MLSL) found (${MLSL_ROOT}/intel64)")
add_definitions("-DUSE_MLSL=1")
add_definitions("-DFOUNDED_MLSL_ROOT=${MLSL_ROOT}")
include_directories(SYSTEM "${MLSL_ROOT}/intel64/include")
link_directories(SYSTEM "${MLSL_ROOT}/intel64/lib")
list(APPEND Caffe_LINKER_LIBS mlsl)

if(CAFFE_PER_LAYER_TIMINGS)
add_definitions("-DCAFFE_PER_LAYER_TIMINGS")
endif()
if(CAFFE_MLSL_SHUFFLE)
add_definitions("-DCAFFE_MLSL_SHUFFLE")
endif()
Expand All @@ -134,28 +136,30 @@ endif()

# ---| DLCP
if(USE_MLSL)
if(DEFINED ENV{DLCPROOT})
set(DLCPROOT_DIR $ENV{DLCPROOT})
if(NOT ${DLCPROOT_DIR} STREQUAL "")
set(DLCPROOT_INCLUDE_DIR "${DLCPROOT_DIR}/include/")
set(DLCPROOT_LIB_DIR "${DLCPROOT_DIR}/lib/")
if(EXISTS ${DLCPROOT_INCLUDE_DIR}/dl_compression.h AND EXISTS ${DLCPROOT_LIB_DIR}/libdlcomp.so)
message(STATUS "Found DLCP: ${DLCPROOT_DIR}")
if (ENABLE_WEIGHT_GRAD_COMPRESSION OR NOT DEFINED ENABLE_WEIGHT_GRAD_COMPRESSION)
if(DEFINED ENV{DLCPROOT})
set(DLCPROOT_DIR $ENV{DLCPROOT})
if(NOT ${DLCPROOT_DIR} STREQUAL "")
set(DLCPROOT_INCLUDE_DIR "${DLCPROOT_DIR}/include/")
set(DLCPROOT_LIB_DIR "${DLCPROOT_DIR}/lib/")
if(EXISTS ${DLCPROOT_INCLUDE_DIR}/dl_compression.h AND EXISTS ${DLCPROOT_LIB_DIR}/libdlcomp.so)
message(STATUS "Found DLCP: ${DLCPROOT_DIR}")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DENABLE_WEIGHT_GRAD_COMPRESSION")
list(APPEND Caffe_LINKER_LIBS "${DLCPROOT_LIB_DIR}/libdlcomp.so")
include_directories(SYSTEM ${DLCP_INCLUDE_DIR})
else()
message(STATUS "DLCP not found. DLCP_INCLUDE_DIR = ${DLCPROOT_INCLUDE_DIR} DLCP_LIB_DIR = ${DLCPROOT_LIB_DIR}")
message(WARNING "weight grad compression is disabled.")
endif()
endif()
else()
Download_DLCP()
if(DLCP_CXX)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DENABLE_WEIGHT_GRAD_COMPRESSION")
list(APPEND Caffe_LINKER_LIBS "${DLCPROOT_LIB_DIR}/libdlcomp.so")
include_directories(SYSTEM ${DLCP_INCLUDE_DIR})
else()
message(STATUS "DLCP not found. DLCP_INCLUDE_DIR = ${DLCPROOT_INCLUDE_DIR} DLCP_LIB_DIR = ${DLCPROOT_LIB_DIR}")
message(WARNING "weight grad compression is disabled.")
list(APPEND Caffe_LINKER_LIBS "${DLCP_LIBDIR}/libdlcomp.so")
include_directories(SYSTEM ${DLCP_INCLDIR})
endif()
endif()
else()
Download_DLCP()
if(DLCP_CXX)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DENABLE_WEIGHT_GRAD_COMPRESSION")
list(APPEND Caffe_LINKER_LIBS "${DLCP_LIBDIR}/libdlcomp.so")
include_directories(SYSTEM ${DLCP_INCLDIR})
endif()
endif()
endif()

Expand Down
6 changes: 6 additions & 0 deletions cmake/Misc.cmake
Expand Up @@ -10,6 +10,12 @@ if(DISABLE_BN_FOLDING)
message(STATUS "Bn folding is disabled!")
add_definitions("-DDISABLE_BN_FOLDING")
endif()

if(DISABLE_CONV_SUM_FUSION)
message(STATUS "conv/eltwise/relu fusion is disabled!")
add_definitions("-DDISABLE_CONV_SUM_FUSION")
endif()

# --[ If user doesn't specify build type then assume release
if("${CMAKE_BUILD_TYPE}" STREQUAL "")
set(CMAKE_BUILD_TYPE Release)
Expand Down
2 changes: 1 addition & 1 deletion docker/README.md
Expand Up @@ -17,7 +17,7 @@ docker run -ti caffe:cpu caffe --version
```
which should show a message like:
```
caffe version 1.0.0-rc3
caffe version 1.1.0
```

One can also build and run the Caffe tests in the image using:
Expand Down
8 changes: 7 additions & 1 deletion examples/pycaffe/tune_model.py
Expand Up @@ -10,7 +10,13 @@ def genOptimalModel(net, mkldnn_direct_time_map, mkldnn_winograd_time_map, optim
for index in range(0, len(net.layer)):
l = net.layer[index]
if l.type == "Convolution":
if mkldnn_winograd_time_map[l.name] < mkldnn_direct_time_map[l.name]:
if len(l.convolution_param.kernel_size) == 0:
continue
kernel_size = l.convolution_param.kernel_size[0]
stride = 1
if len(l.convolution_param.stride) != 0:
stride = l.convolution_param.stride[0]
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:
l.convolution_param.conv_algorithm = "winograd"
else:
l.convolution_param.conv_algorithm = "direct"
Expand Down
7 changes: 3 additions & 4 deletions external/mkl/prepare_mkl.sh
Expand Up @@ -74,12 +74,11 @@ echo $VERSION_LINE # Return Version Line
# MKL
DST=`dirname $0`
OMP=0
VERSION_MATCH=20171007
ARCHIVE_BASENAME=mklml_lnx_2018.0.1.20171007.tgz
VERSION_MATCH=20171227
ARCHIVE_BASENAME=mklml_lnx_2018.0.1.20171227.tgz
MKL_CONTENT_DIR=`echo $ARCHIVE_BASENAME | rev | cut -d "." -f 2- | rev`
GITHUB_RELEASE_TAG=1.0.6

MKLURL="https://github.com/intel/caffe/releases/download/$GITHUB_RELEASE_TAG/$ARCHIVE_BASENAME"
MKLURL="https://github.com/01org/mkl-dnn/releases/download/v0.12/$ARCHIVE_BASENAME"
# there are diffrent MKL lib to be used for GCC and for ICC
reg='^[0-9]+$'
VERSION_LINE=`GetVersionName $MKLROOT`
Expand Down
2 changes: 1 addition & 1 deletion include/caffe/filler.hpp
Expand Up @@ -230,7 +230,7 @@ template <typename Dtype> class MSRAFiller : public Filler<Dtype> {
FillerParameter_VarianceNorm_FAN_OUT) {
n = fan_out;
}
Dtype std = sqrt(Dtype(2) / n);
Dtype std = this->filler_param_.scale() * sqrt(Dtype(2) / n);
caffe_rng_gaussian<Dtype>(blob->count(), Dtype(0), std,
blob->mutable_cpu_data());
CHECK_EQ(this->filler_param_.sparse(), -1)
Expand Down
3 changes: 2 additions & 1 deletion include/caffe/layers/base_conv_layer.hpp
Expand Up @@ -63,8 +63,9 @@ class BaseConvolutionLayer : public Layer<Dtype> {

virtual inline int MinBottomBlobs() const { return 1; }
virtual inline int MinTopBlobs() const { return 1; }
#ifdef DISABLE_CONV_SUM_FUSION
virtual inline bool EqualNumBottomTopBlobs() const { return true; }

#endif
protected:
// Split Reshape into two parts
// Part 1 for normal blob reshape
Expand Down

0 comments on commit f6d01ef

Please sign in to comment.