Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/383.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
Repast Simphony Java运行期间CPU和内核使用率低_Java_Repast Simphony - Fatal编程技术网

Repast Simphony Java运行期间CPU和内核使用率低

Repast Simphony Java运行期间CPU和内核使用率低,java,repast-simphony,Java,Repast Simphony,我在Repast 2.7中构建了一个ABM,我们已经到达了项目的关键点,我们正在交付更大的生产数据集来通知我们的模型 我注意到在我的32核工作站上,可执行文件只使用3-12核;平均cpu消耗稳定在5.5%左右。似乎它应该使用更多的内核;或者最大化它正在使用的核心。我意识到这可能是天真的猜测 Runtime.getRuntime().availableProcessors() 报告提供32个核心 我想知道是否以及如何配置我的项目以利用更多资源。我意识到HPC版本是可用的;然而,我首先想看看,在进行

我在Repast 2.7中构建了一个ABM,我们已经到达了项目的关键点,我们正在交付更大的生产数据集来通知我们的模型

我注意到在我的32核工作站上,可执行文件只使用3-12核;平均cpu消耗稳定在5.5%左右。似乎它应该使用更多的内核;或者最大化它正在使用的核心。我意识到这可能是天真的猜测

Runtime.getRuntime().availableProcessors()

报告提供32个核心

我想知道是否以及如何配置我的项目以利用更多资源。我意识到HPC版本是可用的;然而,我首先想看看,在进行另一次重写之前,是否可以让模拟使用这台机器的所有可用资源(我们是从AnyLogic来就餐的)

Tick目前在一个只有最终版本1/30大小的数据集上花费了大约60秒,我们将在大约100次比较运行中进行10次数千次迭代


谢谢你的建议

Repast不提供模型代码的自动并行化。Repast调度器和代理代码在单个线程中运行,而显示将在单独的线程中运行,因此实际上只有一个CPU在执行模型逻辑的所有工作。为了提高模型性能,我们建议采取两个重要步骤:

  • 分析代码以确定哪些部分是计算瓶颈。Yourkit是我过去使用过的一个很好的Java分析器。分析可以帮助确定代码的某些部分是否效率低下和/或调用非常频繁。对常用代码的小改进可以显著加快模型的速度

  • 通过显式使用Java线程池来并行化模型。如果您的代理逻辑仅在上一步中依赖于代理和环境的状态,那么这是一个非常简单的过程。Repast“Flock”演示就是这个概念的一个简单示例。简言之,您可以创建一个代理“管理器”,该管理器将为每个勾号安排时间,并且该管理器将根据CPU的数量划分代理,并让每个代理批并行执行