如何将 MPI 与C++类集成?
How would I integrate MPI with C++ classes?
>假设我有一个类
Vector
在本课程中,我有一个计算向量范数的方法。
Vector a
double Norm = a.norm()
我想使用 MPI 来分发此计算。我知道,这是一个非常微不足道的案例。
但是我到底在哪里放置命令
MPI_Comm_size,MPI_Comm_rank,MPI_Init?
我想MPI_init会进入主文件。但是我是否必须告诉每个向量每个实例化可用的进程数?
通常,为了有效地使用 MPI,单个数据结构内部没有 MPI 功能。 弄清楚 MPI 通信器的大小和等级是容易的部分 - 困难的部分是编排你的 MPI 命令。
在您的示例中,您需要做的第一件事是将向量分散到所有 MPI 进程中。 但是想象一下这样的事情:
mpi_norm(mpi_add(v1, v2));
在这里,在数据结构上实现单个操作将非常低效 - 您不想收集添加两个向量的结果,只是为了转身并再次将它们泵回所有MPI进程。
通过相当多的工作,您可以通过mpi_add()
返回一个代理对象来有效地实现上述内容,该对象会记住计算应该是什么,但只是懒惰地执行它,因此部分结果可以单独保留在许多 MPI 进程中,然后将它们组合成单个向量范数并返回。
但感觉你可能吠错了树——如果你的目标是"做一个好的MPI程序",你应该从自上而下开始,而不是自下而上。
相关文章:
- 将公共但非静态的成员函数与ALGLIB集成
- 将IBM Rhapsody模型集成到VS 2019中
- 从R调用C++函数并对其进行集成时出错
- 如何集成 HID USB 控制器?
- 在VS2019项目中集成ImageMagick:x64-windows-static library
- 将Qt集成到现有的VS项目中以取代WinAPI
- 将 Crashpad 与 Windows Qt 应用程序集成
- Python3.6 模板中的 CGAL C++ 集成错误
- 基本 Cuda C++项目集成问题
- 如何使用CMake将QtMultimedia组件集成到项目中?
- 在 Mac OS 中将 QT 与 CMAKE 集成
- 使用 GSL 库制作样条曲线并使用它们进行集成
- 在集成终端上运行vscode lldb调试器时,如何获取程序的输出?
- 将Emscripten集成到Clion中
- VIsual Studio:避免控制台弹出,而是将其集成到IDE中
- 如何在electrolon项目中集成qt原生窗口
- 与 boost odeint 集成期间的析构函数调用
- C++uWebSockets将事件循环集成到一个线程中
- C++ 项目在 Jenkins 中的持续集成
- 将 ROOT 与 CMake 集成