我有很難確定爲什麼分割故障在我的代碼下面的行隨機發生:的OpenCL clEnqueueReadBuffer段錯誤隨機
rc = clEnqueueReadBuffer(ompctx->clctx->queue,
ompctx->result, CL_TRUE, 0, sizeof(int), &pos,
1, &ompctx->clctx->ev1, NULL);
ompctx->結果是用作整數數組的存儲對象並且pos是一個主對象,聲明爲:
int pos
我嘗試在堆棧和全局空間中聲明pos,結果不會改變。 我試着等待最後一個內核完成(如上所述,儘管我不應該因爲我有一個按順序的命令隊列)並且沒有等待,但結果仍然是一樣的。
我使用的是AMD APP v2.8,我嘗試過使用8個CPU的i7和AMD FirePro v8800。兩者都表現出同樣的問題。
我錯過了一些明顯的東西嗎?我還應該檢查什麼?
也許你解引用了一個'null'指針?沒有看到更多的代碼,這將很難說。 –
我打印指針,並且在調用ReadBuffer之前它們都看起來沒問題。這個隊列在調用之前就被使用了,並且它總是成功的,結果也被成功地使用,pos是一個全局變量,如果它們在那裏或者沒有,這些事件沒有什麼區別。所以我不認爲這是一個空指針解引用。 –
您是否嘗試過使用英特爾OpenCL平臺?它會給你同樣的錯誤嗎? – Ani