欢迎来到 Pyrosimchina Q&A ,有什么不懂的可以尽管在这里提问,你将会收到社区其他成员的回答。
0 喜欢 0 不喜欢
1.3k 浏览

我在思考何时使用 OpenMP 以及何时使用 FDS/Pyrosim 中的 OpenMP 线程 MPI (~"MPI)。我阅读了 FDS 用户指南第 3.3.1 节,但在应用程序上还是不太理解......我希望有人能帮忙!

我目前用于较小运行的机器是 12 GB 内存,带有 4 个物理内核的Xeon e5,在 1 CPU 中报告。当我阅读用户指南时,对映射到内核的内容感到很困惑。

使用上面的硬件,假设我有一个带有 4 个网格的模型。我应该为每个内核做一个 MPI 线程,即:

打开 MP 线程:1

打开 MP 线程 MPI4

开放 MP 栈:200M

或者我应该为每个物理 CPU 执行 1 mpi 线程,并为该 CPU 的每个核心执行 1 OpenMP 线程? IE。:

打开 MP 线程:4

打开 MP 线程 MPI1

开放 MP 栈:200M

MPI 应该是每个核心可用(并行或集群,无论链接什么),还是每个 CPU

如果每个核心有一个 MPI,我应该尝试让我的网格数量与可用核心数量相匹配,对吗? (可以理解,密集网格和分布除外)或者 OpenMP 线程是否应该与内核数量相匹配?

 

如果我将机器上的 CPU 加倍为 2 个物理 CPU,每个 CPU 4 个内核(总共 8 个内核),那么它会是 8 MPI 进程吗?

用户: (4.5k 分)

1个回答

0 喜欢 0 不喜欢

MPI 使用物理内核之间的并行计算(虚拟内核不可取)。 加速与使用的内核数量有关。 所以理论上你可以在 10 个不同的内核上有 10 个网格,并且模拟的运行速度比一个网格一个内核要快得多。

另一方面,Open MP 通过在几个线程之间划分任务来进行并行计算。 所以加速更加有限。

如果您使用 2 MPI 进程,您将获得几乎两倍的速度。 如果您使用 2 OMP,您将获得大约 20-30% 的加速。 如果跳到 8MPI 的模拟速度将提高 6-7 倍,而 OMP 的速度只会提高一倍。

所以总而言之,根据可用的物理内核使用 MPI。 如果您有可用的虚拟内核,您可以尝试添加 OMP。 对它们进行一些实验以更好地理解。

用户: (8.3k 分)
...