强制NVCC直接进入链接阶段

问题描述 投票:0回答:1

我正在使用MSVC将GPU应用程序移植到Windows,这在NVCC中似乎不太好用。我将编译和链接阶段分开了。 nvcc将仅预处理cuda文件:

nvcc -dc -ccbin cl somefile.cu

cl将编译其他所有内容:

cl anotherfile.c

此分隔是必要的,因为许多MSVC标志(此处不包括)并未与nvcccl.exe换行(相关症状here)相对应。

完成编译后,有两种方法可以进行链接。

  1. 使用nvcc链接 CUDA设备代码,然后使用link.exe链接所有内容,如this guide所述。

[尽我所能,我无法获得link来查找CUDA头,也找不到任何有关如何将link指向cudart库的文档。只要它像他们的g++示例一样简单!

  1. nvcc完成所有链接。

但是,根据doc,没有“没有选择”可以跳转到链接阶段。因此,当我尝试链接所有内容时,请使用...

nvcc somefile.o anotherfile.o -o app.exe

我收到cl的一些警告!

cl : Command line warning D9024 : unrecognized source file type 'somefile.o', object file assumed
cl : Command line warning D9024 : unrecognized source file type 'anotherfile.o', object file assumed

自然,nvcc假定这些目标文件是源代码,并将它们发送到cl,因为该文档包括:

请注意,nvcc在对象,库或资源文件之间没有任何区别。

Of course cl抱怨–这些目标文件应直接传递给链接器。我知道link最终会被调用,因为我通过-Xlinker传递了一些无关的参数。在这些警告之后,确实编译了app.exe

尽管文档指示没有链接器相位参数,但如何强制nvcclink对象,而不将其错误地传递给cl?没有办法抑制这些警告(至少在没有stackoverflow社区的condemned的情况下)。

我正在使用MSVC将GPU应用程序移植到Windows,这在NVCC中似乎不太好用。我将编译和链接阶段分开了。 nvcc将仅预处理cuda文件:...

visual-c++ linker nvcc cl
1个回答
0
投票

http://github.com/fangq/mcx签出我的cuda代码

© www.soinside.com 2019 - 2024. All rights reserved.