CUDA_ARCHITECTURES

New in version 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 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 CMP0104.

The CUDA_ARCHITECTURES may be set to one of the following special values:

all

New in version 3.23.

Compile for all supported major and minor real architectures, and the highest major virtual architecture.

all-major

New in version 3.23.

Compile for all supported major real architectures, and the highest major virtual architecture.

native

New in version 3.24.

Compile for the architecture(s) of the host's GPU(s).

Examples

set_target_properties(tgt PROPERTIES CUDA_ARCHITECTURES "35;50;72")

Generates code for real and virtual architectures 30, 50 and 72.

set_property(TARGET tgt PROPERTY CUDA_ARCHITECTURES 70-real 72-virtual)

Generates code for real architecture 70 and virtual architecture 72.

set_property(TARGET tgt PROPERTY CUDA_ARCHITECTURES OFF)

CMake will not pass any architecture flags to the compiler.