Drew Noakes Drew Noakes - 2 months ago 21
C# Question

CUDAfy.NET giving Win32Exception: The system cannot find the file specified

I've added a reference to the CUDAfy.NET library via NuGet.

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

When I run my program, I hit a

The system cannot find the file specified

This happens on the first actual line of the program:

CudafyModule km = CudafyTranslator.Cudafy();

There's no indication from the exception object as to what file they're attempting to load.

How can I get past this problem?


I see the same exception when running the bundled examples from the Codeplex download in VS2010 using .NET 4.0.

The strack trace is:

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()


Setting VS to break on thrown exceptions shows the ProcessStartInfo object at the top of the stack in the locals pane of the debugger.

The relevant properties are:

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

Some information from this article explains that the CUDA Toolkit must be installed. Fair enough.

Ensure that the C++ compiler (cl.exe) is on the search path. This set-up of NVCC is actually the toughest stage of the whole process, so please persevere. Read any errors you get carefully - most likely they are related to not finding cl.exe or not having either 32-bit or 64-bit CUDA Toolkit.

That article discusses version 4 of the toolkit, but version 5 is available now and supported since CUDAfy v1.1.

Download from https://developer.nvidia.com/cuda-downloads

Note that the 64-bit version of the CUDA Toolkit 5.0 is a 942 MB download. If you install everything you'll need an additional 2815 MB. The toolkit alone requires 928 MB.

EDIT After installing the CUDA Toolkit 5.0, the program failed with a CudafyCompileException at the same source line:

Compilation error: nvcc : fatal error : Cannot find compiler 'cl.exe' in PATH

Searching my system drive:

C:\>dir /s cl.exe

This shows many different versions of the compiler/linker, both from VS 10.0 and 11.0. Apparently only cl.exe versions 9 and 10 are supported, so I opted for the VS10.0 amd64 version, I included the following in my PATH environment variable:

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

Your path may be different, depending upon your CPU. I recommend running the search to see your options.

Note that you will have to restart VS after changing the PATH environment variable if you already have it open.

After taking these steps, my basic program ran successfully.