commit
94f65c3415
After Width: | Height: | Size: 18 KiB |
After Width: | Height: | Size: 20 KiB |
After Width: | Height: | Size: 18 KiB |
@ -0,0 +1,86 @@
|
|||||||
|
set -e
|
||||||
|
|
||||||
|
function clock_to_seconds() {
|
||||||
|
hours=`echo $1 | awk -F ':' '{print $1}'`
|
||||||
|
mins=`echo $1 | awk -F ':' '{print $2}'`
|
||||||
|
secs=`echo $1 | awk -F ':' '{print $3}'`
|
||||||
|
echo `awk 'BEGIN{printf "%.2f",('$secs' + '$mins' * 60 + '$hours' * 3600)}'`
|
||||||
|
}
|
||||||
|
|
||||||
|
function infer() {
|
||||||
|
unset OMP_NUM_THREADS MKL_NUM_THREADS OMP_DYNAMIC KMP_AFFINITY
|
||||||
|
topology=$1
|
||||||
|
layer_num=$2
|
||||||
|
bs=$3
|
||||||
|
use_mkldnn=$4
|
||||||
|
if [ $4 == "True" ]; then
|
||||||
|
thread=1
|
||||||
|
log="logs/infer-${topology}-${layer_num}-mkldnn-${bs}.log"
|
||||||
|
elif [ $4 == "False" ]; then
|
||||||
|
thread=`nproc`
|
||||||
|
if [ $thread -gt $bs ]; then
|
||||||
|
thread=$bs
|
||||||
|
fi
|
||||||
|
log="logs/infer-${topology}-${layer_num}-${thread}mklml-${bs}.log"
|
||||||
|
else
|
||||||
|
echo "Wrong input $4, use True or False."
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
models_in="models/${topology}-${layer_num}/pass-00000/"
|
||||||
|
if [ ! -d $models_in ]; then
|
||||||
|
echo "Training model ${topology}_${layer_num}"
|
||||||
|
paddle train --job=train \
|
||||||
|
--config="${topology}.py" \
|
||||||
|
--use_mkldnn=True \
|
||||||
|
--use_gpu=False \
|
||||||
|
--trainer_count=1 \
|
||||||
|
--num_passes=1 \
|
||||||
|
--save_dir="models/${topology}-${layer_num}" \
|
||||||
|
--config_args="batch_size=128,layer_num=${layer_num}" \
|
||||||
|
> /dev/null 2>&1
|
||||||
|
echo "Done"
|
||||||
|
fi
|
||||||
|
log_period=$((256 / bs))
|
||||||
|
paddle train --job=test \
|
||||||
|
--config="${topology}.py" \
|
||||||
|
--use_mkldnn=$use_mkldnn \
|
||||||
|
--use_gpu=False \
|
||||||
|
--trainer_count=$thread \
|
||||||
|
--log_period=$log_period \
|
||||||
|
--config_args="batch_size=${bs},layer_num=${layer_num},is_infer=True" \
|
||||||
|
--init_model_path=$models_in \
|
||||||
|
2>&1 | tee ${log}
|
||||||
|
|
||||||
|
# calculate the last 5 logs period time of 1280 samples,
|
||||||
|
# the time before are burning time.
|
||||||
|
start=`tail ${log} -n 7 | head -n 1 | awk -F ' ' '{print $2}' | xargs`
|
||||||
|
end=`tail ${log} -n 2 | head -n 1 | awk -F ' ' '{print $2}' | xargs`
|
||||||
|
start_sec=`clock_to_seconds $start`
|
||||||
|
end_sec=`clock_to_seconds $end`
|
||||||
|
fps=`awk 'BEGIN{printf "%.2f",(1280 / ('$end_sec' - '$start_sec'))}'`
|
||||||
|
echo "Last 1280 samples start: ${start}(${start_sec} sec), end: ${end}(${end_sec} sec;" >> ${log}
|
||||||
|
echo "FPS: $fps images/sec" 2>&1 | tee -a ${log}
|
||||||
|
}
|
||||||
|
|
||||||
|
if [ ! -f "train.list" ]; then
|
||||||
|
echo " " > train.list
|
||||||
|
fi
|
||||||
|
if [ ! -f "test.list" ]; then
|
||||||
|
echo " " > test.list
|
||||||
|
fi
|
||||||
|
if [ ! -d "logs" ]; then
|
||||||
|
mkdir logs
|
||||||
|
fi
|
||||||
|
if [ ! -d "models" ]; then
|
||||||
|
mkdir -p models
|
||||||
|
fi
|
||||||
|
|
||||||
|
# inference benchmark
|
||||||
|
for use_mkldnn in True False; do
|
||||||
|
for batchsize in 1 2 4 8 16; do
|
||||||
|
infer googlenet v1 $batchsize $use_mkldnn
|
||||||
|
infer resnet 50 $batchsize $use_mkldnn
|
||||||
|
infer vgg 19 $batchsize $use_mkldnn
|
||||||
|
done
|
||||||
|
done
|
@ -0,0 +1,45 @@
|
|||||||
|
# Copyright (c) 2016 PaddlePaddle Authors. All Rights Reserve.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
#
|
||||||
|
|
||||||
|
IF(MOBILE_INFERENCE OR NOT WITH_DISTRIBUTE)
|
||||||
|
return()
|
||||||
|
ENDIF()
|
||||||
|
|
||||||
|
include (ExternalProject)
|
||||||
|
|
||||||
|
# NOTE: c-ares is needed when linking with grpc.
|
||||||
|
|
||||||
|
SET(CARES_SOURCES_DIR ${THIRD_PARTY_PATH}/cares)
|
||||||
|
SET(CARES_INSTALL_DIR ${THIRD_PARTY_PATH}/install/cares)
|
||||||
|
SET(CARES_INCLUDE_DIR "${CARES_INSTALL_DIR}/include/" CACHE PATH "cares include directory." FORCE)
|
||||||
|
|
||||||
|
ExternalProject_Add(
|
||||||
|
extern_cares
|
||||||
|
GIT_REPOSITORY "https://github.com/c-ares/c-ares.git"
|
||||||
|
GIT_TAG "cares-1_13_0"
|
||||||
|
PREFIX ${CARES_SOURCES_DIR}
|
||||||
|
UPDATE_COMMAND ""
|
||||||
|
CONFIGURE_COMMAND ./buildconf && ./configure --disable-shared --prefix=${CARES_INSTALL_DIR}
|
||||||
|
BUILD_IN_SOURCE 1
|
||||||
|
BUILD_COMMAND make -j8
|
||||||
|
INSTALL_COMMAND make install
|
||||||
|
)
|
||||||
|
|
||||||
|
ADD_LIBRARY(cares STATIC IMPORTED GLOBAL)
|
||||||
|
SET_PROPERTY(TARGET cares PROPERTY IMPORTED_LOCATION
|
||||||
|
"${CARES_INSTALL_DIR}/lib/libcares.a")
|
||||||
|
|
||||||
|
include_directories(${CARES_INCLUDE_DIR})
|
||||||
|
ADD_DEPENDENCIES(cares extern_cares)
|
@ -0,0 +1,66 @@
|
|||||||
|
# Copyright (c) 2016 PaddlePaddle Authors. All Rights Reserve.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
#
|
||||||
|
|
||||||
|
IF(MOBILE_INFERENCE OR NOT WITH_DISTRIBUTE)
|
||||||
|
return()
|
||||||
|
ENDIF()
|
||||||
|
|
||||||
|
include (ExternalProject)
|
||||||
|
|
||||||
|
SET(GRPC_SOURCES_DIR ${THIRD_PARTY_PATH}/grpc)
|
||||||
|
SET(GRPC_INSTALL_DIR ${THIRD_PARTY_PATH}/install/grpc)
|
||||||
|
SET(GRPC_INCLUDE_DIR "${GRPC_INSTALL_DIR}/include/" CACHE PATH "grpc include directory." FORCE)
|
||||||
|
SET(GRPC_CPP_PLUGIN "${GRPC_INSTALL_DIR}/bin/grpc_cpp_plugin" CACHE FILEPATH "GRPC_CPP_PLUGIN" FORCE)
|
||||||
|
IF(APPLE)
|
||||||
|
SET(BUILD_CMD make -n HAS_SYSTEM_PROTOBUF=false -s -j8 static grpc_cpp_plugin | sed "s/-Werror//g" | sh)
|
||||||
|
ELSE()
|
||||||
|
SET(BUILD_CMD make HAS_SYSTEM_PROTOBUF=false -s -j8 static grpc_cpp_plugin)
|
||||||
|
ENDIF()
|
||||||
|
|
||||||
|
ExternalProject_Add(
|
||||||
|
extern_grpc
|
||||||
|
DEPENDS protobuf zlib
|
||||||
|
GIT_REPOSITORY "https://github.com/grpc/grpc.git"
|
||||||
|
GIT_TAG "v1.7.x"
|
||||||
|
PREFIX ${GRPC_SOURCES_DIR}
|
||||||
|
UPDATE_COMMAND ""
|
||||||
|
CONFIGURE_COMMAND ""
|
||||||
|
BUILD_IN_SOURCE 1
|
||||||
|
# NOTE(yuyang18):
|
||||||
|
# Disable -Werror, otherwise the compile will fail in MacOS.
|
||||||
|
# It seems that we cannot configure that by make command.
|
||||||
|
# Just dry run make command and remove `-Werror`, then use a shell to run make commands
|
||||||
|
BUILD_COMMAND ${BUILD_CMD}
|
||||||
|
INSTALL_COMMAND make prefix=${GRPC_INSTALL_DIR} install
|
||||||
|
)
|
||||||
|
|
||||||
|
# FIXME(typhoonzero): hack to get static lib path, try a better way like merge them.
|
||||||
|
ADD_LIBRARY(grpc++_unsecure STATIC IMPORTED GLOBAL)
|
||||||
|
SET_PROPERTY(TARGET grpc++_unsecure PROPERTY IMPORTED_LOCATION
|
||||||
|
"${GRPC_INSTALL_DIR}/lib/libgrpc++_unsecure.a")
|
||||||
|
|
||||||
|
ADD_LIBRARY(grpc++ STATIC IMPORTED GLOBAL)
|
||||||
|
SET_PROPERTY(TARGET grpc++ PROPERTY IMPORTED_LOCATION
|
||||||
|
"${GRPC_INSTALL_DIR}/lib/libgrpc++.a")
|
||||||
|
ADD_LIBRARY(gpr STATIC IMPORTED GLOBAL)
|
||||||
|
SET_PROPERTY(TARGET gpr PROPERTY IMPORTED_LOCATION
|
||||||
|
"${GRPC_INSTALL_DIR}/lib/libgpr.a")
|
||||||
|
|
||||||
|
ADD_LIBRARY(grpc_unsecure STATIC IMPORTED GLOBAL)
|
||||||
|
SET_PROPERTY(TARGET grpc_unsecure PROPERTY IMPORTED_LOCATION
|
||||||
|
"${GRPC_INSTALL_DIR}/lib/libgrpc_unsecure.a")
|
||||||
|
|
||||||
|
include_directories(${GRPC_INCLUDE_DIR})
|
||||||
|
ADD_DEPENDENCIES(grpc++_unsecure extern_grpc)
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in new issue