我安装了Visual Studio 2017和Cuda Toolkit 9.1。它正在运作,我通过建立一些项目来证实它。
现在,当我编辑.cu文件并按下构建时。它说该项目已经是最新的。在使用rebuild时,只能将更改构建到新的二进制文件中。
答案 0 :(得分:4)
解决方法是使用Build -> Compile
或 Ctrl + F7 来强制编译而不是构建。
这为我解决了这个问题,但请注意我在随后采用上述解决方法之前最初尝试Build -> Run Code Analysis on File
(也有效)。
答案 1 :(得分:1)
在NVidia提交错误报告后,他们在下一个工作日解决了问题,并承诺在下一版Nsight Visual Studio中提供此修复程序。 (我目前正在使用CUDA 10.0附带的Nsight Visual Studio 6.0。)
无论何时发布,我都希望能试用新版本,我对他们的响应速度感到惊讶。
答案 2 :(得分:1)
Microsoft修改了VS 2017中检测源代码更改的方式。
从chrispy81上的Nvidia Developer Forum编写了一个解决方案。
In the CUDA 10.0.targets files:
"C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\VC\VCTargets\BuildCustomizations\CUDA 10.0.targets"
"C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V110\BuildCustomizations\CUDA 10.0.targets"
"c:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0\extras\visual_studio_integration\MSBuildExtensions\CUDA 10.0.targets"
under this tag:
<WriteLinesToFile
Condition="'%(CudaCompile.ExcludedFromBuild)' != 'true'"
File="%(CudaCompile.DepsOutputPath)"
Lines="@(_CudaCompileDeps)"
Overwrite="true" />
write this:
<PropertyGroup>
<CudaCompileItemFullPath>%(CudaCompile.FullPath)</CudaCompileItemFullPath>
</PropertyGroup>
<GetOutOfDateItems
Condition ="'$(SelectedFiles)' == ''"
Sources ="%(CudaCompile.FullPath);
@(_CudaCompileDeps)"
OutputsMetadataName ="Outputs"
DependenciesMetadataName ="AdditionalInputs"
CommandMetadataName ="Command"
TLogDirectory ="$(TLogLocation)"
TLogNamePrefix ="%(CudaCompile.Filename)%(CudaCompile.Extension)$(CudaCompileItemFullPath.GetHashCode())">
<Output TaskParameter="OutOfDateSources" ItemName="CudaBuildCoreOutOfDateItems"/>
</GetOutOfDateItems>
答案 3 :(得分:1)
好消息! 此问题已得到解决,可通过2019年2月发布的CUDA 10.1工具包获得。 https://developer.nvidia.com/cuda-toolkit
很抱歉,漫长的等待。