编译PaddlePaddle时如何动态链接 libcudart.so (CUDA Runtime Library)
Created by: grizzzzzzzzzzly
-
版本、环境信息: 1)PaddlePaddle版本:release/1.5, git commit 5df0991f 2)GPU:NVIDIA RTX 2080Ti, CUDA 10.0, Driver 430 3)系统环境:Ubuntu 16.04, Python 3.5, GCC 5.4
-
安装方式信息: 本地编译:
cmake .. -DPY_VERSION=3.5 -DWITH_GPU=ON -DWITH_DSO=ON -DCUDNN_ROOT=/usr/local/cuda-10.0/lib64 -DCMAKE_BUILD_TYPE=Release -DCUDA_ARCH_NAME=Auto make -j16
-
现象:
虽然其余的CUDA库(例如cublas, cudnn等)都是通过dlopen的方式动态加载的,但 CUDA Runtime 库仍然是静态编译的。
为验证这一点,只需安装编译后的wheel包 (pip3 install --user),检查 core_avx.so 即可:
readelf -s --wide ~/.local/lib/python3.5/site-packages/paddle/fluid/core_avx.so | grep "cudaGetDeviceCount"
输出为
19825: 00000000037d5100 19 OBJECT LOCAL DEFAULT 14 _ZZ18cudaGetDeviceCountE12__FUNCTION__
22588: 0000000003359e60 402 FUNC LOCAL DEFAULT 12 cudaGetDeviceCount
很显然编译时链接了 libcudart_static.a。
- 问题:
我要如何配置cmake,使得编译时链接CUDA Runtime动态库 libcudart.so ?