我正在尝试使用Cloo编译程序来运行一些opencl代码。
static void Main(string[] arg)
{
CLCalc.InitCL();
string src = File.ReadAllText("kernels.cl");
CLCalc.Program.Compile(src);
}
该程序以前工作正常,但现在我得到一个空引用异常。 起初我以为我的opencl代码中有一个错误,但我用一个非常简单的内核替换了opencl,它仍然无法编译。
即:
static void Main(string[] arg)
{
CLCalc.InitCL();
//string src = File.ReadAllText("kernels.cl");
string src = "__kernel void hello(__global char * out){}";
CLCalc.Program.Compile(src);
}
请注意,没有设备存在。为什么会这样?我有一个GPU ......
自从在我的电脑上安装CUDA tooklkit以来,这是一个问题。这有可能成为原因吗?
修改
我创建了一个非常简单的项目,只有几行代码可以解决我的错误。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using OpenCL;
using OpenCL.Net;
using OpenCLTemplate;
namespace ClooTest
{
class Program
{
static void Main(string[] args)
{
CLCalc.InitCL();
string src = "__kernel void hello(__global char * out){}";
CLCalc.Program.Compile(src);
}
}
}
修改
我从USB恢复了我的程序的旧工作副本。它在我的家用电脑上运行良好。但是当我在我的工作PC上运行时,我得到了同样的错误。
修改
如果我在编译行之前放置一个断点,我可以看到一个异常
为什么不能突然找到我的设备?
修改
当我查看我的OpenCL设备时,唯一列为默认设备的是我的CPU ......
为什么!?