MPI如何决定其排名大小 我是MPI初学者,如果我在C++中编写这样的代码,系统会如何判定程序将有多少个等级? 这与我们在面向对象语言中遵循的逻辑不同,当您定义数组时,您可以精确地知道数组的大小。 他们在MPI中使用什么机制让系统决定有多少级别和整个大小? 它灵活吗?由机械力决定?或者只是在调用时自动生成 int main(int argc, char *argv[]){ MPI_Init(NULL, NULL); int size, rank; MPI_Comm_size(MPI_COMM_WORLD, &size); MPI_Comm_rank(MPI_COMM_WORLD, &rank); if (rank == 4) master(); else slave(rank); MPI_Finalize(); return 0;}
这里有一个很好的参考:MPI如何决定其排名大小 我是MPI初学者,如果我在C++中编写这样的代码,系统会如何判定程序将有多少个等级? 这与我们在面向对象语言中遵循的逻辑不同,当您定义数组时,您可以精确地知道数组的大小。 他们在MPI中使用什么机制让系统决定有多少级别和整个大小? 它灵活吗?由机械力决定?或者只是在调用时自动生成 int main(int argc, char *argv[]){ MPI_Init(NULL, NULL); int size, rank; MPI_Comm_size(MPI_COMM_WORLD, &size); MPI_Comm_rank(MPI_COMM_WORLD, &rank); if (rank == 4) master(); else slave(rank); MPI_Finalize(); return 0;},c++,mpi,computer-science,distributed-system,C++,Mpi,Computer Science,Distributed System,这里有一个很好的参考: 下面是一个教程: 这是一个相关的问题 回答你的问题: Rank是(逻辑)进程号(如线程id) Size是进程总数(已分配、并行) 当您使用MPI_Init时,请参见:观察如何设置进程数 mpirun -n 4 ./parhello 您可以使用“-n”构造argv[]数组,并为MPI_init调用指定世界大小 还可以使用环境变量设置世界大小 借用另一个问题/答案: MPI_Comm_size返回通信器的大小。在我们的例子中, MPI_COMM
- Rank是(逻辑)进程号(如线程id)
- Size是进程总数(已分配、并行)
mpirun -n 4 ./parhello
您可以使用“-n”构造argv[]数组,并为MPI_init调用指定世界大小
还可以使用环境变量设置世界大小
秩用于区分进程之间的差异。您可能有一个“主”进程(秩=0),它向秩1-15上的“从”应用程序发送消息。或者您可以使用其他拓扑来划分工作负载。这里有一个很好的参考:
- Rank是(逻辑)进程号(如线程id)
- Size是进程总数(已分配、并行)
mpirun -n 4 ./parhello
您可以使用“-n”构造argv[]数组,并为MPI_init调用指定世界大小
还可以使用环境变量设置世界大小