aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorkickbutt <kickbutt@yandex-team.com>2024-01-29 11:27:41 +0300
committerkickbutt <kickbutt@yandex-team.com>2024-01-29 11:56:14 +0300
commit4b605b17b574e396e4cac8fe2c92ed0841ec5f6f (patch)
tree692e92958fcefbf539cd7207b01a499adf76d841
parent205e9a87fb80f5d30416efeda3e5de61464f0ffc (diff)
downloadydb-4b605b17b574e396e4cac8fe2c92ed0841ec5f6f.tar.gz
Fix bugs in CUDA libs pruning
Чиним две проблемы, обнаруженные опытным путём: * во-первых, cudart не содержит никакого девайсного кода, поэтому её не имеет смысла прунить * во-вторых, нам для линковки могут передать несуществующие директории, поэтому делаем код проверок чуть более многословным
-rw-r--r--build/scripts/link_exe.py9
1 files changed, 7 insertions, 2 deletions
diff --git a/build/scripts/link_exe.py b/build/scripts/link_exe.py
index 980ac05d7e..4650315b89 100644
--- a/build/scripts/link_exe.py
+++ b/build/scripts/link_exe.py
@@ -52,6 +52,11 @@ def prune_cuda_libraries(cmd, prune_arches, nvprune_exe, build_root):
_, ver = arch.split('_', 1)
return 'compute_{}'.format(ver)
+ libs_to_prune = set(CUDA_LIBRARIES)
+
+ # does not contain device code, nothing to prune
+ libs_to_prune.remove('-lcudart_static')
+
tmp_names_gen = name_generator('cuda_pruned_libs')
arch_args = []
@@ -62,10 +67,10 @@ def prune_cuda_libraries(cmd, prune_arches, nvprune_exe, build_root):
flags = []
cuda_deps = set()
for flag in reversed(cmd):
- if flag in CUDA_LIBRARIES:
+ if flag in libs_to_prune:
cuda_deps.add('lib' + flag[2:] + '.a')
flag += '_pruned'
- elif flag.startswith('-L') and any(f in cuda_deps for f in os.listdir(flag[2:])):
+ elif flag.startswith('-L') and os.path.exists(flag[2:]) and os.path.isdir(flag[2:]) and any(f in cuda_deps for f in os.listdir(flag[2:])):
from_dirpath = flag[2:]
from_deps = list(cuda_deps & set(os.listdir(from_dirpath)))