Skip to content

Commit dbfdce6

Browse files
authored
[Serving] Support GPU compilation in processor. (#611)
1 parent 9d92c3f commit dbfdce6

4 files changed

Lines changed: 58 additions & 13 deletions

File tree

docs/docs_zh/DeepRec-Compile-And-Install.md

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -120,8 +120,14 @@ alideeprec/deeprec-release:deeprec2210-gpu-py36-cu116-ubuntu18.04
120120
./configure serving --mkl
121121
./configure serving --mkl_open_source_v1_only
122122
./configure serving --mkl_threadpool
123-
./configure serving --mkl --cuda ...
124123
```
124+
125+
编译GPU版本
126+
```
127+
./configure serving --mkl --cuda
128+
./configure serving --mkl --cuda_alios
129+
```
130+
125131
更多细节请查看: serving/configure.py
126132

127133
编译processor库,会生成libserving_processor.so,用户可以加载该so,并且调用示例中的serving API进行predict

serving/configure.py

Lines changed: 40 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -25,22 +25,49 @@ def write_config():
2525
# grpc disable c-ares
2626
bazel_rc.write('build --define grpc_no_ares=true\n')
2727

28+
bazel_rc.write('build --define open_source_build=true\n')
2829
bazel_rc.write('build --cxxopt="-std=c++14"\n')
30+
bazel_rc.write('build --host_cxxopt=-std=c++14\n')
31+
bazel_rc.write('build --action_env TF_USE_CCACHE="0"\n')
2932
# skip the param 'python' or 'python3'
3033
for argv in sys.argv[2:]:
3134
if argv == "--cuda":
3235
print("Bazel will build with --cuda")
33-
bazel_rc.write('build --action_env TF_NEED_CUDA="1"\n')
34-
bazel_rc.write(
35-
'build --action_env CUDA_TOOLKIT_PATH="/usr/local/cuda"\n'
36-
)
37-
bazel_rc.write(
38-
'build --action_env CUDNN_INSTALL_PATH="/usr/lib/x86_64-linux-gnu"\n'
39-
)
40-
bazel_rc.write('build --action_env TF_CUDA_VERSION="10.1"\n')
41-
bazel_rc.write('build --action_env TF_CUDNN_VERSION="7"\n')
42-
43-
if argv == "--mkl":
36+
bazel_rc.write('build --define using_cuda_serving=true\n')
37+
bazel_rc.write('build --action_env TF_CUDA_VERSION="11.0"\n')
38+
bazel_rc.write('build --action_env TF_CUDNN_VERSION="8"\n')
39+
bazel_rc.write('build --action_env TF_NCCL_VERSION="2"\n')
40+
bazel_rc.write('build --action_env TF_CUDA_PATHS="/usr/local/cuda,/usr,/home/pai"\n')
41+
bazel_rc.write('build --action_env CUDA_TOOLKIT_PATH="/usr/local/cuda"\n')
42+
bazel_rc.write('build --action_env TF_CUDA_COMPUTE_CAPABILITIES="7.5,8.0"\n')
43+
bazel_rc.write('build --action_env LD_LIBRARY_PATH="/home/pai/lib:/usr/local/nvidia/lib:/usr/local/nvidia/lib64:/usr/local/cuda/lib64:/usr/local/cuda/extras/CUPTI/lib64:/usr/lib/x86_64-linux-gnu"\n')
44+
bazel_rc.write('build --action_env GCC_HOST_COMPILER_PATH="/usr/bin/gcc"\n')
45+
bazel_rc.write('build --define using_cuda_nvcc=true\n')
46+
bazel_rc.write('build --define using_cuda_clang=false\n')
47+
bazel_rc.write('build --define using_cuda=true\n')
48+
bazel_rc.write('build --copt="-DGOOGLE_CUDA=1"\n')
49+
bazel_rc.write('build --crosstool_top=@local_config_cuda//crosstool:toolchain\n')
50+
bazel_rc.write('build --action_env TF_NEED_CUDA=1\n')
51+
elif argv == "--cuda_alios":
52+
print("Bazel will build with --cuda_alios")
53+
bazel_rc.write('build --define using_cuda_serving=true\n')
54+
bazel_rc.write('build --action_env TF_CUDA_VERSION="11.2"\n')
55+
bazel_rc.write('build --action_env TF_CUDNN_VERSION="8.1.1"\n')
56+
bazel_rc.write('build --action_env TF_NCCL_VERSION="2.11.4"\n')
57+
bazel_rc.write('build --action_env TF_CUDA_PATHS="/usr/local/cuda,/usr,/home/pai"\n')
58+
bazel_rc.write('build --action_env CUDA_TOOLKIT_PATH="/usr/local/cuda"\n')
59+
bazel_rc.write('build --action_env CUDNN_INSTALL_PATH="/usr/local/cuda"\n')
60+
bazel_rc.write('build --action_env NCCL_INSTALL_PATH="/usr/local/cuda"\n')
61+
bazel_rc.write('build --action_env TF_CUDA_COMPUTE_CAPABILITIES="7.5,8.0"\n')
62+
bazel_rc.write('build --action_env GCC_HOST_COMPILER_PATH="/usr/bin/gcc"\n')
63+
bazel_rc.write('build --action_env LD_LIBRARY_PATH="/usr/local/nvidia/lib64:/usr/local/cuda/lib64:/usr/local/cuda/extras/CUPTI/lib64:/usr/local/lib64::/usr/lib/python2.7/site-packages/tensorflow"\n')
64+
bazel_rc.write('build --define using_cuda_nvcc=true\n')
65+
bazel_rc.write('build --define using_cuda_clang=false\n')
66+
bazel_rc.write('build --define using_cuda=true\n')
67+
bazel_rc.write('build --copt="-DGOOGLE_CUDA=1"\n')
68+
bazel_rc.write('build --crosstool_top=@local_config_cuda//crosstool:toolchain\n')
69+
bazel_rc.write('build --action_env TF_NEED_CUDA=1\n')
70+
elif argv == "--mkl":
4471
print("Bazel will build with --mkl")
4572
bazel_rc.write("build --define=build_with_mkl=true --define=enable_mkl=true\n")
4673
elif argv == "--mkl_open_source_only":
@@ -87,6 +114,8 @@ def write_config():
87114
# Stay with 10.13 for macOS
88115
bazel_rc.write('build:macos --copt="-mmacosx-version-min=10.13"\n')
89116
bazel_rc.write('build:macos --linkopt="-mmacosx-version-min=10.13"\n')
117+
bazel_rc.write('build:opt --define with_default_optimizations=true\n')
118+
bazel_rc.write('build:opt --copt=-Wno-sign-compare\n')
90119
bazel_rc.close()
91120
except OSError:
92121
print("ERROR: Writing .bazelrc")

serving/processor/serving/BUILD

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,10 @@ tf_cc_shared_object(
2828
"processor.h",],
2929
deps = [
3030
"model_serving",
31-
],
31+
] + select({
32+
"//conditions:default": [],
33+
"//tensorflow:using_cuda_serving":
34+
["@local_config_cuda//cuda:cudart"]}),
3235
)
3336

3437
cc_library(

tensorflow/BUILD

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -349,6 +349,13 @@ config_setting(
349349
visibility = ["//visibility:public"],
350350
)
351351

352+
config_setting(
353+
name = "using_cuda_serving",
354+
define_values = {
355+
"using_cuda_serving": "true",
356+
},
357+
)
358+
352359
config_setting(
353360
name = "using_cuda_clang",
354361
define_values = {

0 commit comments

Comments
 (0)