0
我正在使用CAPS OpenACC編譯器。我試圖在OpenACC雜注行中的結構數據類型中使用動態數組。我的代碼是這樣的:在OpenACC編譯指示行中使用struct datatype
struct Structure{
int val[n];
int length;
int *valdyn;
};
#pragma acc parallel copyin(sa,sb) copyout(c[0:n])
{
#pragma acc loop
for (int i = 0; i < n; i++)
c[i] = sa.valdyn[i] + sb.valdyn[i];
}
它編譯成功。但是,當我試圖運行,我得到了這些錯誤
terminate called after throwing an instance of 'hmpperr::DeviceError'
what(): cuCtxSynchronize() failed: Launch failed (700)
所以我的問題是,有沒有什麼辦法與OpenACC的一起使用結構數據類型? 而且我的情況也適用於結構的結構類似:
struct Structure{
int val[20];
int length;
struct Other_Struct *Residue ;
int *valdyn;
};
感謝您的回答@Ruyk。因此,只使用連續的數據傳輸是OpenACC Standart,對吧? – grypp
是的。否則,編譯器將會非常複雜地瞭解如何將數據複製到設備。 – Ruyk
你說得對。編譯器會在分析階段工作太多以決定複製數據。那麼,讓我們拭目以待cuda 6.0 :) http://devblogs.nvidia.com/parallelforall/wp-content/uploads/sites/3/2013/11/deep_copy-624x307.png 但我不知道, OpenCL側統一內存的情況如何。也許它已經宣佈。 – grypp