Files
CMake/Help/prop_tgt/CUDA_ARCHITECTURES.rst
T
Brad King e450d55552 Help: Update CUDA_ARCHITECTURES docs for generic all/all-major support
Since commit 8f64df0a7c (CUDA: Generic all and all-major support,
2021-12-19, v3.23.0-rc1~23^2), these special values do not require any
specific compiler or version.

While at it, re-organize CUDA_ARCHITECTURES special value documentation.
Move the `versionadded` markup inside each special value so we can add
more in future versions.
2022-02-28 21:30:23 -05:00

57 lines
1.6 KiB
ReStructuredText

CUDA_ARCHITECTURES
------------------
.. versionadded:: 3.18
List of architectures to generate device code for.
An architecture can be suffixed by either ``-real`` or ``-virtual`` to specify
the kind of architecture to generate code for.
If no suffix is given then code is generated for both real and virtual
architectures.
A non-empty false value (e.g. ``OFF``) disables adding architectures.
This is intended to support packagers and rare cases where full control
over the passed flags is required.
This property is initialized by the value of the :variable:`CMAKE_CUDA_ARCHITECTURES`
variable if it is set when a target is created.
The ``CUDA_ARCHITECTURES`` target property must be set to a non-empty value on targets
that compile CUDA sources, or it is an error. See policy :policy:`CMP0104`.
The ``CUDA_ARCHITECTURES`` may be set to one of the following special values:
``all``
.. versionadded:: 3.23
Compile for all supported major and minor real architectures,
and the highest major virtual architecture.
``all-major``
.. versionadded:: 3.23
Compile for all supported major real architectures, and the highest
major virtual architecture.
Examples
^^^^^^^^
.. code-block:: cmake
set_target_properties(tgt PROPERTIES CUDA_ARCHITECTURES "35;50;72")
Generates code for real and virtual architectures ``30``, ``50`` and ``72``.
.. code-block:: cmake
set_property(TARGET tgt PROPERTY CUDA_ARCHITECTURES 70-real 72-virtual)
Generates code for real architecture ``70`` and virtual architecture ``72``.
.. code-block:: cmake
set_property(TARGET tgt PROPERTY CUDA_ARCHITECTURES OFF)
CMake will not pass any architecture flags to the compiler.