抛出异常:Alea.dll中的“System.Exception”“i32不是结构类型

时间:2017-06-02 13:30:25

标签: c# aleagpu

我正在尝试使用Alea GPU库中的Gpu.Default.For,但我一直有例外:

i32 is not a struct type error.

这个错误意味着什么,为什么我会通过这个简单的Gpu.Default.For循环来获取它?

for (Int32 j = 0; j <= TimePeriodArray.Length - 1; j++)
//Gpu.Default.For(0, TimePeriodArray.Length - 1, j =>
{
    Int32 days = TimePeriodArray[j];
    Double[] CalcResult = new Double[CloseArray.Length];

    for (Int32 Index = days; Index <= CloseArray.Length - 1; Index++)
    {
        Gpu.Default.For(Index - 1, Index - days, i =>
        {
            CalcResult[Index] = CalcResult[Index] + CloseArray[i];
        });

        CalcResult[Index] = CalcResult[Index] / days;
    }

    CalcResultsList.Add(CalcResult);
//});
}

1 个答案:

答案 0 :(得分:3)

两件事:首先,你在GPU代码中新建一个数组,这是不受支持的。其次,我猜CalcResultsList的类型为List,但也不受支持。原因是,在GPU代码中分配新内存效率不高。 GPU代码将在许多线程中执行,不建议在GPU代码内部进行分配。