为了账号安全,请及时绑定邮箱和手机立即绑定

如何并行化 for 循环,并将每次重复的结果保存在矩阵中?

如何并行化 for 循环,并将每次重复的结果保存在矩阵中?

繁星点点滴滴 2022-07-06 18:43:37
我正在运行多次重复的模拟,我试图看看是否可以并行化这些重复以缩短计算时间。目前我只是在 for 循环中多次运行模拟,但理想情况下,这些可以同时运行,然后将每次重复的结果保存到数组中进行处理。目前我的代码类似于public static void getAllTheData(){   int nReps = 10;   double[][] allResults = new double[nReps][]   //this for loop is what I want to parallellise    for(int r = 0; r < nReps; r++){       //run the simulation to completion here       simulation.doStuffToCompletion()       allResults[r] = simulation.getValues()   }//average allResults here and do further analysis}我的问题是,如何同时并行运行所有这些重复,并将每次并行运行的结果保存在 allResults 类型的数组中?
查看完整描述

2 回答

?
慕的地6264312

TA贡献1817条经验 获得超6个赞

您可以尝试类似并行流的方法来执行并行性,如下行之一。


Stream.of(allResults).parallel().forEach(i -> processData(i));


Arrays.stream(allResults).parallel().forEach(i -> processData(i));


查看完整回答
反对 回复 2022-07-06
?
眼眸繁星

TA贡献1873条经验 获得超9个赞

默认情况下,Java 是一种同步语言,要并行工作,您需要查看线程。我建议研究异步函数调用以及在 Java 中执行此操作的方法。

这是之前就此事提出的一个问题:How to asynchronously call a method in Java

通过异步调用,您可以在任意数量的线程上运行模拟,并在模拟运行完成时收集数据。


查看完整回答
反对 回复 2022-07-06
  • 2 回答
  • 0 关注
  • 142 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信