MPICH2内存的发送INT

问题描述:

时,我一直工作周,试图得到一个3机集群中运行转矩+ MPICH2。我的计划是用它作为我的开发环境,并最终在EC2或其他一些云从运行的生产代码。既然是一个开发环境,我只是用一些备用的机器(2的64位,在重要的情况下,1 32位)。这些机器正在使用Ubuntu的各种发行版(特立独行,耐寒和业力)。MPICH2内存的发送INT

,我遇到的问题是,一个简单的发送/ recv的测试程序我所做的recv调用似乎运行内存,我不知道为什么。在机器上有1.2G的RAM空闲空间,并发送/接收1个整数。

继承人的代码:

/* 
* A very simple send/recv program 
*/ 

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

#define MAXHOSTNAMELEN 64 

int main(int argc, char **argv) 
{ 
    int pid, from; 
    int nproc; 
    MPI_Status status; 
    int to_recv; 
    int to_send = 1; 
    char hostname[MAXHOSTNAMELEN]; 

    MPI_Init(&argc, &argv); 
    MPI_Comm_size(MPI_COMM_WORLD, &nproc); 
    MPI_Comm_rank(MPI_COMM_WORLD, &pid); 

    gethostname(hostname, MAXHOSTNAMELEN); 
    printf("%d of %d:%s Checking in\n", pid, nproc, hostname); 

    if (pid == 0) { 
     MPI_Recv(&to_recv, 1, MPI_INT, 2, 0, MPI_COMM_WORLD, &status); 
     from = status.MPI_SOURCE; 
     printf("%d of %d:%s Recieved Value %d from %d\n", pid, nproc, hostname, to_recv, from); 

     MPI_Recv(&to_recv, 1, MPI_INT, 1, 0, MPI_COMM_WORLD, &status); 
     from = status.MPI_SOURCE; 
     printf("%d of %d:%s Recieved Value %d from %d\n", pid, nproc, hostname, to_recv, from); 
    } else { 
     MPI_Send(&to_send, 1, MPI_INT, 0, 0, MPI_COMM_WORLD); 
     printf("%d of %d:%s Sent value\n", pid, nproc, hostname); 
    } 

    MPI_Finalize(); 
    exit(0); 
} 

这里是输出:

0 of 3:master Checking in 
2 of 3:node1 Checking in 
1 of 3:node2 Checking in 
1 of 3:node2 Sent value 
Fatal error in MPI_Recv: Other MPI error, error stack: 
MPI_Recv(186)...........................: MPI_Recv(buf=0x7fff33bed040, count=1, MPI_INT, src=2, tag=0, MPI_COMM_WORLD, status=0x7fff33bed020) failed 
MPIDI_CH3I_Progress(402)................: 
MPID_nem_mpich2_blocking_recv(905)......: 
MPID_nem_tcp_connpoll(1838).............: 
state_commrdy_handler(1676).............: 
MPID_nem_tcp_recv_handler(1564).........: 
MPID_nem_handle_pkt(636)................: 
MPIDI_CH3_PktHandler_EagerShortSend(441): Out of memory 
Fatal error in MPI_Send: Other MPI error, error stack: 
MPI_Send(173)..............: MPI_Send(buf=0x7fff8ee5396c, count=1, MPI_INT, dest=0, tag=0, MPI_COMM_WORLD) failed 
MPID_nem_tcp_connpoll(1826): Communication error with rank 0: Connection refused 

如果有,我还没有包括请让我知道,我将它添加任何必要的信息。

MPICH2版本:mpich2-1.4.1p1从源中的每个机器上
的gcc版本编译:
主:4.2.4
节点1:4.4.5
节点2:4.4.1

另外,如果重要,node2是32位机器。预先感谢您的帮助。

EDIT:我跑这个我已经在过去这是建立和已知的,为了测试的代码工作中使用的群集上。该代码似乎正常工作,我相信我看到的问题是关系到MPI我的开发集群上的配置。

不幸的是,MPICH2不支持异构平台。您可以构建MPICH2和您的32位应用程序,并在所有机器上运行该应用程序。