利用网络中的可用CPU时间

时间:2017-07-17 16:35:46

标签: java multithreading

我有一个非常cpu密集的任务,在核心i7 6700k上需要3天。我现在已经在使用线程了。我可以轻松地将任务分成更多任务。

所以我现在可以选择使用java cuda来使用多达1000个线程。

但我希望家庭网络中的16个核心可以免费使用。

所以我想知道它是否可能与java,我有点加入每台计算机/用它构建一个节点,并且节点中的所有核心都在运行任务。

知道是否以及如何做到这一点?

谢谢 安娜

2 个答案:

答案 0 :(得分:0)

  1. 首先要了解你的问题。
  2. 创建更多线程不会很快解决您的问题,它只会增加问题。
  3. 如果是IO绑定操作(如读取磁盘内容/将数据写入某些输出设备),那么CPU在这种情况下不会有帮助。
  4. 如果是分析/加密/解密/计算类型的东西,那么你可以分割你的任务(识别任务分裂逻辑,这样每个线程都不依赖于其他人,否则你最终会遇到问题)。
  5. 使用线程池来更好地利用线程。这将负责线程创建/杀死/重用现有线程/...)
  6. 如果您的任务和数据可以推送到像hadoop / spark这样的分布式框架中,那么基于任务拆分逻辑就可以了。
  7. 我认为以上几点可以提供更清晰和理解。

答案 1 :(得分:0)

查看Parallel Java 2 Library。它既是API又是中间件,用于开发利用可用的任何CPU / GPU内核在大型计算机集群上执行的Java应用程序。 API已有详细记录(Javadoc),并且还提供了教科书BIG CPU, BIG DATA