我是并行计算世界的新手。你能告诉我是否可以在我的双核笔记本电脑中使用 MPI 例程运行 c++ 代码,或者是否有任何模拟器/模拟器可以做到这一点?
4 回答
大多数 MPI 实现使用共享内存在位于同一主机上的列之间进行通信。在设置笔记本电脑方面没有什么特别的要求。
使用双核笔记本电脑,您可以运行两个等级,并且操作系统调度程序倾向于将它们放置在不同的核心上。WinXP 调度程序倾向于强制执行某种程度的“cpu 绑定”,因为默认情况下,作业倾向于在它们最后一次运行的核心上调度。但是,大多数 MPI 实现也允许显式的“cpu 绑定”,这将强制在一个特定的核心上安排排名。其语法是非标准的,必须从特定的实现文档中获取。
您应该尝试在您的笔记本电脑上使用大学计算机正在运行的“相同”版本和 MPI 实现。这将有助于确保 MPI 运行时标志相同。
大多数 MPI 实现都附带某种“编译器包装器”或至少一组用于构建包含 MPI 库的应用程序的指令。要么使用这些包装器,要么按照这些说明进行操作。
如果您对 MPI 应用程序的模拟器感兴趣,您可能应该检查 SMPI。
这个开源模拟器(我参与其中)可以运行许多未经修改的 MPI C/C++/Fortran 应用程序,并且可以相当准确地预测应用程序的运行时间,前提是您对硬件平台有准确的描述。在线和离线学习都是可能的。
使用模拟器研究 MPI 应用程序还有许多其他优点:
- 再现性:除非您指定,否则多次运行会导致完全相同的行为。在添加更多跟踪会更改应用程序行为的情况下,您不会有任何 heisenbugs;
- 假设分析:能够在您无权访问或尚未构建的平台上进行测试;
- 千里眼:您可以观察系统的每个部分,甚至在网络核心。
SMPI 框架甚至可以通过详尽的测试正式研究 MPI 应用程序的校正,如该演示文稿所示。
MPI 消息通过 TCP 网络传输(还有其他高性能可能性,例如共享性能,但网络是默认设置)。因此,只要节点可以相互连接,应用程序在哪里运行都没有关系。我猜您想在笔记本电脑上测试应用程序,因此节点都在本地运行,并且可以通过环回网络轻松地相互连接。
我不太确定我是否理解你的问题,但笔记本电脑和其他电脑一样是电脑。如果您正确设置了 MPI 库并设置了路径,那么您当然可以在笔记本电脑上使用 MPI 例程。
就我而言,我使用 Debian Linux ( http://www.debian.org ) 来处理我所有的并行内容。我写了一篇关于如何让 MPI 在 debian 机器上运行的小文章。您可能想参考它。