0
A
回答
1
这取决于您试图并行执行的操作以及您的要求。
有很多很好的教程可用。
这里有一个简单的Hello World程序:
#include "stdio.h"
#include "mpi.h"
int main(int argc, char *argv[])
{
int id, nprocs;
MPI_Init(&argc, &argv);
MPI_Comm_rank(MPI_COMM_WORLD, &id);
MPI_Comm_size(MPI_COMM_WORLD, &nprocs);
printf("Hello World from proc %d out of %d!\n", id, nprocs);
MPI_Finalize();
return 0;
}
的编译如下
[email protected]:~> mpicc -Wall -Werror -o mpihello mpihello.c
要在2台独立的机器上运行它作为
[email protected]:~> mpirun_rsh -ssh -np 2 node0 node1 /home/xbc/mpihello
或
[email protected]:~> mpirun_rsh -hostfile hostlist -n 2 /home/xbc/mpihello
在您hostlist
文件将有2项为node0
和node
在同一台机器上运行它作为2个流程
[email protected]:~> mpirun_rsh -ssh -np 2 node0:1 /home/xbc/mpihello
或
[email protected]:~> mpirun_rsh -hostfile hostlist -n 2 /home/xbc/mpihello
在您hostlist
文件将有1条目为node0:1
输出放置一个Hello世界,排名顺序为0
和1
来自2台机器或2个进程,具体取决于运行方式。
现在,您可以通过基于IB(InfiniBand)的IP上的IP或基于IP的MPI,或通过以太网IB上的MPI或许多其他方式运行MPI,具体取决于您的要求。
您将不得不相应地配置mpi编译和安装。
相关问题
- 1. 将C++程序转换为程序集
- 2. 将C程序转换为程序集?
- 3. 将C++ API自动转换为C#?
- 4. 将方程转换为c程序
- 5. 将C++转换为模板元程序
- 6. 将C函数转换为程序集
- 7. 将C++程序转换为Windows服务?
- 8. 将c#应用程序转换为VB
- 9. 将C#代码转换为程序集
- 10. 将伪代码转换为C#程序
- 11. 无法将C程序转换为Ruby
- 12. 如何将C程序转换为类
- 13. 将c#RSACryptoServiceProvider转换为C++
- 14. 将QT/C++转换为C#
- 15. 将C++转换为objective-c
- 16. 将C++/CLI转换为C#
- 17. 将cURL代码转换为c#izooto api
- 18. 如何将此程序从C++转换为C?
- 19. 将C#应用程序转换为C++枚举
- 20. 将PyInt转换为C Int
- 21. C编程MPI
- 22. 将C转换为PHP?
- 23. C#将C#6.0转换为C#4.0
- 24. 将Qt C++应用程序转换为Web应用程序
- 25. 将C#(Windows应用程序)转换为commadline应用程序?
- 26. 将excel应用程序转换为C#应用程序
- 27. 将简单的C++程序转换为程序集(68000)
- 28. 将C程序转换为MIPS汇编语言程序
- 29. 将vb6应用程序转换为C的升级程序#
- 30. C# - 将常规文本转换为TeXt的程序的程序
这完全取决于函数的功能以及如何并行化。没有一步一步的指南可以自动将任何串行程序转换为使用MPI的并行程序。 OpenMP更易于使用,但请注意,它将工作分解为线程而不是进程,因此无法在分布式环境中使用。 – suszterpatt 2011-03-22 22:02:58
@suszterpatt有OpenMP实现可以在分布式内存集群中工作,例如Intel的Cluster OpenMP。 – 2011-03-24 09:59:27
@shawn但为什么有人会在分布式内存模型上使用OpenMP?是为并行编程制作一种通用编程语言吗? – peeyush 2011-07-11 06:16:13