小编Jer*_*rry的帖子

MPI非阻塞Irecv没有收到数据?

我使用MPI非阻塞通信(MPI_Irecv,MP_Isend)来监视从属的空闲状态,代码如下所示.

等级0:

int dest = -1;
while( dest <= 0){
   int i;
   for(i=1;i<=slaves_num;i++){
      printf("slave %d, now is %d \n",i,idle_node[i]);
      if (idle_node[i]== 1) {
         idle_node[i] = 0;
         dest = i;
         break;
      }
   }
   if(dest <= 0){
      MPI_Irecv(&idle_node[1],1,MPI_INT,1,MSG_IDLE,MPI_COMM_WORLD,&request);
      MPI_Irecv(&idle_node[2],1,MPI_INT,2,MSG_IDLE,MPI_COMM_WORLD,&request);
      MPI_Irecv(&idle_node[3],1,MPI_INT,3,MSG_IDLE,MPI_COMM_WORLD,&request);
      // MPI_Wait(&request,&status);
   }
   usleep(100000);
}

idle_node[dest] = 0;//indicates this slave is busy now
Run Code Online (Sandbox Code Playgroud)

等级1,2,3:

while(1)
{
   ...//do something
   MPI_Isend(&idle,1,MPI_INT,0,MSG_IDLE,MPI_COMM_WORLD,&request);
   MPI_Wait(&request,&status);
}
Run Code Online (Sandbox Code Playgroud)

它工作,但我希望它更快,所以我删除该行:

usleep(100000);
Run Code Online (Sandbox Code Playgroud)

然后排名0进入死亡,而像这样:

slave 1, now is 0
slave 2, now is 0
slave 3, now is 0 
slave 1, now …
Run Code Online (Sandbox Code Playgroud)

nonblocking openmpi

2
推荐指数
1
解决办法
3870
查看次数

我们可以使用CPU更快地解决问题而不是使用GPU吗?

最近我总是听说GPU在计算方面非常强大,现在我脑子里出现了一个问题:我们可以用CPU更快地解决问题而不是使用GPU吗?

你能举个例子吗?

cpu gpu

1
推荐指数
1
解决办法
370
查看次数

标签 统计

cpu ×1

gpu ×1

nonblocking ×1

openmpi ×1