mirror of
https://gitlab.kitware.com/cmake/cmake.git
synced 2026-09-29 04:09:35 +03:00
VS: Avoid unnecessary CUDA device linking for OBJECT libraries
Without `CudaLink` fields, MSBuild tries to perform a device link step for object libraries with CUDA_SEPARABLE_COMPILATION on them even when not needed. This commonly was encountered when generating PTX or OPTIX-IR output.
This commit is contained in:
committed by
Brad King
parent
9aa25ed804
commit
6ebff6ebf8
@@ -3855,7 +3855,10 @@ bool cmVisualStudio10TargetGenerator::ComputeCudaLinkOptions(
|
||||
void cmVisualStudio10TargetGenerator::WriteCudaLinkOptions(
|
||||
Elem& e1, std::string const& configName)
|
||||
{
|
||||
if (this->GeneratorTarget->GetType() > cmStateEnums::MODULE_LIBRARY) {
|
||||
// We need to write link options for OBJECT libraries so that
|
||||
// we override the default device link behavior ( enabled ) when
|
||||
// building object libraries with ptx/optix-ir/etc
|
||||
if (this->GeneratorTarget->GetType() > cmStateEnums::OBJECT_LIBRARY) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -10,6 +10,7 @@ ${CMAKE_CURRENT_SOURCE_DIR}/../CUBIN/kernelB.cu
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../CUBIN/kernelC.cu)
|
||||
|
||||
set_property(TARGET CudaFATBIN PROPERTY CUDA_FATBIN_COMPILATION ON)
|
||||
set_property(TARGET CudaFATBIN PROPERTY CUDA_SEPARABLE_COMPILATION ON)
|
||||
|
||||
# Will use `cuModuleLoadFatBinary` to load the fatbinaries
|
||||
add_executable(CudaOnlyFatbin main.cu)
|
||||
|
||||
@@ -13,6 +13,7 @@ if(CMAKE_CUDA_COMPILER_VERSION VERSION_GREATER_EQUAL "11.7.0")
|
||||
set_property(TARGET CudaOptix PROPERTY CUDA_OPTIX_COMPILATION ON)
|
||||
endif()
|
||||
|
||||
set_property(TARGET CudaOptix PROPERTY CUDA_SEPARABLE_COMPILATION ON)
|
||||
set_property(TARGET CudaOptix PROPERTY CUDA_ARCHITECTURES native)
|
||||
|
||||
add_executable(CudaOnlyOptixIR main.cu)
|
||||
|
||||
Reference in New Issue
Block a user