いくつかの問題があります。
1) GPU に 50MB のデータを取得する方法 2) Windows では、長時間の計算を実行すると GPU ドライバーが頻繁にリセットされます 3) ~50MB の永続化メカニズム
考えられる答え 1a) 50M の OpenCL メモリ バッファを作成する 1b) データを GPU にエンキュー (書き込む) 1c) このバッファにカーネル引数を設定する 1d) GPU のグローバル メモリ内のカーネル引数としてデータにアクセスする
2) OpenCL ドライバー (グラフィックス) ドライバーがリセットされると、アプリケーションは終了します。システムがアプリケーションを強制終了する前にアプリケーションを強制終了し、アプリケーションを再起動するスクリプトを作成できます。スクリプトは、アプリを強制終了する前に中間結果を読み戻す必要があります。そうでなければ、あなたは決してコントロールすることはできません。Windows で Nvida Tesla GPU を使用して実行するか、Linux で実行する場合のみ、O/S がディスプレイが機能していないと考えてドライバーをリセットすることを回避できます。
3) MMAPed ファイルを使用して、50MB のデータと中間結果を永続化します。MMAPed ファイル アドレスを使用して、アプリケーションの OpenCL バッファを作成できます。
最後に、アプローチについて質問します。ドライバーのリセットの問題などにより、Windows と Linux で実行されます。PostgreSQL データベースと、すべての GPU カーネル実行が ACID であることを保証する独自の PgOpenCL を使用しても、Windows でドライバーのタイムアウトを解決する効果的な解決策を見つけることができませんでした。