ManagedCuda内核找不到curand.h

时间:2019-05-19 13:47:26

标签: c# cuda managed-cuda curand

我正在尝试使用ManagedCuda来编译使用currand library的内核。但是,我找不到一种方法来告诉CudaRuntimeCompiler如何找到curand.h。

如果我删除'#include <curand.h>'行,则一切正常。但是有了它我得到:

Exception: ErrorCompilation: Compilation error.
Test(1): catastrophic error: cannot open source file "curand.h"

1 catastrophic error detected in the compilation of "Test".
Compilation terminated.

使用完全合格的包含(#include <C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0\include\curand.h>)使我更进一步,因此,很显然,这只是告诉编译器在哪里看的一种情况。

Exception: ErrorCompilation: Compilation error.
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0\include\curand.h(59): catastrophic error: cannot open source file "cuda_runtime.h"

我尝试将文件夹添加到路径,无济于事。

谁知道可以在哪里设置? (还是知道ManagedCuda的替代软件包?)

下面的所有代码。

C#代码:

        static void Main(string[] args)
        {
            var rtc = new CudaRuntimeCompiler(GetKernel(), "Test");

            string[] compileArgs = new string[0];

            try
            {
                rtc.Compile(compileArgs);
            }
            catch (Exception e)
            {
                string log = rtc.GetLogAsString();
                Console.WriteLine($"Exception: {e.Message}");
                Console.WriteLine(log);
                Console.ReadKey();
            }

            rtc.Dispose();
        }

        static string GetKernel()
        {
            return File.ReadAllText("Kernel.c");
        }

Kernel.c

#include <curand.h>

extern "C"
{
    __global__ void DoNothing()
    {
    }
}

从NuGet安装了MangedCuda-100(10.0.31)和ManagedCuda-NVRTC(10.0.31)。

<?xml version="1.0" encoding="utf-8"?>
<packages>
  <package id="ManagedCuda-100" version="10.0.31" targetFramework="net472" />
  <package id="ManagedCuda-NVRTC" version="10.0.31" targetFramework="net472" />
</packages>

0 个答案:

没有答案