【发布时间】:2021-08-23 05:10:45
【问题描述】:
您好,我使用的是 Windows,我同时使用 codeblock 和 Visual Studio 2019 来使用 mpi 进行编程。 但是在我使用这段代码之后
int main(int argc, char *argv[])
{
int rank, size;
MPI_Init(&argc, &argv);
MPI_Comm_rank(MPI_COMM_WORLD, &rank);
MPI_Comm_size(MPI_COMM_WORLD, &size);
printf("Hello world! I am %d of %d\n", rank, size);
MPI_Finalize();
return 0;
}
如果使用 echo %NUMBER_OF_PROCESSORS%,它会返回 1 个处理器 在正常的 cmd 上它返回我 4 。
我正在使用 MPI_SEND 和 MPI_Recv,但在使用此代码后出现了一个致命错误
#include <stdio.h>
#include "mpi.h"
int main(int argc, char* argv[])
{
int menum, nproc;
int n, tag, num;
MPI_Status info;
MPI_Init(&argc, &argv);
MPI_Comm_rank(MPI_COMM_WORLD, &menum);
MPI_Comm_size(MPI_COMM_WORLD, &nproc);
printf("menum:%d nproc :%d", menum, nproc);
if (menum == 0) {
printf("\ninsert number: ");
scanf_s(" %d", &n);
tag = 10;
MPI_Send(&n, 1, MPI_INT, 1, tag, MPI_COMM_WORLD);
}
else {
tag = 10;
MPI_Recv(&n, 1, MPI_INT, 0, tag, MPI_COMM_WORLD, &info);
}
MPI_Get_count(&info, MPI_INT, &num);
MPI_Finalize();
return 0;
}
我在网上搜索,据我所知,这就像 mpi 无法找到另一个处理器来发送值。 我怎样才能做到? 有没有办法可以将 mpi 与我的所有处理器与 Visual Studio 或代码块一起使用?
作业中止: [排名] 消息
[0] 致命错误 MPI_Send 中的致命错误:排名无效,错误堆栈: MPI_Send(buf=0x0056F9F0, count=1, MPI_INT, dest=1, tag=10, MPI_COMM_WORLD) 失败 无效等级的值为 1,但必须是非负数且小于 1
【问题讨论】:
-
您是如何开展这些工作的?听起来像 Singleton init 发生在这里。
-
ctrl + f5 这就是我所做的:/
标签: visual-studio-2019 mpi codeblocks