OpenMP 到分布式内存代码
OpenMP to Distributed Memory Code
我有一个与并行计算有关的问题。我有一个用C++编写的相当大的代码,并在共享内存的基础上使用 OpenMP 进行并行化。我想问是否可以将此共享内存代码转换为分布式内存代码?
如果可能,需要执行哪些步骤? 感谢您的合作。
谢谢拉胡尔·辛格
大多数可以并行化以在共享内存计算机上运行的程序也可以并行化以在分布式内存计算机上运行。 所以是的,您的 OpenMP 程序解决的问题可能可以在分布式内存计算机上解决。 但是,将 OpenMP 程序转换为分布式内存程序是另一回事。 建议您最好从串行实现开始并并行化它,而不是尝试将一种并行思维模式适应另一种并行执行模式。
因此,您寻求的第一步可能是取消并行化您的程序。 但是,正如评论员已经指出的那样,如果不对您的应用程序有更多的了解,就很难提供比我已经拥有的更有用的建议(而且我根本没有提供任何非常有用的建议(。
共享内存和分布式内存是并行计算中的两种不同的范式,通常意味着不同的思维策略。一些并行编程框架,如UPC或MPI,可以模拟在共享或分布式机器上运行,尽管最好不要这样做,因为,例如,在这里,UPC旨在用于共享内存,而MPI旨在用于分布式内存机器。我不确定OpenMP。
无论哪种情况,我的建议都是首先考虑如何在分布式架构上的代码中获得并行性,然后使用 MPI。如果你碰巧从事计算科学业务,已经有写得很好的软件包,例如来自阿贡国家实验室的PETSc
和桑迪亚国家实验室的Trilinos
,可以帮助你更快地开发。
相关文章:
- 这个指针和内存代码打印是什么?我不知道是打印垃圾还是如何打印我需要的值
- 为什么示例代码访问IUnknown中已删除的内存
- 是否值得降低我的代码的可读性,以便在出现内存不足错误时提供异常安全性?
- 以下代码执行哪种内存分配(动态或静态)?
- 为什么以下C++代码中存在内存泄漏?
- 使用 g++7 构建的代码在访问未对齐的内存时崩溃
- 无法找出我的代码中的内存泄漏
- 存储在哪个内存段(代码/数据段)类(员工)中?
- 带有 GDB 调试器的 VS 代码内存视图
- 我有一个线程 1:EXC_BAD_ACCESS(代码 = 1,地址 = 0x8)错误.我认为这是由于内存管理不好.我可以
- 如何防止使用 std::shared_ptr 的代码中的内存泄漏
- 这行代码中的内存是如何分配"int **v = new int*[n]; "的?
- 在我的以下代码中获取 MLE(内存限制错误).尝试解决 ROUND C 2019(问题 A-摆动行走)启动问题
- 我在 2D 数组的动态内存分配中遇到了一些奇怪的代码C++? 请解释一下这是什么?
- 为什么 valgrind 报告两个内存分配,而我的代码只请求一个?
- 如何使用 gcc 通过命令行限制C++代码的内存使用量?
- std::array 模板实例会占用更多的代码内存吗?
- C++OpenMP代码内存泄漏
- 如何将常量放入代码内存中
- Bug在我的代码内存操作