使用mvapich2与openmpi比较MPI线程死锁期间的CPU利用率

irritable_phd_syndrome

我注意到当我遇到死锁的MPI程序时,例如 wait.c

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


int main(int argc, char * argv[])
{
    int taskID = -1; 
    int NTasks = -1; 
    int a = 11; 
    int b = 22; 
    MPI_Status Stat;

    /* MPI Initializations */
    MPI_Init(&argc, &argv);
    MPI_Comm_rank(MPI_COMM_WORLD, &taskID);
    MPI_Comm_size(MPI_COMM_WORLD, &NTasks);

    if(taskID == 0)
        MPI_Send(&a, 1, MPI_INT, 1, 66, MPI_COMM_WORLD);
    else //if(taskID == 1)
        MPI_Recv(&b, 1, MPI_INT, 0, 66, MPI_COMM_WORLD, &Stat);

    printf("Task %i :    a: %i    b: %i\n", taskID, a, b); 

    MPI_Finalize();
    return 0;
}

当我wait.c使用mvapich2-2.1库(其本身是使用gcc-4.9.2进行编译)进行编译并运行(例如mpirun -np 4 ./a.out)时,我注意到(通过top),所有4个处理器的运行速度均为100%。

当我wait.c使用openmpi-1.6库(它本身是使用gcc-4.9.2编译)编译并运行它(例如mpirun -np 4 ./a.out)时,我注意到(通过top),有2个处理器的运行速度为100%,有2个处理器的运行速度为0%。

大概是0%的2是完成通信的。

问题:为什么openmpi和mvapich2的CPU使用率有差异?这是预期的行为吗?当CPU使用率是100%时,是不断检查消息是否正在发送吗?

尼古拉·斯坦格(Nicolai Stange)

两种实现都忙于等待MPI_Recv()以最小化延迟。这解释了为什么在两种MPI实施方案中,排名2和3均为100%。

现在,显然将MPI_Finalize()调用的进度排名为0和1 ,这是两种实现方式不同的地方:mvapich2 busy-wait,而openmpi没有。

要回答您的问题:是的,他们在检查是否已收到邮件以及预期的行为时为100%。

如果您不在InfiniBand上,则可以通过将a附加strace到以下进程之一来观察此情况:您应该在其中看到许多poll()调用。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

CPU使用率及其利用率

来自分类Dev

计算CPU利用率

来自分类Dev

如何告诉MVAPICH2使用tcp?

来自分类Dev

玩具程序无法使用OpenMPI 1.6进行操作,但可以与Mvapich2一起使用

来自分类Dev

计算LPAR CPU利用率(AIX)

来自分类Dev

在 Jenkins 中使用 AWS 命令获取 EC2 实例的 CPU 利用率的最佳方法是什么

来自分类Dev

EC2 上具有高 CPU 利用率的未知进程 Ubuntu

来自分类Dev

使用多处理模块时如何提高CPU利用率?

来自分类Dev

如何使用Sigar查找Java中的CPU总利用率

来自分类Dev

为什么在Prometheus中使用irate或rate计算CPU利用率?

来自分类Dev

使用多处理模块时如何提高CPU利用率?

来自分类Dev

如何使用Sigar查找Java中的总CPU利用率

来自分类Dev

Java 多线程服务器 - 高 CPU 利用率和 java.net.SocketException:套接字已关闭

来自分类Dev

我需要帮助了解线程利用率

来自分类Dev

如何根据利用率比较两个电路

来自分类Dev

在MATLAB中显示CPU内核利用率

来自分类Dev

如何获得Akka演员的CPU利用率

来自分类Dev

任务管理器:CPU利用率和速度?

来自分类Dev

在C#中获取当前的CPU利用率

来自分类Dev

检查Linux中cpu利用率的脚本

来自分类Dev

CPU利用率高的原因是什么?

来自分类Dev

virsh迁移后100%CPU利用率并挂起

来自分类Dev

设置Linux中CPU核心利用率的限制

来自分类Dev

如何提高Xen来宾CPU利用率?

来自分类Dev

优化logstash配置以降低CPU利用率

来自分类Dev

Apache Storm 停用拓扑导致 CPU 利用率高

来自分类Dev

MVAPICH2缓冲区别名

来自分类Dev

对于任何 Win OS 上的大多数多线程应用程序,CPU 最大利用率限制为 1/N 个 CPU:为什么?

来自分类Dev

Linux bash脚本编制:使用awk汇总一列以了解总体cpu利用率并显示所有字段

Related 相关文章

  1. 1

    CPU使用率及其利用率

  2. 2

    计算CPU利用率

  3. 3

    如何告诉MVAPICH2使用tcp?

  4. 4

    玩具程序无法使用OpenMPI 1.6进行操作,但可以与Mvapich2一起使用

  5. 5

    计算LPAR CPU利用率(AIX)

  6. 6

    在 Jenkins 中使用 AWS 命令获取 EC2 实例的 CPU 利用率的最佳方法是什么

  7. 7

    EC2 上具有高 CPU 利用率的未知进程 Ubuntu

  8. 8

    使用多处理模块时如何提高CPU利用率?

  9. 9

    如何使用Sigar查找Java中的CPU总利用率

  10. 10

    为什么在Prometheus中使用irate或rate计算CPU利用率?

  11. 11

    使用多处理模块时如何提高CPU利用率?

  12. 12

    如何使用Sigar查找Java中的总CPU利用率

  13. 13

    Java 多线程服务器 - 高 CPU 利用率和 java.net.SocketException:套接字已关闭

  14. 14

    我需要帮助了解线程利用率

  15. 15

    如何根据利用率比较两个电路

  16. 16

    在MATLAB中显示CPU内核利用率

  17. 17

    如何获得Akka演员的CPU利用率

  18. 18

    任务管理器:CPU利用率和速度?

  19. 19

    在C#中获取当前的CPU利用率

  20. 20

    检查Linux中cpu利用率的脚本

  21. 21

    CPU利用率高的原因是什么?

  22. 22

    virsh迁移后100%CPU利用率并挂起

  23. 23

    设置Linux中CPU核心利用率的限制

  24. 24

    如何提高Xen来宾CPU利用率?

  25. 25

    优化logstash配置以降低CPU利用率

  26. 26

    Apache Storm 停用拓扑导致 CPU 利用率高

  27. 27

    MVAPICH2缓冲区别名

  28. 28

    对于任何 Win OS 上的大多数多线程应用程序,CPU 最大利用率限制为 1/N 个 CPU:为什么?

  29. 29

    Linux bash脚本编制:使用awk汇总一列以了解总体cpu利用率并显示所有字段

热门标签

归档