0
我在OpenACC中做了一個非常簡單的向量添加內核。我想知道這是否與我使用的編譯器有關(與OpenCL一起使用)有問題,因爲我遇到問題,似乎將數據從設備複製回主機。所有的結果都是正確的但是結果[0]。例如。下面的代碼:OpenACC邊界問題
for (i=0; i<VEC_SIZE; i++) {
a[i] = i;
b[i] = VEC_SIZE-i;
result[i]=0;
}
#pragma acc kernels copyin(a,b) copy(result)
for (i=0; i<VEC_SIZE; i++) {
result[i] = a[i]+b[i];
}
// verify result
for (i=0; i<VEC_SIZE; i++) {
if ((a[i] + b[i]) != result[i]) {
fprintf(stderr, "Incorrect results id %d val: %d \n", i, result[i]);
}
}
返回如下:
Incorrect results id 0 val: 0
這意味着所有的結果,但在索引0是正確的,它好像reuslt索引零時,無法從設備複製了一個。
這是一個編譯器/運行時錯誤還是我錯過了我的編碼方面的東西?
該代碼看起來對我很好。我圍繞你在這裏展示的內容構建了一個完整的代碼和測試用例,並使用PGI 14.9工具對其進行編譯,並且它似乎工作正常。例子是[here](http://pastebin.com/jXKGWVAC) – 2014-11-08 16:41:25
太棒了,它看起來非常像我的accULL中的一個bug。非常感謝您的確認。如果你想,你可以發佈並答覆我可以接受。 – AzaraT 2014-11-08 16:53:32
也許更好,當你發現修復是什麼的時候,回來回答這個問題。這對未來的讀者會更有用。或者也許別人會來爲你排序。你正在使用最新版本的accull?它似乎是0.3,但似乎你也可以從[主分支](https://bitbucket.org/ruyman/accull/)下載,它可能會給你「0.3.1」似乎還有一個[accull支持郵件列表](https://groups.google.com/forum/#!forum/accull)。 – 2014-11-08 17:18:24