我需要在java环境中对大量数据执行单个计算(求和和乘积)。我知道最好的解决方案是使用 SIMD 架构,例如 CUDA,但我没有能力拥有专用硬件。 您知道在单机上运行并利用多核的 map 缩减框架吗?
最佳答案
对于此类任务,通常建议使用 fork-join 框架,因为它会自动使用与核心数量一样多的线程,您可以在 Java 教程中阅读有关它的更多信息:http://docs.oracle.com/javase/tutorial/essential/concurrency/forkjoin.html
另一方面,如果您只是对数字进行求和和相乘,那么选择固定数量的线程(例如 4)可能会更简单,并让第一个线程对索引 0,4,8,.. 处的数字求和第二个在索引 1,5,9,... 第三个在 2,6,10,.. 等等
关于Java多线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17389736/