【问题标题】:MPI - changing number of processes launchedMPI - 改变启动的进程数量
【发布时间】:2015-02-20 01:50:00
【问题描述】:

我从 MPI 开始。我想尝试一个经典的“Hello, world”程序,它也会打印每个进程的编号以及其他一些信息。我的程序可以正常工作,但我对 mpiexec 的真正工作原理有点困惑。问题是,当我指定进程数时,有时它们只是没有启动。例如,我使用这个命令:

mpiexec -np 4 ./hello

但只有 2 或 3 个进程启动,而不是 4 个。启动进程的数量会发生变化,所以我真的很困惑。是我的电脑问题(我只有双核)还是正常?


hello.c:

#include <stdio.h>
#include <mpi.h>

int main(){
    MPI_Init(NULL, NULL);

    // Number of processes
    int world_size;
    MPI_Comm_size( MPI_COMM_WORLD, &world_size );

    // Number of current process
    int process_id;
    MPI_Comm_rank( MPI_COMM_WORLD, &process_id );

    // Processor name
    char processor_name[ MPI_MAX_PROCESSOR_NAME ];
    int name_len;
    MPI_Get_processor_name( processor_name, &name_len );

    printf("Hello! - sent from process %d running on processor %s.\n\
        Number of processes is %d.\n\
        Length of proc name is %d.\n\
        ***********************\n",
        process_id, processor_name, world_size, name_len);

    return 0;
}

【问题讨论】:

    标签: c parallel-processing mpi mpich


    【解决方案1】:

    我的错误非常愚蠢。我只是在 return 之前缺少 MPI_Finalize() 函数。


    正确代码:

    #include <stdio.h>
    #include <mpi.h>
    
    int main(){
        MPI_Init(NULL, NULL);
    
        // Number of processes
        int world_size;
        MPI_Comm_size( MPI_COMM_WORLD, &world_size );
    
        // Number of current process
        int process_id;
        MPI_Comm_rank( MPI_COMM_WORLD, &process_id );
    
        // Processor name
        char processor_name[ MPI_MAX_PROCESSOR_NAME ];
        int name_len;
        MPI_Get_processor_name( processor_name, &name_len );
    
        printf("Hello! - sent from process %d running on processor %s.\n\
            Number of processes is %d.\n\
            Length of proc name is %d.\n\
            ***********************\n",
            process_id, processor_name, world_size, name_len);
    
        MPI_Finalize();
        return 0;
    }
    

    【讨论】:

      猜你喜欢
      • 2012-06-10
      • 2013-04-03
      • 2011-06-28
      • 2013-06-22
      • 2018-09-09
      • 1970-01-01
      • 2012-12-22
      • 2014-02-17
      • 1970-01-01
      相关资源
      最近更新 更多