aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorpg <pg@yandex-team.com>2024-08-06 22:59:44 +0300
committerpg <pg@yandex-team.com>2024-08-06 23:11:09 +0300
commit045f1ade465bf5af64ef1ceeeb94e23294c33437 (patch)
treef6257186d6c6673c5b54131eb016309e2b47f93b
parentb42c0ae657e48443d35b4efe6d66127febe004d8 (diff)
downloadydb-045f1ade465bf5af64ef1ceeeb94e23294c33437.tar.gz
b6ee53f9af602a963f352ed37c717dead1f8cef3
-rw-r--r--build/conf/linkers/ld.conf2
-rw-r--r--build/scripts/link_dyn_lib.py9
-rw-r--r--build/ymake.core.conf3
3 files changed, 14 insertions, 0 deletions
diff --git a/build/conf/linkers/ld.conf b/build/conf/linkers/ld.conf
index 20dc87f553..0f4e387619 100644
--- a/build/conf/linkers/ld.conf
+++ b/build/conf/linkers/ld.conf
@@ -227,6 +227,7 @@ REAL_LINK_EXE_TIDY=\
REAL_LINK_EXEC_DYN_LIB_CMDLINE =\
$YMAKE_PYTHON ${input:"build/scripts/link_dyn_lib.py"} \
+ ${hide;input:"build/scripts/link_exe.py"} \
--target $TARGET
REAL_LINK_EXEC_DYN_LIB_CMDLINE+=$_LD_LINKER_OUTPUT
REAL_LINK_EXEC_DYN_LIB_CMDLINE+=\
@@ -253,6 +254,7 @@ LINK_DYN_LIB_FLAGS=
REAL_LINK_DYN_LIB_CMDLINE =\
$YMAKE_PYTHON ${input:"build/scripts/link_dyn_lib.py"} \
+ ${hide;input:"build/scripts/link_exe.py"} \
--target $TARGET
REAL_LINK_DYN_LIB_CMDLINE+=$_LD_LINKER_OUTPUT
REAL_LINK_DYN_LIB_CMDLINE+=\
diff --git a/build/scripts/link_dyn_lib.py b/build/scripts/link_dyn_lib.py
index 3b7c0d3e51..72937544b6 100644
--- a/build/scripts/link_dyn_lib.py
+++ b/build/scripts/link_dyn_lib.py
@@ -7,6 +7,7 @@ import optparse
import pipes
import thinlto_cache
+import link_exe
from process_whole_archive_option import ProcessWholeArchiveOption
from fix_py2_protobuf import fix_py2
@@ -215,6 +216,10 @@ def parse_args():
parser.add_option('--linker-output')
parser.add_option('--musl', action='store_true')
parser.add_option('--dynamic-cuda', action='store_true')
+ parser.add_option('--cuda-architectures',
+ help='List of supported CUDA architectures, separated by ":" (e.g. "sm_52:compute_70:lto_90a"')
+ parser.add_option('--nvprune-exe')
+ parser.add_option('--objcopy-exe')
parser.add_option('--whole-archive-peers', action='append')
parser.add_option('--whole-archive-libs', action='append')
parser.add_option('--custom-step')
@@ -237,6 +242,10 @@ if __name__ == '__main__':
cmd = fix_cmd_for_musl(cmd)
if opts.dynamic_cuda:
cmd = fix_cmd_for_dynamic_cuda(cmd)
+ else:
+ cuda_manager = link_exe.CUDAManager(opts.cuda_architectures, opts.nvprune_exe)
+ cmd = link_exe.process_cuda_libraries_by_nvprune(cmd, cuda_manager, opts.build_root)
+ cmd = link_exe.process_cuda_libraries_by_objcopy(cmd, opts.build_root, opts.objcopy_exe)
cmd = ProcessWholeArchiveOption(opts.arch, opts.whole_archive_peers, opts.whole_archive_libs).construct_cmd(cmd)
thinlto_cache.preprocess(opts, cmd)
diff --git a/build/ymake.core.conf b/build/ymake.core.conf
index 535da24a33..9336ae8093 100644
--- a/build/ymake.core.conf
+++ b/build/ymake.core.conf
@@ -1098,9 +1098,12 @@ module _LINK_UNIT: _BASE_UNIT {
when ($USE_DYNAMIC_CUDA != "yes") {
when ($CUDA_ARCHITECTURES) {
+ LINK_DYN_LIB_FLAGS+=--cuda-architectures $CUDA_ARCHITECTURES
LINK_SCRIPT_EXE_FLAGS+=--cuda-architectures $CUDA_ARCHITECTURES
+ LINK_DYN_LIB_FLAGS+=--nvprune-exe $CUDA_ROOT/bin/nvprune
LINK_SCRIPT_EXE_FLAGS+=--nvprune-exe $CUDA_ROOT/bin/nvprune
}
+ LINK_DYN_LIB_FLAGS+=--objcopy-exe $OBJCOPY_TOOL
LINK_SCRIPT_EXE_FLAGS+=--objcopy-exe $OBJCOPY_TOOL
}