Alea GPU for循环无法获取字段

时间:2017-12-09 04:01:35

标签: aleagpu

我刚刚开始使用ALEA,我很好奇如何在给定的gpu parallel.for中访问其他类型和引用。当我执行以下操作时,我得到一个运行时错误,指出“无法获取字段随机。可能的原因:1)不支持静态字段.2)不支持字段类型.3)在闭包类中,字段没有[GpuParam]属性。“

这个错误很有意义,但我不确定正确的实现是什么

    [GpuManaged]
    public void InitPoints()
    {
        var gp = Gpu.Default;
        gp.For(1, (10), (i) =>
        {
            int pointStart = random.Next(totalPoints) + 1;
            Pt point = new Pt(pointStart, ptAt[i]);
            point.Process();
        });
     }

1 个答案:

答案 0 :(得分:1)

您尝试调用System.Random.Next。这是.NET库代码,无法编译为GPU。该功能背后没有可以访问和编译以在GPU上运行的MSIL。 System.Random.Next也是为串行应用程序实现的随机数生成器。您应该使用cuRand中提供的并行随机数生成器,这些生成器也在Alea GPU中公开。