【问题标题】:mpi & number of processormpi & 处理器数量
【发布时间】: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


【解决方案1】:

如果你编写一个 MPI 程序并直接执行它,你会得到所谓的 singleton init -- MPI 库将自行启动,你会在 MPI_COMM_WORLD 中得到一个进程。

要在 Windows 上启动并行 MPI 程序,您需要查阅您的 MPI 实现。对于 MS-MPI,您将使用 HPC Job Manager (https://docs.microsoft.com/en-us/powershell/high-performance-computing/overview?view=hpc19-ps)。

对于 Intel-MPI,您需要通过类似的过程来构建主机文件并在每台机器上注册您的 Windows 凭据 (https://software.intel.com/content/www/us/en/develop/documentation/mpi-developer-guide-windows/top.htm)

我没有任何在 Windows 机器上使用 MPI 的经验,因此我可以为您提供尽可能多的帮助。希望它能让你指出正确的方向。

【讨论】:

猜你喜欢
  • 2023-03-03
  • 2012-04-16
  • 2015-09-25
  • 2023-03-25
  • 2013-07-06
  • 1970-01-01
  • 2012-03-24
  • 1970-01-01
  • 2015-12-14
相关资源
最近更新 更多