CUDAfy.NET给出Win32Exception:系统找不到指定的文件

时间:2013-01-15 13:09:40

标签: c# .net cudafy.net

我已经通过NuGet添加了对CUDAfy.NET库的引用。

<package id="CUDAfy.NET" version="1.12.4695.21111" targetFramework="net45" />

当我运行程序时,我点击Win32Exception

  

系统找不到指定的文件

这发生在程序的第一行:

CudafyModule km = CudafyTranslator.Cudafy();

异常对象没有指示他们正在尝试加载哪个文件。

我怎样才能解决这个问题?

修改

在使用.NET 4.0在VS2010中运行Codeplex下载的捆绑示例时,我看到了相同的异常。

Strack trace是:

at System.Diagnostics.Process.StartWithCreateProcess(ProcessStartInfo startInfo)
at Cudafy.CudafyModule.Compile(eGPUCompiler mode, Boolean deleteGeneratedCode)
at Cudafy.Translator.CudafyTranslator.Cudafy(ePlatform platform, eArchitecture arch, Version cudaVersion, Boolean compile, Type[] types)
at Cudafy.Translator.CudafyTranslator.Cudafy(ePlatform platform, eArchitecture arch, Type[] types)
at Cudafy.Translator.CudafyTranslator.Cudafy()

2 个答案:

答案 0 :(得分:11)

设置VS以中断抛出的异常会在调试器的locals窗格中显示堆栈顶部的ProcessStartInfo对象。

相关属性是:

FileName = nvcc
Arguments = -m64 -arch=sm_12 "c:\<path>\CUDAFYSOURCETEMP.cu" -o "c:\<path>\CUDAFYSOURCETEMP.ptx" --ptx

this article中的一些信息说明必须安装 CUDA Toolkit 。很公平。

  

确保C ++编译器(cl.exe)位于搜索路径上。 NVCC的这个设置实际上是整个过程中最艰难的阶段,所以请坚持下去。仔细阅读您得到的任何错误 - 很可能与未找到cl.exe或没有32位或64位CUDA工具包有关。

该文章讨论了工具包的第4版,但是现在可以使用版本5,并且自CUDAfy v1.1起支持。

https://developer.nvidia.com/cuda-downloads下载

请注意,64位版本的CUDA Toolkit 5.0下载量为942 MB。如果你安装了所有东西,你需要额外的2815 MB。仅工具包需要928 MB。

编辑安装CUDA Toolkit 5.0后,程序在同一源代码行失败并显示CudafyCompileException

  

编译错误:nvcc:致命错误:在PATH中找不到编译器'cl.exe'

搜索我的系统驱动器:

C:\>dir /s cl.exe

这显示了VS 10.0和11.0的许多不同版本的编译器/链接器。显然只支持cl.exe版本9和10,因此我选择了VS10.0 amd64版本,我在PATH环境变量中包含以下内容:

  

C:\ Program Files(x86)\ Microsoft Visual Studio 10.0 \ VC \ bin \ amd64

您的路径可能会有所不同,具体取决于您的CPU。我建议您运行搜索以查看您的选项。

请注意,如果已经打开了PATH环境变量,则必须重新启动VS.

完成这些步骤后,我的基本程序成功运行。

答案 1 :(得分:1)

如果您在某个时候安装了CUDA Toolkit v7.5,但也意识到最新版本的CUDAfy支持CUDA 7.0,也可能会发生这种情况。 从控制面板卸载CUDA 7.5时,某些文件/文件夹可能仍然存在。您应该手动删除它们。您可以使用CUDAfyViewer查看正在访问哪个版本的CUDA Toolkit。