私はCL_MEM_USE_HOST_PTR | CL_MEM_READ_WRITE
フラグで作成されたバッファを持っています。これを1つのカーネルで使用して、バッファを作成したときにデータをホストメモリセットに戻しました(queue.enqueueReadBuffer(...)
)。私はCPU上でこれらのデータを変更しましたが、別のカーネルでこれらのデータを使用したいと思います。 ノンブロッキング書き込みを使用して手動でデータをアップロードし(queue.enqueueWriteBuffer
)、このバッファを引数としてカーネルをエンキューすると、エラーCL_OUT_OF_RESOURCES
が返されました。ブロッキングの書き込みはうまくいきました。インオーダーキューへの非ブロック書き込み
どうしてですか?私はブロック/ノンブロッキングバージョンは、enqueueWriteBuffer
呼び出しが返った後にCPU上のメモリで作業できるかどうかだけを制御し、インオーダーキューはカーネルに違いがないはずだと考えました。 2番目の質問は、手動でアップロードする必要があるかどうかです。CL_MEM_USE_HOST_PTR
は、一部のカーネルがバッファを引数として使用するたびにデータをホストからデバイスにアップロードする必要があるのですか?私がそれらを必要とするときに手動でデータをダウンロードしなければならないので、上記のフラグには何の賛成ですか?私はあなたのCL_OUT_OF_RESOURCES
エラーの特定の問題を確認することはできません
おかげ