2016-10-07 24 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