これは本当に簡単だと思いますが、Java でそれを行う単純な方法があるかどうかはわかりません。これが私の問題です。データを処理するための 2 つのスクリプトがあり、どちらも同じ入力/出力を持っていますが、1 つは単一の CPU 用に作成され、もう 1 つは GPU 用に作成されています。仕事はキューサーバーから来ており、どちらが空いているかに応じて、データを CPU または GPU スクリプトのいずれかに送信するプログラムを作成しようとしています。
これを行う方法がわかりません。
executorservice を使用すると、実行し続けるスレッドの数を指定できることはわかっていますが、2 つの異なるスレッドのバランスを取る方法がわかりません。システムに 2 つの GPU と 8 つの CPU コアがあり、threadexecutorservice で 2 つの GPU と 8 つの CPU プロセスを実行し続けることができると考えましたが、GPU は CPU タスクよりもはるかに速く実行されるため、それらの間のバランスをとる方法がわかりません。
これにアプローチする方法について何か提案はありますか? 2 つのキューを作成し、それらをプールし続けて、どちらがビジーでないかを確認する必要がありますか? または、すべてのワークユニット(すべて同じ)を1つのキューに入れ、GPUまたはCPUプロセスを同じキューから解放する方法はありますか?
更新:明確にするために。CPU/GPU プログラムは、私が作成しているプログラムの範囲外です。これらは、2 つの異なる方法で呼び出す単なるスクリプトです。私が求めていることの単純化されたバージョンは、2 つのメソッドが同じキューから作業を取得できるかどうかだと思いますか?