GPUとCPUの間で作業負荷を共有する方法または可能かどうかを理解するのに少し問題があります。大きなログファイルがあり、各行を読み取ってから約500万回の操作を実行する必要があります(さまざまなシナリオのテスト)。私の現在のアプローチは、数百行を読み取り、それを配列に追加してから、各GPUに送信することでした。これは正常に機能していますが、1行あたりの作業量が多く、行数が多いため、時間がかかります。これが行われている間、私のCPUコアは基本的に何もしていないことに気づきました。私はEC2を使用しているので、2つのクアッドコアXeonと2つのTesla GPUがあり、1つのCPUコアがファイルを読み取り(メインプログラムを実行)、GPUが機能するので、どのように、または何ができるのか疑問に思っています。プロセスに他の7つのコア?
GPU / CPU間でタスクのバランスをとるプログラムを設計する方法に少し混乱しています。どちらも異なる時間にジョブを終了するため、すべてを同時に送信することはできませんでした。キューを設定することを考えました(cは初めてなので、まだ可能かどうかはわかりません)が、GPUジョブがいつ完了したかを知る方法はありますか(Cudaへのジョブの送信は非同期だと思っていたため)?私のカーネルは通常のc関数に非常に似ているので、CPU使用率に変換することは問題ではなく、作業のバランスを取ることが問題のようです。もう一度「Cudabyexample」を試しましたが、このタイプのバランシングについて言及しているものは実際には見つかりませんでした。
どんな提案も素晴らしいでしょう。