summaryrefslogtreecommitdiffstats
path: root/Tests/CudaOnly
Commit message (Collapse)AuthorAgeFilesLines
* FindCUDAToolkit: Support the new `nvJitLink` library in CUDA 12Robert Maynard2022-12-121-0/+4
|
* FindCUDAToolkit: Ensure that paths provided have no symlinksRobert Maynard2022-11-301-0/+6
| | | | Fixes: #24188
* Merge topic 'ci-nvhpc'Brad King2022-11-291-4/+5
|\ | | | | | | | | | | | | | | 16a5c36795 gitlab-ci: add nightly job testing NVHPC with Ninja on Linux 9474d02386 Tests: Clarify CudaOnly.SeparateCompilationPTX output Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !7946
| * Tests: Clarify CudaOnly.SeparateCompilationPTX outputBrad King2022-11-231-4/+5
| |
* | Tests: Don't presume that Linux CUDA Toolkits provide static libsRobert Maynard2022-11-2310-34/+105
|/
* FindCUDAToolkit: Restore usage from multiple directoriesRobert Maynard2022-11-024-0/+33
| | | | Fixes #24119
* CUDA: Revert "Always mark cuda toolkit as system include"Robert Maynard2022-10-174-20/+2
| | | | | | | | We need to revert this change as it can disable error messages when compiling invalid CUDA code. This reverts commit ea659b155d (CUDA: Always mark cuda toolkit as system include, 2022-06-27, v3.25.0-rc1~269^2).
* CUDA: Always mark cuda toolkit as system includeRobert Maynard2022-08-184-2/+20
| | | | Fixes: #23731
* CUDA: Add Device LTO support for nvccRobert Maynard2022-07-226-11/+138
| | | | Fixes #22200
* CUDA: native/all/all-major generates minimal set of ptx codeRobert Maynard2022-05-031-0/+1
| | | | Fixes #23459
* Merge topic 'ninja_compile_database_understand_new_cuda_lang_variables'Brad King2022-03-311-0/+2
|\ | | | | | | | | | | | | | | f7c6b9833c CUDA: Ninja generator generates valid compile database Acked-by: Kitware Robot <kwrobot@kitware.com> Acked-by: buildbot <buildbot@kitware.com> Merge-request: !7129
| * CUDA: Ninja generator generates valid compile databaseRobert Maynard2022-03-301-0/+2
| | | | | | | | | | | | | | The ninja generator has been updated to poperly write the compile database when the CUDA language has been enabled. Fixes #23368
* | CUDA: Add support for CUDA_ARCHITECTURES=nativeBrad King2022-03-101-1/+12
| | | | | | | | | | | | | | | | | | | | | | CUDA 11.6 added the `nvcc -arch=native` flag to automatically compile for the host GPUs' architectures. Add support for specifying this special `native` value in `CMAKE_CUDA_ARCHITECTURES` and `CUDA_ARCHITECTURES`. During the compiler ABI detection step, detect the native architectures so we can pass them explicitly when using Clang or older versions of nvcc. Fixes: #22375
* | Tests: Rename CudaOnly.{All => ArchSpecial}Brad King2022-03-103-4/+4
|/ | | | | | | | | The purpose of the test is to cover special values of `CMAKE_CUDA_ARCHITECTURES`. Prepare to add more than just `all` and `all-major`. While at it, fix the `project()` name in the test to match what we pass to `ctest` with `--build-project`.
* Tests: Fix CudaOnly.SeparateCompilationPTX test project nameBrad King2022-02-161-1/+1
| | | | | | | | | | | | Fix the test added by commit 61b9764b03 (CUDA: Allow both CUDA_SEPARABLE_COMPILATION and CUDA_PTX_COMPILATION, 2021-09-17, v3.23.0-rc1~516^2) to have a `project()` name matching what is passed to CTest's `--build-project` option. Otherwise, on VS builds, MSBuild warns: MSBUILD : error MSB1009: Project file does not exist. Other CUDA tests use a matching project name already.
* CUDA: Generic all and all-major supportRaul Tambre2022-02-011-34/+46
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Commit 14d8a276 (CUDA: Support nvcc 11.5 new -arch=all|all-major flags, 2021-08-17) added all and all-major options to CUDA_ARCHITECTURES. These are fairly generic and likely to see real-world use by distributors. Thus it's desirable to support these also for Clang and older NVCC versions. The supported architectures are dependent on the toolkit version. We determine the toolkit version prior to compiler detection. For NVCC we get the version from the vendor identification output, but for Clang we need to invoke NVCC separately. The architecture information is mostly based on the Wikipedia list with the earliest supported version being CUDA 7.0. This could be documented and expanded in the future to allow projects to query CUDA toolkit version and architecture information. For Clang we additionally constrain based on its support. Additionally the architecture mismatch detection logic is fixed, improved and updated for generic support: * Commit 01428c55 (CUDA: Fail fast if CMAKE_CUDA_ARCHITECTURES doesn't work during detection, 2020-08-29) enabled CMAKE_CUDA_COMPILER_ID_REQUIRE_SUCCESS if CMAKE_CUDA_ARCHITECTURES is specified. This results in CMakeDetermineCompilerID.cmake printing the compiler error and our code for presenting the mismatch in a user-friendly way being useless. The custom logic seems preferable so go back to not enabling it. * Commit 14d8a276 (CUDA: Support nvcc 11.5 new -arch=all|all-major flags, 2021-08-17) tried to support CMP0054 but forgot to add x to the interpolated result. Thus the conditions would always evaluate to false. This is fixed as a byproduct of removing NVIDIA specific checks, improving the error message and replacing architectures_mode with a simpler architectures_explicit. Visual Studio support omits testing the flags during detection due to complexities in determining the toolkit version when using it. A long-term proper implementation would be #23161. Implements #22860.
* CUDA: Visual Studio Generator propagates definitions for PTX filesunknown2021-12-143-0/+8
| | | | | | | | From CUDA 9.0 to CUDA 11.4 the CUDA Visual Studio integration defines omitted user defines from PTX generation. With CUDA 11.5 this has been resolved, so we backport the fix to allow for consistent behavior when using CMake
* CUDA: Support nvcc 11.5 new -arch=all|all-major flagsRobert Maynard2021-11-013-0/+49
|
* CUDA: Allow both CUDA_SEPARABLE_COMPILATION and CUDA_PTX_COMPILATIONRobert Maynard2021-10-206-1/+97
| | | | | | The target properties `CUDA_SEPARABLE_COMPILATION` and `CUDA_PTX_COMPILATION` now aren't mutually exclusive and can now be used together on the same target.
* CUDA/Clang: Fix separable compilation in non-root directories with Makefilesroot2021-07-294-21/+22
| | | | | | | | Seems the relative paths were wrong basically all around such that only compiling files in the top-level directory would work. I've modified CudaOnly.SeparateCompilation to cover this. Fixes #22482.
* FindCUDAToolkit: Robust version checks when CUDA lang is not enabledRobert Maynard2021-02-094-0/+39
| | | | | | Previously if you set `CMAKE_CUDA_COMPILER` but hadn't enabled the CUDA language, FindCUDAToolkit would not correctly compute the version information.
* CUDA: Fix tests with CUDAARCHS setRaul Tambre2020-11-302-1/+6
| | | | | | | With CUDAARCHS there's the possibility of tests being run with multiple architectures or having CMAKE_CUDA_ARCHITECTURES set with NVCC despite CMP0104 being OLD. Fix a few tests to work properly in such cases.
* CUDA: Clang separable compilationRaul Tambre2020-09-241-19/+17
| | | | | | | | | | | | For NVCC the compiler takes care of device linking when passed the "-dlink" flag. Clang doesn't support such magic and requires the buildsystem to do the work that NVCC does behind the scenes. The implementation is based on Bazel's device linking documentation: https://github.com/tensorflow/tensorflow/blob/7cabcdf073abad8c46e9dda62bb8fa4682d2061e/third_party/nccl/build_defs.bzl.tpl#L259 Closes: #20726
* Tests: Don't unnecessarily set CUDA_ARCHITECTURESRaul Tambre2020-09-219-28/+14
| | | | | | | | | | | | | | Architecture 30 was removed with CUDA 11, so most of the CUDA tests fail with it. Remove setting the architecture and bump the minimum version to 3.18, so CMP0104 takes effect and we can rely on the default architecture, which is guaranteed to be compilable. Use of __ldg() in ProperLinkFlags was removed as it only affects performance and is available only on sm_35 and above. Testing the functionality of CUDA_ARCHITECTURES is already covered by CudaOnly.Architecture and CudaOnly.CompileFlags.
* Fix typos identified using codespellJean-Christophe Fillion-Robin2020-07-221-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | See https://github.com/codespell-project/codespell#readme The following command was used: ``` codespell -q6 --skip="\ .git,\ *.json,\ ./Copyright.txt,\ ./Help/command/foreach.rst,\ ./Help/prop_test/REQUIRED_FILES.rst,\ ./Help/variable/CTEST_COVERAGE_COMMAND.rst,\ ./Modules/CMakeCheckCompilerFlagCommonPatterns.cmake,\ ./Modules/CMakeRCInformation.cmake,\ ./Modules/Internal/CPack/NSIS.template.in,\ ./Modules/FindMatlab.cmake,\ ./Modules/MatlabTestsRedirect.cmake,\ ./Modules/Platform/Windows-Clang.cmake,\ ./Modules/Platform/Windows-Intel-Fortran.cmake,\ ./Modules/Platform/Windows-MSVC.cmake,\ ./Source/CMakeVersion.cmake,\ ./Source/cmConvertMSBuildXMLToJSON.py,\ ./Source/cmCreateTestSourceList.cxx,\ ./Source/cmGlobalVisualStudio10Generator.cxx,\ ./Source/cmExportBuildFileGenerator.cxx,\ ./Source/cmExportInstallAndroidMKGenerator.cxx,\ ./Source/cmExportInstallFileGenerator.cxx,\ ./Source/cmExportSet.cxx,\ ./Source/cmExportTryCompileFileGenerator.cxx,\ ./Source/cmFindPackageCommand.cxx,\ ./Source/cmInstallCommand.cxx,\ ./Source/cmGeneratorExpressionLexer.cxx,\ ./Source/cmLocalVisualStudio7Generator.cxx,\ ./Source/cmOrderDirectories.cxx,\ ./Source/cmTarget.cxx,\ ./Source/kwsys/*,\ ./Source/QtDialog/CMakeSetupDialog.ui,\ ./Source/CPack/WiX/cmWIXRichTextFormatWriter.cxx,\ ./Source/CTest/cmParseCoberturaCoverage.h,\ ./Tests/CMakeTests/ImplicitLinkInfoTest.cmake.in,\ ./Tests/RunCMake/CPack/tests/DMG_SLA/English.license.rtf,\ ./Tests/RunCMake/CPack/tests/DMG_SLA/German.license.txt,\ ./Tests/RunCMake/CPack/tests/DMG_SLA/German.menu.txt,\ ./Tests/RunCMake/GoogleTest/xml_output.cpp,\ ./Tests/RunCMake/Make/TargetMessages*,\ ./Utilities/*,\ " \ -L "\ dependees,\ endwhile,\ fo,\ filetest,\ helpfull,\ nd,\ objext,\ stoll,\ supercedes,\ superceded,\ vas,\ varn,\ " ```
* CudaToolkit: Update for new/removed libraries in CUDA 11Robert Maynard2020-06-181-2/+15
|
* Tests: Fix CudaOnly.StaticRuntimePlusToolkit build rpathRobert Maynard2020-06-161-0/+6
|
* CUDA: Add support for disabling CUDA_ARCHITECTURESRaul Tambre2020-06-151-2/+12
| | | | | | | | | | The ability to disable adding architectures completely for packaging purposes and cases requiring passing the architectures flags explicitly has been requested. Support a false value for CUDA_ARCHITECTURES and CMAKE_CUDA_ARCHITECTURES for this purpose. Implements #20821.
* Tests: add CUDA labels to tests which are affected by CUDABen Boeckel2020-06-111-15/+24
|
* Merge branch 'backport-cuda-default-runtime' into cuda-default-runtimeBrad King2020-05-223-0/+22
|\
| * CUDA: Compute CMAKE_CUDA_RUNTIME_LIBRARY default from toolchainRobert Maynard2020-05-213-0/+21
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Since commit 0d0145138f (CUDA: Add abstraction for cuda runtime selection, 2019-11-29, v3.17.0-rc1~83^2) we add CUDA runtime library selection flags by default. To maintain backwards compatibility the default CUDA runtime library needs to be computed based on what libraries are found on the initial compiler invocation. For example a toolchain could establish initial flags that have all CUDA compilations using the runtime version, and if we don't detect this we will try to link to both the static and shared runtime. Co-Author: Brad King <brad.king@kitware.com> Fixes: #20708
* | Tests: Restore NVCC-specific CUDA testsBrad King2020-05-202-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In commit a653ca9504 (Tests: Update CUDA tests to work with Clang, 2020-03-27) some tests were conditioned using `CMAKE_CUDA_COMPILER_ID`. That is not defined when configuring CMake itself, so it accidentally turned off NVCC-specific CUDA tests altogether. Convert the conditions to check `CMake_TEST_CUDA` for `Clang` instead. That option is added explicitly to builds where we want the tests to run, so we can set it to a value indicating the CUDA compiler vendor. In commit a653ca9504 (Tests: Update CUDA tests to work with Clang, 2020-03-27) the NVCC-specific `CudaOnly.GPUDebugFlag` test was accidentally broken by removing a space when appending `-G` to the CUDA flags. This was covered by the test not running. Restore the space. Fixes: #20727
* | Tests: Update CUDA tests to work with ClangRaul Tambre2020-05-157-39/+44
| |
* | CUDA: Add CudaOnly.CompileFlags testRaul Tambre2020-04-153-0/+33
| | | | | | | | Covers passing compile flags explicitly for both NVCC and Clang.
* | CUDA: Convert tests to use CUDA_ARCHITECTURESRaul Tambre2020-04-157-21/+7
| |
* | CUDA: Add CUDA_ARCHITECTURES target propertyRaul Tambre2020-04-153-0/+15
|/ | | | | | | | | | | Simplifies CUDA target architecture handling. Required for Clang support as Clang doesn't automatically select a supported architecture. We detect a supported architecture during compiler identification and set CMAKE_CUDA_ARCHITECTURES to it. Introduces CMP0104 for backwards compatibility with manually setting code generation flags with NVCC. Implements #17963.
* CUDA: Add abstraction for cuda runtime selectionRobert Maynard2020-01-2722-3/+722
| | | | | Fixes #17559 Replace our hard-coded default of cudart=static with a first-class abstraction to select the runtime library from an enumeration of logical names.
* CUDA: MSVC + NVCC support --compiler-options compiler flagRobert Maynard2020-01-021-1/+1
| | | | Fixes #20164
* FindCUDAToolkit: correct searches for Toolkit componentsRobert Maynard2019-12-161-11/+1
|
* FindCUDAToolkit: Improve usage, library set, and testsRobert Maynard2019-12-163-0/+63
| | | | | | Refined the initial design of FindCUDAToolkit and improve it by adding more library support, more toolkit information and tests.
* CUDA: Add cuda meta-features (e.g. ``cuda_std_11``) supportRobert Maynard2019-12-106-6/+33
|
* Revise include order using clang-format-6.0Kitware Robot2019-10-012-3/+4
| | | | | Run the `clang-format.bash` script to update our C and C++ code to a new include order `.clang-format`. Use `clang-format` version 6.0.
* CUDA: static lib device linking computes required static libsRobert Maynard2019-09-056-44/+42
| | | | | | Previously the CMake didn't compute the required set of libraries needed to properly device link a static library when CUDA_RESOLVE_DEVICE_SYMBOLS was enabled.
* CUDA: Support CMAKE_CUDA_RESOLVE_DEVICE_SYMBOLS global variableRobert Maynard2019-08-061-1/+1
|
* CUDA: Support compiler id and version generator expressionsRobert Maynard2019-03-112-0/+10
| | | | | Introduce the CUDA_COMPILER_ID and CUDA_COMPILER_VERSION generator expressions.
* CUDA: Honor CUDA_RESOLVE_DEVICE_SYMBOLS for more target typesRobert Maynard2019-02-055-0/+151
| | | | | | | `CUDA_RESOLVE_DEVICE_SYMBOLS` can be used with shared, module, and executable target types. This relaxation is to allow for better interoperability with linkers that automatically do CUDA device symbol resolution and have no way to disable it.
* CUDA: Add test for device linking when host linking uses threadsRobert Maynard2018-10-243-99/+0
| | | | | | | | | Convert the `CudaOnly.LinkSystemDeviceLibraries` test to a new `Cuda.ProperDeviceLibraries` test. The former covered only the `cublas_device` library which is removed by CUDA 10. Extend the new test to also cover various cases of using threads. Issue: #18008
* Tests: Fix Cuda test project namesBrad King2018-10-109-9/+9
| | | | | Make them match what `ADD_TEST_MACRO` gives to ctest as the project name to build so that the `.sln` file will be found.
* Merge topic 'cuda-no-cublas_device'Brad King2018-08-241-0/+6
|\ | | | | | | | | | | | | 122c79748c CUDA: Avoid using deprecated cublas_device to identify device lib dirs Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !2296
| * CUDA: Avoid using deprecated cublas_device to identify device lib dirsRobert Maynard2018-08-231-0/+6
| | | | | | | | | | | | | | Use `curand_static` to identify directories containing device libraries because `cublas_device` is deprecated and will be removed in the future. Issue: #18290