2017-06-02 68 views
1

我試圖使用Gpu.Default.For從Alea的GPU庫,但我不斷收到一個例外:拋出異常:「System.Exception的」在Alea.dll「123-132是不是結構類型

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); 
//}); 
} 
+0

是[這](http://www.aleagpu.com/release/3_0_3/doc/gpu_programming_csharp.html#parallel_for)你問的方法? –

+0

是的,一旦代碼嘗試執行Gpu.Default.For循環,就會發生錯誤 Gpu.Default.For(Index - 1,Index - days,i => {CalculateResult [Index] = CalcResult [Index] + CloseArray [i]; }); – user2808755

+0

請將您的問題置於主題上:包括一個重複出現問題的[mcve]。尋求調試幫助的問題(「爲什麼代碼不按我想要的方式工作?」)必須包括:(1)期望的行爲,(2)特定問題或錯誤,以及(3)重現它所需的最短代碼*在問題本身*。另請參閱:[我可以在這裏詢問什麼主題?](http://stackoverflow.com/help/on-topic)和[問]。隨着足夠的代碼來複制問題,這部分意味着提供運行代碼時生成的* exact *錯誤文本(如'代碼格式'中的文本)。 – Makyen

回答

3

兩件事情:第一,你全新的GPU代碼裏的數組,這是不支持第二,我想CalcResultsListList類型,這也是不被支持的原因是,在GPU代碼中分配新內存效率不高。 GPU代碼將用許多線程執行,不建議在GPU代碼內部進行分配。

相關問題