2016-10-07 25 views
0

我有大量的操作X需要在大量的项目上执行Y. 每个操作X都相当平凡,基本上只是评估一堆AND和OR逻辑。在Cudafy中返回未知大小的数组

每个Func(X,Y)自然很快,但X和Y的纯粹组合使整个操作需要很长时间。

PLinq使速度更快,但仍然比较慢。

我花了几天的时间研究各种框架(Alea,Cudafy,GPULinq)以在GPU上实现这一功能,但是我发现GPU不适合所有操作。

主要问题是GPU内核在某些点上正在执行交集或整数数组的联合。这会导致未知数量的值。可能2 *联合长度或0交叉。

我可以通过总是使用2 *长度来解决这个问题,然而长度本身并不是一个常量。

如何在任何GPU框架中返回可变大小的int数组?

回答

0

是不是只是使用语法的情况下:

双[] X = gpu.allocate(基于变量或数值数组的大小);

然后从[Cudafy]方法返回它。

+0

无法在GPU上运行的代码中执行此操作。必须提前知道大小,分配它,然后将它传递给GPU。 – Telavian