Skip to content

Commit

Permalink
feat(build): allow to change CUDA_ARCH
Browse files Browse the repository at this point in the history
They is no need to build all arch for some dev/testing.

Since this have a huge impact on the compilation time,
this allow to configure the list.

This also adds cards supported since cuda 10
  • Loading branch information
sileht committed Oct 5, 2020
1 parent 1a5f905 commit 67ad43e
Showing 1 changed file with 27 additions and 12 deletions.
39 changes: 27 additions & 12 deletions build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,15 @@ deepdetect_arch=(cpu gpu)
deepdetect_cpu_build_profiles=(default caffe-tf armv7)
deepdetect_gpu_build_profiles=(default tf caffe-tf-cpu caffe-tf caffe2 p100 volta volta-faiss faiss)

# NOTE(sileht): list of all supported card by CUDA 10.2
# https://arnon.dk/matching-sm-architectures-arch-and-gencode-for-various-nvidia-cards/
if [ ! "$DEEPDETECT_CUDA_ARCH" ]; then
for card in 30 35 50 52 61 62 70 72; do
DEEPDETECT_CUDA_ARCH="$DEEPDETECT_CUDA_ARCH -gencode arch=compute_${card},code=sm_${card}"
done
fi


# Help menu with arguments descriptions
help_menu() {
IFS=,
Expand All @@ -20,6 +29,7 @@ help_menu() {
echo
echo " -a, --deepdetect-arch Choose Deepdetect architecture : ${deepdetect_arch[*]}"
echo " -b, --deepdetect-build Choose Deepdetect build profile : CPU (${deepdetect_cpu_build_profiles[*]}) / GPU (${deepdetect_gpu_build_profiles[*]})"
echo " -c, --deepdetect-cuda-arch Choose Deepdetect cuda arch (default: ${deepdetect_cuda_arch})"
echo
exit 1
}
Expand All @@ -35,6 +45,10 @@ while (("$#")); do
DEEPDETECT_BUILD=$2
shift 2
;;
-c | --deepdetect-cuda-arch)
DEEPDETECT_CUDA_ARCH=$2
shift 2
;;
-h | --help)
help_menu
break
Expand Down Expand Up @@ -108,8 +122,8 @@ cpu_build() {
case ${DEEPDETECT_BUILD} in

"caffe-tf")
cmake .. -DUSE_TF=ON -DUSE_TF_CPU_ONLY=ON -DUSE_SIMSEARCH=ON -DUSE_TSNE=ON -DUSE_NCNN=OFF -DUSE_CPU_ONLY=ON
make
cmake .. -DUSE_TF=ON -DUSE_TF_CPU_ONLY=ON -DUSE_SIMSEARCH=ON -DUSE_TSNE=ON -DUSE_NCNN=OFF -DUSE_CPU_ONLY=ON
make
;;

"armv7")
Expand All @@ -130,22 +144,22 @@ gpu_build() {
case ${DEEPDETECT_BUILD} in

"tf")
cmake .. -DUSE_TF=ON -DUSE_CUDNN=ON -DUSE_XGBOOST=ON -DUSE_SIMSEARCH=ON -DUSE_TSNE=ON -DCUDA_ARCH="-gencode arch=compute_30,code=sm_30 -gencode arch=compute_35,code=sm_35 -gencode arch=compute_50,code=sm_50 -gencode arch=compute_52,code=sm_52 -gencode arch=compute_61,code=sm_61"
cmake .. -DUSE_TF=ON -DUSE_CUDNN=ON -DUSE_XGBOOST=ON -DUSE_SIMSEARCH=ON -DUSE_TSNE=ON -DCUDA_ARCH=${DEEPDETECT_CUDA_ARCH}
make
;;

"caffe-tf-cpu")
cmake .. -DUSE_TF=ON -DUSE_TF_CPU_ONLY=ON -DUSE_CUDNN=ON -DUSE_XGBOOST=ON -DUSE_SIMSEARCH=ON -DUSE_TSNE=ON -DCUDA_ARCH="-gencode arch=compute_30,code=sm_30 -gencode arch=compute_35,code=sm_35 -gencode arch=compute_50,code=sm_50 -gencode arch=compute_52,code=sm_52 -gencode arch=compute_61,code=sm_61"
cmake .. -DUSE_TF=ON -DUSE_TF_CPU_ONLY=ON -DUSE_CUDNN=ON -DUSE_XGBOOST=ON -DUSE_SIMSEARCH=ON -DUSE_TSNE=ON -DCUDA_ARCH=${DEEPDETECT_CUDA_ARCH}
make
;;

