diff options
author | deshevoy <deshevoy@yandex-team.com> | 2024-06-05 21:19:01 +0300 |
---|---|---|
committer | deshevoy <deshevoy@yandex-team.com> | 2024-06-05 21:31:28 +0300 |
commit | 6e903ff513003db32d13f88978a23fd9502b726f (patch) | |
tree | 47b4dfda6f04cb98e64a8a785da890815b98f910 | |
parent | 6e1f57ea06d70691f706f16934e65b8d2928f9a1 (diff) | |
download | ydb-6e903ff513003db32d13f88978a23fd9502b726f.tar.gz |
[build] cuda: Do not use nvcc profile
This prevents nvcc from using host include/library dirs when cross-compiling.
ISSUE:
61bbc56341d7e8659f4205683ed11d7ff79b34d6
-rw-r--r-- | build/ymake.core.conf | 3 | ||||
-rwxr-xr-x | build/ymake_conf.py | 15 |
2 files changed, 16 insertions, 2 deletions
diff --git a/build/ymake.core.conf b/build/ymake.core.conf index acfd429cb2d..ac28d6c7b3a 100644 --- a/build/ymake.core.conf +++ b/build/ymake.core.conf @@ -4117,7 +4117,8 @@ macro CUDA_NVCC_FLAGS(Flags...) { ### This generates a stub object devlink.o that supplies missing pieces for the ### host linker to link relocatable device objects into the final executable. macro NVCC_DEVICE_LINK(Srcs...) { - .CMD=$NVCC_OLD $NVCC_FLAGS -o ${output;suf=${OBJ_SUF}${NVCC_OBJ_EXT}:"devlink"} -dlink ${input;suf=${OBJ_SUF}${NVCC_OBJ_EXT}:Srcs} ${hide;kv:"p DL"} ${hide;kv:"pc light-blue"} + .CMD=$NVCC_OLD $NVCC_FLAGS -o ${output;suf=${OBJ_SUF}${NVCC_OBJ_EXT}:"devlink"} -dlink ${input;suf=${OBJ_SUF}${NVCC_OBJ_EXT}:Srcs} -I$CUDA_TARGET_ROOT/include $NVCC_ENV ${hide;kv:"p DL"} ${hide;kv:"pc light-blue"} + .PEERDIR=build/platform/cuda } # tag:flags diff --git a/build/ymake_conf.py b/build/ymake_conf.py index 34d684b8bb0..3356f80a385 100755 --- a/build/ymake_conf.py +++ b/build/ymake_conf.py @@ -2347,6 +2347,7 @@ class Cuda(object): self.have_cuda = Setting('HAVE_CUDA', auto=self.auto_have_cuda, convert=to_bool) self.cuda_root = Setting('CUDA_ROOT') + self.cuda_target_root = Setting('CUDA_TARGET_ROOT') self.cuda_version = Setting('CUDA_VERSION', auto=self.auto_cuda_version, convert=self.convert_major_version, rewrite=True) self.cuda_architectures = Setting('CUDA_ARCHITECTURES', auto=self.auto_cuda_architectures, rewrite=True) self.use_arcadia_cuda = Setting('USE_ARCADIA_CUDA', auto=self.auto_use_arcadia_cuda, convert=to_bool) @@ -2373,6 +2374,9 @@ class Cuda(object): "--expt-relaxed-constexpr", # Allow to use newer compilers than CUDA Toolkit officially supports "--allow-unsupported-compiler", + # Set paths explicitly + "--dont-use-profile", + "--libdevice-directory=$CUDA_ROOT/nvvm/libdevice", ] if not self.have_cuda.value: @@ -2384,6 +2388,13 @@ class Cuda(object): if self.use_arcadia_cuda.value: self.cuda_root.value = '$CUDA_RESOURCE_GLOBAL' + host, target = self.build.host_target + + if host == target: + self.cuda_target_root.value = '$CUDA_RESOURCE_GLOBAL' + else: + self.cuda_target_root.value = '$CUDA_TARGET_RESOURCE_GLOBAL' + if self.build.target.is_linux_x86_64 and self.build.tc.is_clang: # TODO(somov): Эта настройка должна приезжать сюда автоматически из другого места self.nvcc_flags.append('-I$OS_SDK_ROOT/usr/include/x86_64-linux-gnu') @@ -2404,6 +2415,7 @@ class Cuda(object): self.setup_vc_root() self.cuda_root.emit() + self.cuda_target_root.emit() self.cuda_version.emit() self.cuda_architectures.emit() self.use_arcadia_cuda.emit() @@ -2419,13 +2431,14 @@ class Cuda(object): emit('NVCC_OLD', '${quo:NVCC_OLD_UNQUOTED}') emit('NVCC_FLAGS', self.nvcc_flags, '$CUDA_NVCC_FLAGS') emit('NVCC_OBJ_EXT', '.o' if not self.build.target.is_windows else '.obj') + emit('NVCC_ENV', format_env({'PATH': '$CUDA_ROOT/nvvm/bin:$CUDA_ROOT/bin'})) def print_macros(self): mtime = ' ' if self.build.host_target[1].is_linux: mtime = ' --mtime ${tool:"tools/mtime0"} ' if not self.cuda_use_clang.value: - cmd = '$YMAKE_PYTHON ${input:"build/scripts/compile_cuda.py"}' + mtime + '$NVCC_OLD $NVCC_STD $NVCC_FLAGS -c ${input:SRC} -o ${output;suf=${OBJ_SUF}${NVCC_OBJ_EXT}:SRC} ${pre=-I:_C__INCLUDE} --cflags $C_FLAGS_PLATFORM $CXXFLAGS $NVCC_STD $NVCC_CFLAGS $SRCFLAGS ${input;hide:"build/platform/cuda/cuda_runtime_include.h"} $CUDA_HOST_COMPILER_ENV ${kv;hide:"p CC"} ${kv;hide:"pc light-green"}' # noqa E501 + cmd = '$YMAKE_PYTHON ${input:"build/scripts/compile_cuda.py"}' + mtime + '$NVCC_OLD $NVCC_STD $NVCC_FLAGS -c ${input:SRC} -o ${output;suf=${OBJ_SUF}${NVCC_OBJ_EXT}:SRC} ${pre=-I:_C__INCLUDE} --cflags $C_FLAGS_PLATFORM $CXXFLAGS $NVCC_STD $NVCC_CFLAGS $SRCFLAGS ${input;hide:"build/platform/cuda/cuda_runtime_include.h"} $NVCC_ENV $CUDA_HOST_COMPILER_ENV ${kv;hide:"p CC"} ${kv;hide:"pc light-green"}' # noqa E501 else: cmd = '$CXX_COMPILER_OLD --cuda-path=$CUDA_ROOT $C_FLAGS_PLATFORM -c ${input:SRC} -o ${output;suf=${OBJ_SUF}${NVCC_OBJ_EXT}:SRC} ${pre=-I:_C__INCLUDE} $CXXFLAGS $SRCFLAGS $TOOLCHAIN_ENV ${kv;hide:"p CU"} ${kv;hide:"pc green"}' # noqa E501 |