複数のローエンド コンピューターがそれぞれ、クラウド シナリオを介した要求/応答で中央サーバーに配置された GPU に対して CUDA 呼び出しを行うことは可能ですか? これらのローエンド コンピューターが「仮想」GPU を持っているかのようにします。
1 に答える
解決すべき同様の問題がありました。
データベースはローエンドのマシンにあり、ローカル ネットワーク上で自由に使える GPU のクラスターがありました。
データベースを解析し、 Google プロトコル バッファを使用してデータをシリアル化し、 zmq socketsを使用してサーバーに送信する小さなクライアント (ローエンド マシン上) を作成しました。データ配布のために、非同期パブリッシャー/サブスクライバー ソケットを持つことができます。
サーバー側では、データをデシリアライズし、CUDA プログラムで計算を実行します (デーモン化されたアプリケーションにすることもできるため、毎回自分で起動する必要はありません)。
サーバーでデータの準備ができたら、クライアントから同期メッセージ (要求/応答ソケット) を発行できます。サーバーがメッセージを受信すると、関数ラッパーを CUDA カーネルに呼び出します。
クライアントで結果を処理する必要がある場合は、逆のルートに従ってデータをクライアントに送り返すことができます。
データがすでにサーバーにある場合は、さらに簡単です。メッセージを送信して関数を呼び出すには、要求/応答ソケットのみが必要です。
zmq マニュアルを確認してください。多くのプログラミング言語の例がたくさんあります。