OpenCL 资源耗尽

OpenCL OutOfResources

我的 OpenCL 内核在 运行 时抛出 OutOfResources 异常。

注意:我正在为 C# 使用 Cloo

我创建了我的问题的最小工作示例,内核现在看起来像这样:

__kernel void MinBug
(
    __global float  * img, 
    __global float  * background,
    __global int    * tau   
)
{
    int neighbourhoodSize = tau[0];

    const int x = get_global_id(0); 
    const int y = get_global_id(1);

    for (int i = -neighbourhoodSize; i <= neighbourhoodSize; i++)
    {
        for (int j = -neighbourhoodSize; j <= neighbourhoodSize; j++)
        {
            //...
        }
    }
}

对于我的原始程序,当 tau 很小(即:2、10、15)时,这个 运行 没问题,但是一旦 tau 达到 27 左右,这有时会引发异常。我创建的最小工作示例在 tau 接近 300 之前没有这个问题。

我在 C# 程序中遇到的具体错误是

Cloo.OutOfResourcesComputeException: 'OpenCL error code detected: OutOfResources.'

这总是在调用 Kernel.Execute() 方法后的下一行发生。

我错过了什么概念?

感谢 Huseyin 关于安装正确运行时的建议。

我还需要 select 代码中的正确平台。

在我的电脑上,我目前有三个平台。 其中两个似乎与 CPU (intel i7) 有关。 其中一个似乎是 GPU (NVidia gtx 660 ti)

我在我的 GPU 上明确地 运行 进行了尝试,但它 运行 没电了。从上面的错误信息可以看出。

当我指定 CPU

CLCalc.InitCL(Cloo.ComputeDeviceTypes.Cpu, 1);

它 运行 好多了。谁会想到,我的 CPU 似乎比 GPU 更咕噜咕噜。也许它是一个简单的指标。同样值得注意的是,我的 CPU 支持比 GPU 更高版本的 OpenCL。