gpt4 book ai didi

mpi - 执行并行代码的顺序部分(大量操作+写入文件)的有效方法?

转载 作者:行者123 更新时间:2023-12-04 19:21:38 27 4
gpt4 key购买 nike

我有一个使用 mpi 的 C++ 代码,并以顺序-并行-顺序模式执行。上述模式在时间循环中重复。在使用串行代码验证代码时,我可以减少并行部分的时间,事实上,减少的时间几乎与处理器数量呈线性关系。

我面临的问题是,当使用更高数量的处理器时,顺序部分所需的时间也会大大增加。

与整个程序的总顺序时间相比,并行部分的执行时间更少。
因此,尽管在使用更高数量的处理器时并行部分的时间有所减少,但由于执行顺序部分的时间增加,节省的时间会大大减少。顺序部分还包括每个时间步的大量计算,并在某个指定时间将数据写入输出文件。
在顺序部分的执行过程中让所有的处理器运行,并行计算后数据被收集到根处理器,只允许根处理器写入文件。
因此,任何人都可以建议计算并行代码的串行部分(大量操作+写入文件)的有效方法是什么?如果需要,我还想澄清任何一点。

提前致谢。

最佳答案

首先,从单独的线程(或 MPI 术语中的进程)写入文件,以便其他线程可以使用您的内核进行计算。

然后,检查为什么您的并行版本比顺序版本慢得多。通常这意味着您创建的任务太小,因此线程之间的通信(同步)会影响您的性能。考虑是否可以将任务组合成 block 并并行处理完整的 block 。

当然,使用适合多线程环境的任何分析器。

[编辑]

sequential part = 你的逻辑中不能(也不是)并行的部分,你的意思是一样的吗?多核上的顺序部分可以工作有点慢,可能是因为操作系统调度程序或类似的东西。您看到明显的差异很奇怪。

磁盘本质上是顺序的,因此从许多线程写入磁盘不会带来任何好处,但会导致许多线程尝试同时执行此操作并相互等待而不是做一些有用的事情。

顺便说一句,您使用什么 MPI 实现?

你的问题描述太高级了,提供一些伪代码之类的,这样可以帮助我们帮助你。

关于mpi - 执行并行代码的顺序部分(大量操作+写入文件)的有效方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6861338/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com