我正在尝试编译一个程序以使用 Cloo 运行一些 opencl 代码。
static void Main(string[] arg)
{
CLCalc.InitCL();
string src = File.ReadAllText("kernels.cl");
CLCalc.Program.Compile(src);
}
该程序以前运行良好,但现在我得到一个空引用异常。 起初我以为我的 opencl 代码中存在错误,但我用一个非常简单的内核替换了 opencl,它仍然无法编译。
IE:
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...
自从在我的 PC 上安装CUDA takelkit以来,这一直是个问题。这甚至可能是原因吗?
编辑
我创建了一个非常简单的项目,只有几行代码就可以显示我的错误。
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 恢复了我的程序的旧工作副本。它在我的家用电脑上运行良好。但是当我在我的工作电脑上运行它时,我遇到了同样的错误。
编辑
如果我在编译行之前放置一个断点,我会看到一个异常
为什么它不会突然找到我的设备?
编辑
当我查看我的 OpenCL 设备时,唯一列为默认设备的是我的 CPU ...
为什么!?