Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java多线程_Java_Multithreading_Simd - Fatal编程技术网

Java多线程

Java多线程,java,multithreading,simd,Java,Multithreading,Simd,我需要在java环境中对大量数据执行单个计算(求和和和积)。我知道最好的解决方案是使用SIMD体系结构,如CUDA,但我没有能力拥有专用硬件。 您知道在单机上运行并利用多核的map reduce框架吗?对于这类任务,通常建议使用fork-join框架,因为它会自动使用与内核数量相同的线程,您可以在Java教程中阅读更多关于它的内容: 另一方面,如果您只是对数字进行求和和和乘法,那么选择固定数量的线程(如4)并让第一个线程对索引0,4,8处的数字求和可能会更简单,。。第二个在索引1,5,9,。。。

我需要在java环境中对大量数据执行单个计算(求和和和积)。我知道最好的解决方案是使用SIMD体系结构,如CUDA,但我没有能力拥有专用硬件。
您知道在单机上运行并利用多核的map reduce框架吗?

对于这类任务,通常建议使用fork-join框架,因为它会自动使用与内核数量相同的线程,您可以在Java教程中阅读更多关于它的内容:


另一方面,如果您只是对数字进行求和和和乘法,那么选择固定数量的线程(如4)并让第一个线程对索引0,4,8处的数字求和可能会更简单,。。第二个在索引1,5,9,。。。第三个在2,6,10,。。依此类推

如果只有一个处理器,那么多线程将无助于计算密集型应用。我有一个4核的单cpu。我如何利用多核体系结构?看看这一点可能会帮助您解决这个问题。谢谢,您现在是否有一个基于mapreduce的多线程框架?注意-根据每个元素的大小,在线程之间交错索引可能会引入错误共享问题。通常最好将数据分成[no of cores]连续块,例如maxIndex/[no of cores.]每个块的大小(或大约-最后一个块可能稍大)。当所有访问都是只读的时会发生错误共享吗?@Joni-不这样认为,不。OP没有详细描述数据结构,因此它可能是问题,也可能不是问题:)