我有一个C项目,Cmake
其中嵌入了cuda
内核模块。
我想通过--ptxas-options=-v
只nvcc
在-为了查看
每线程寄存器的使用数量和
每块共享内存使用。
通过搜索如何将标志传递给nvcc
in Cmake
,我遇到了一个解决方案
add_compile_options(myprog
PRIVATE
$<$<COMPILE_LANGUAGE:C>:-Wall>
$<$<COMPILE_LANGUAGE:CUDA>:-arch=sm_20 -ptxas-options=-v>
)
Run Code Online (Sandbox Code Playgroud)
但这并没有显示上述属性。我认为这些标志没有nvcc
正确传递。
如何传递--ptxas-options=-v
给nvcc
编译器?
cmake cuda的更新方法设置了其他一些变量。在此处检查文档。
我们需要设置CMAKE_ <LANG> _FLAGS,实际上是CMAKE_CUDA_FLAGS
在这里。
set(CMAKE_CUDA_FLAGS "${CMAKE_CUDA_FLAGS} --ptxas-options=-v")
Run Code Online (Sandbox Code Playgroud)
仅在目标上设置CUDA标志的正确方法是
target_compile_options(<my_target> PRIVATE $<$<COMPILE_LANGUAGE:CUDA>:my_cuda_option>)
Run Code Online (Sandbox Code Playgroud)
这将通过生成器表达式设置仅针对以CUDA语言编译的文件的选项。
根据CMAKE_CUDA_FLAGS
其他答案的建议使用,为所有目标设置全局属性,根据用例的不同,这可能是正确的方法,也可能不是正确的方法。
归档时间: |
|
查看次数: |
2211 次 |
最近记录: |