我在我的主 cpp 文件中使用模板化 CUDA(推力库)函数,所以我需要用 CUDA NVCC 编译它。
我担心 NVCC 将如何处理我的主机代码。主机代码优化是如何发生的?NVCC 是否将主机代码传递给 MSVC 编译器并仅处理与 CUDA 相关的代码?
我在我的主 cpp 文件中使用模板化 CUDA(推力库)函数,所以我需要用 CUDA NVCC 编译它。
我担心 NVCC 将如何处理我的主机代码。主机代码优化是如何发生的?NVCC 是否将主机代码传递给 MSVC 编译器并仅处理与 CUDA 相关的代码?
是的,nvcc
是一个将主机代码和设备代码分开的编译器驱动程序。主机代码直接传递给主机编译器(cl.exe
在 microsoft windows 的情况下),主机代码的优化由主机编译器处理。
nvcc文档涵盖了此编译流程,还说明了如何将标志传递给主机编译器。