diff options
author | pg <pg@yandex-team.com> | 2024-08-06 22:59:44 +0300 |
---|---|---|
committer | pg <pg@yandex-team.com> | 2024-08-06 23:11:09 +0300 |
commit | 045f1ade465bf5af64ef1ceeeb94e23294c33437 (patch) | |
tree | f6257186d6c6673c5b54131eb016309e2b47f93b | |
parent | b42c0ae657e48443d35b4efe6d66127febe004d8 (diff) | |
download | ydb-045f1ade465bf5af64ef1ceeeb94e23294c33437.tar.gz |
b6ee53f9af602a963f352ed37c717dead1f8cef3
-rw-r--r-- | build/conf/linkers/ld.conf | 2 | ||||
-rw-r--r-- | build/scripts/link_dyn_lib.py | 9 | ||||
-rw-r--r-- | build/ymake.core.conf | 3 |
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 } |