I have a C project in Cmake
in which I have embedded cuda
kernel module.
I want to pass --ptxas-options=-v
only to nvcc
in-order to view
Number of registers usage per thread and
shared Memory usage per block.
By searching on howto pass flags to nvcc
in Cmake
, I came across a solution
add_compile_options(myprog
PRIVATE
$<$<COMPILE_LANGUAGE:C>:-Wall>
$<$<COMPILE_LANGUAGE:CUDA>:-arch=sm_20 -ptxas-options=-v>
)
but this didn't show me the above properties. I think these flags aren't passed to nvcc
properly.
How can I pass --ptxas-options=-v
to my nvcc
compiler ?
The proper way to set CUDA flags only on a target is
target_compile_options(<my_target> PRIVATE $<$<COMPILE_LANGUAGE:CUDA>:my_cuda_option>)
This will set the option, via the generator expression, only for files which are compiled for the CUDA language.
Using CMAKE_CUDA_FLAGS
as suggested by the other answer sets a global property for all targets, which might or might not be the right approach depending on the use-case.