run.sh 6.1 KB
Newer Older
Y
Yan Chunwei 已提交
1
#!/bin/bash
W
Wilber 已提交
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved.
# 
# 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.

17
set -x
I
iducn 已提交
18 19 20 21 22 23 24 25
PADDLE_ROOT=$1
TURN_ON_MKL=$2 # use MKL or Openblas
TEST_GPU_CPU=$3 # test both GPU/CPU mode or only CPU mode
DATA_DIR=$4 # dataset
TENSORRT_INCLUDE_DIR=$5 # TensorRT header file dir, default to /usr/local/TensorRT/include
TENSORRT_LIB_DIR=$6 # TensorRT lib file dir, default to /usr/local/TensorRT/lib
MSVC_STATIC_CRT=$7
inference_install_dir=${PADDLE_ROOT}/build/paddle_inference_install_dir
N
nhzlx 已提交
26

I
iducn 已提交
27 28 29
cd `dirname $0`
current_dir=`pwd`
if [ $2 == ON ]; then
30
  # You can export yourself if move the install path
I
iducn 已提交
31 32
  MKL_LIB=${inference_install_dir}/third_party/install/mklml/lib
  export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:${MKL_LIB}
33
fi
I
iducn 已提交
34
if [ $3 == ON ]; then
35
  use_gpu_list='true false'
Y
Yan Chunwei 已提交
36
else
37 38
  use_gpu_list='false'
fi
L
Luo Tao 已提交
39

N
nhzlx 已提交
40
USE_TENSORRT=OFF
I
iducn 已提交
41
if [ -d "$TENSORRT_INCLUDE_DIR" -a -d "$TENSORRT_LIB_DIR" ]; then
N
nhzlx 已提交
42 43 44
  USE_TENSORRT=ON
fi

D
dzhwinter 已提交
45
PREFIX=inference-vis-demos%2F
46
URL_ROOT=http://paddlemodels.bj.bcebos.com/${PREFIX}
D
dzhwinter 已提交
47

L
Luo Tao 已提交
48 49
# download vis_demo data
function download() {
I
iducn 已提交
50 51 52
  dir_name=$1
  mkdir -p $dir_name
  cd $dir_name
D
dzhwinter 已提交
53
  if [[ -e "${PREFIX}${dir_name}.tar.gz" ]]; then
54
    echo "${PREFIX}${dir_name}.tar.gz has been downloaded."
D
dzhwinter 已提交
55
  else
I
iducn 已提交
56 57
      wget -q ${URL_ROOT}$dir_name.tar.gz
      tar xzf *.tar.gz
D
dzhwinter 已提交
58
  fi
I
iducn 已提交
59
  cd ..
L
Luo Tao 已提交
60
}
I
iducn 已提交
61 62
mkdir -p $DATA_DIR
cd $DATA_DIR
L
Luo Tao 已提交
63 64
vis_demo_list='se_resnext50 ocr mobilenet'
for vis_demo_name in $vis_demo_list; do
I
iducn 已提交
65
  download $vis_demo_name
L
Luo Tao 已提交
66 67
done

68 69
# download word2vec data
mkdir -p word2vec
I
iducn 已提交
70
cd word2vec
71 72 73 74
if [[ -e "word2vec.inference.model.tar.gz" ]]; then
  echo "word2vec.inference.model.tar.gz has been downloaded."
else
    wget -q http://paddle-inference-dist.bj.bcebos.com/word2vec.inference.model.tar.gz
I
iducn 已提交
75
    tar xzf *.tar.gz
76 77
fi

L
Luo Tao 已提交
78
# compile and test the demo
I
iducn 已提交
79
cd $current_dir
L
Luo Tao 已提交
80
mkdir -p build
I
iducn 已提交
81 82
cd build
rm -rf *
L
Luo Tao 已提交
83

84
for WITH_STATIC_LIB in ON OFF; do
I
iducn 已提交
85
  if [ $(echo `uname` | grep "Win") != "" ]; then
W
Wilber 已提交
86 87 88 89
    # TODO(wilber, T8T9): Do we still need to support windows gpu static library
    if [ $TEST_GPU_CPU == ON ] && [ $WITH_STATIC_LIB == ON ]; then
      return 0
    fi
90
    # -----simple_on_word2vec on windows-----
I
iducn 已提交
91 92
    cmake .. -G "Visual Studio 14 2015" -A x64 -DPADDLE_LIB=${inference_install_dir} \
      -DWITH_MKL=$TURN_ON_MKL \
93
      -DDEMO_NAME=simple_on_word2vec \
I
iducn 已提交
94 95 96
      -DWITH_GPU=$TEST_GPU_CPU \
      -DWITH_STATIC_LIB=$WITH_STATIC_LIB \
      -DMSVC_STATIC_CRT=$MSVC_STATIC_CRT
97 98 99
    msbuild  /maxcpucount /property:Configuration=Release cpp_inference_demo.sln
    for use_gpu in $use_gpu_list; do
      Release/simple_on_word2vec.exe \
I
iducn 已提交
100 101 102
        --dirname=$DATA_DIR/word2vec/word2vec.inference.model \
        --use_gpu=$use_gpu
      if [ $? -ne 0 ]; then