"caffe-tf")
cmake .. -DUSE_TF=ON -DUSE_CUDNN=ON -DUSE_SIMSEARCH=ON -DUSE_TSNE=ON -DCUDA_ARCH="-gencode arch=compute_30,code=sm_30 -gencode arch=compute_35,code=sm_35 -gencode arch=compute_50,code=sm_50 -gencode arch=compute_52,code=sm_52 -gencode arch=compute_61,code=sm_61"
cmake .. -DUSE_TF=ON -DUSE_CUDNN=ON -DUSE_SIMSEARCH=ON -DUSE_TSNE=ON -DCUDA_ARCH=${DEEPDETECT_CUDA_ARCH}
make
;;

"caffe2")
cmake .. -DUSE_CUDNN=ON -DUSE_XGBOOST=ON -DUSE_SIMSEARCH=ON -DUSE_TSNE=ON -DUSE_CAFFE2=ON -DCUDA_ARCH="-gencode arch=compute_30,code=sm_30 -gencode arch=compute_35,code=sm_35 -gencode arch=compute_50,code=sm_50 -gencode arch=compute_52,code=sm_52 -gencode arch=compute_61,code=sm_61"
cmake .. -DUSE_CUDNN=ON -DUSE_XGBOOST=ON -DUSE_SIMSEARCH=ON -DUSE_TSNE=ON -DUSE_CAFFE2=ON -DCUDA_ARCH=${DEEPDETECT_CUDA_ARCH}
make
;;

Expand All @@ -165,12 +179,12 @@ gpu_build() {
;;

"faiss")
cmake .. -DUSE_CUDNN=ON -DUSE_FAISS=ON -DUSE_XGBOOST=ON -DUSE_SIMSEARCH=ON -DUSE_TSNE=ON -DCUDA_ARCH="-gencode arch=compute_30,code=sm_30 -gencode arch=compute_35,code=sm_35 -gencode arch=compute_50,code=sm_50 -gencode arch=compute_52,code=sm_52 -gencode arch=compute_61,code=sm_61"
cmake .. -DUSE_CUDNN=ON -DUSE_FAISS=ON -DUSE_XGBOOST=ON -DUSE_SIMSEARCH=ON -DUSE_TSNE=ON -DCUDA_ARCH=${DEEPDETECT_CUDA_ARCH}
make
;;

*)
cmake .. -DUSE_CUDNN=ON -DUSE_XGBOOST=ON -DUSE_SIMSEARCH=ON -DUSE_TSNE=ON -DCUDA_ARCH="-gencode arch=compute_30,code=sm_30 -gencode arch=compute_35,code=sm_35 -gencode arch=compute_50,code=sm_50 -gencode arch=compute_52,code=sm_52 -gencode arch=compute_61,code=sm_61"
cmake .. -DUSE_CUDNN=ON -DUSE_XGBOOST=ON -DUSE_SIMSEARCH=ON -DUSE_TSNE=ON -DCUDA_ARCH=${DEEPDETECT_CUDA_ARCH}
make
;;
esac
Expand All @@ -186,15 +200,16 @@ fi
if [[ ${DEEPDETECT_ARCH} == "cpu" ]]; then
echo ""
echo "Deepdetect build params :"
echo " DEEPDETECT_ARCH : ${DEEPDETECT_ARCH}"
echo " DEEPDETECT_BUILD : ${DEEPDETECT_BUILD}"
echo " DEEPDETECT_ARCH : ${DEEPDETECT_ARCH}"
echo " DEEPDETECT_BUILD : ${DEEPDETECT_BUILD}"
echo ""
cpu_build
elif [[ ${DEEPDETECT_ARCH} == "gpu" ]]; then
echo ""
echo "Deepdetect build params :"
echo " DEEPDETECT_ARCH : ${DEEPDETECT_ARCH}"
echo " DEEPDETECT_BUILD : ${DEEPDETECT_BUILD}"
echo " DEEPDETECT_ARCH : ${DEEPDETECT_ARCH}"
echo " DEEPDETECT_BUILD : ${DEEPDETECT_BUILD}"
echo " DEEPDETECT_CUDA_ARCH : ${DEEPDETECT_CUDA_ARCH}"
echo ""
gpu_build
else
Expand Down

0 comments on commit 67ad43e

Please sign in to comment.