0

コードの次の行でセグメンテーション違反がランダムに発生する理由を特定するのに苦労しています。

rc = clEnqueueReadBuffer(ompctx->clctx->queue,
                ompctx->result, CL_TRUE, 0, sizeof(int), &pos,
                1, &ompctx->clctx->ev1, NULL);

ompctx->result は整数の配列として使用されるメモリ オブジェクトであり、pos は次のように宣言されたホスト オブジェクトです。

int pos

スタックとグローバル空間で宣言された pos で試しましたが、結果は変わりません。最後のカーネルが終了するのを待ってみましたが (上記のように、順序どおりのコマンド キューがあるためそうすべきではありません)、待機せずに試してみましたが、結果は同じです。

私は AMD APP v2.8 を使用しており、8 個の CPU を搭載した i7 と AMD FirePro v8800 で試しました。どちらも同じ問題を示します。

明らかな何かが欠けていますか?他に何を確認すればよいですか?

4

1 に答える 1