103 104 105 106 107 108
        echo "simple_on_word2vec demo runs fail."
        exit 1
      fi
    done

    # -----vis_demo on windows-----
I
iducn 已提交
109 110 111
    rm -rf *
    cmake .. -G "Visual Studio 14 2015" -A x64 -DPADDLE_LIB=${inference_install_dir} \
      -DWITH_MKL=$TURN_ON_MKL \
112
      -DDEMO_NAME=vis_demo \
I
iducn 已提交
113 114 115
      -DWITH_GPU=$TEST_GPU_CPU \
      -DWITH_STATIC_LIB=$WITH_STATIC_LIB \
      -DMSVC_STATIC_CRT=$MSVC_STATIC_CRT
116 117 118 119
    msbuild  /maxcpucount /property:Configuration=Release cpp_inference_demo.sln
    for use_gpu in $use_gpu_list; do
      for vis_demo_name in $vis_demo_list; do
        Release/vis_demo.exe \
I
iducn 已提交
120 121 122 123 124
          --modeldir=$DATA_DIR/$vis_demo_name/model \
          --data=$DATA_DIR/$vis_demo_name/data.txt \
          --refer=$DATA_DIR/$vis_demo_name/result.txt \
          --use_gpu=$use_gpu
        if [ $? -ne 0 ]; then
125 126 127 128 129 130
          echo "vis demo $vis_demo_name runs fail."
          exit 1
        fi
      done
    done
  else
131
    # -----simple_on_word2vec on linux/mac-----
I
iducn 已提交
132 133 134
    rm -rf *
    cmake .. -DPADDLE_LIB=${inference_install_dir} \
      -DWITH_MKL=$TURN_ON_MKL \
135
      -DDEMO_NAME=simple_on_word2vec \
I
iducn 已提交
136 137 138 139 140
      -DWITH_GPU=$TEST_GPU_CPU \
      -DWITH_STATIC_LIB=$WITH_STATIC_LIB
    make -j$(nproc)
    word2vec_model=$DATA_DIR'/word2vec/word2vec.inference.model'
    if [ -d $word2vec_model ]; then
141 142
      for use_gpu in $use_gpu_list; do
        ./simple_on_word2vec \
I
iducn 已提交
143 144 145
          --dirname=$DATA_DIR/word2vec/word2vec.inference.model \
          --use_gpu=$use_gpu
        if [ $? -ne 0 ]; then
146 147 148 149 150 151
          echo "simple_on_word2vec demo runs fail."
          exit 1
        fi
      done
    fi
    # ---------vis_demo on linux/mac---------
I
iducn 已提交
152 153 154
    rm -rf *
    cmake .. -DPADDLE_LIB=${inference_install_dir} \
      -DWITH_MKL=$TURN_ON_MKL \
155
      -DDEMO_NAME=vis_demo \
I
iducn 已提交
156 157 158
      -DWITH_GPU=$TEST_GPU_CPU \
      -DWITH_STATIC_LIB=$WITH_STATIC_LIB
    make -j$(nproc)
159 160 161
    for use_gpu in $use_gpu_list; do
      for vis_demo_name in $vis_demo_list; do
        ./vis_demo \
I
iducn 已提交
162 163 164 165 166
          --modeldir=$DATA_DIR/$vis_demo_name/model \
          --data=$DATA_DIR/$vis_demo_name/data.txt \
          --refer=$DATA_DIR/$vis_demo_name/result.txt \
          --use_gpu=$use_gpu
        if [ $? -ne 0 ]; then
167 168 169 170 171 172
          echo "vis demo $vis_demo_name runs fail."
          exit 1
        fi
      done
    done
    # --------tensorrt mobilenet on linux/mac------
I
iducn 已提交
173 174 175 176
    if [ $USE_TENSORRT == ON -a $TEST_GPU_CPU == ON ]; then
      rm -rf *
      cmake .. -DPADDLE_LIB=${inference_install_dir} \
        -DWITH_MKL=$TURN_ON_MKL \
177
        -DDEMO_NAME=trt_mobilenet_demo \
I
iducn 已提交
178 179 180 181 182 183
        -DWITH_GPU=$TEST_GPU_CPU \
        -DWITH_STATIC_LIB=$WITH_STATIC_LIB \
        -DUSE_TENSORRT=$USE_TENSORRT \
        -DTENSORRT_INCLUDE_DIR=$TENSORRT_INCLUDE_DIR \
        -DTENSORRT_LIB_DIR=$TENSORRT_LIB_DIR
      make -j$(nproc)
184
      ./trt_mobilenet_demo \
I
iducn 已提交
185 186 187 188
        --modeldir=$DATA_DIR/mobilenet/model \
        --data=$DATA_DIR/mobilenet/data.txt \
        --refer=$DATA_DIR/mobilenet/result.txt 
      if [ $? -ne 0 ]; then
189 190 191
        echo "trt demo trt_mobilenet_demo runs fail."
        exit 1
      fi
N
nhzlx 已提交
192
    fi
193 194
  fi
done
195
set +x