我怀疑这真的很容易,但我不确定在 Java 中是否有一种天真的方法。这是我的问题,我有两个用于处理数据的脚本,它们都有相同的输入/输出,除了一个是为单个 CPU 编写的,另一个是为 GPU 编写的。这项工作来自队列服务器,我正在尝试编写一个程序,根据哪个是空闲的,将数据发送到 CPU 或 GPU 脚本。
我不明白该怎么做。
我知道使用 executorservice 我可以指定要继续运行的线程数,但不确定如何在两个不同的线程之间进行平衡。我在系统上有 2 个 GPU 和 8 个 CPU 内核,我认为我可以让 threadexecutorservice 保持 2 个 GPU 和 8 个 CPU 进程运行,但不确定如何在它们之间取得平衡,因为 GPU 的完成速度比 CPU 任务快得多。
关于如何解决这个问题的任何建议?我应该创建两个队列并继续汇集它们以查看哪个队列不那么忙吗?或者有没有办法把所有的工作单元(都一样)放到一个队列中,让 GPU 或 CPU 进程从同一个队列中取出,因为它们是空闲的?
更新:只是为了澄清。CPU/GPU 程序超出了我正在制作的程序的范围,它们只是我通过两种不同方法调用的脚本。我想我要问的简化版本是两种方法是否可以从同一个队列中工作?