我如何解决生产者和消费者问题 MPI_Ssend 的错误

how can i solve an error with MPI_Ssend with producer and consumer problem

所以我需要解决使用open mpi的多个生产者和消费者的问题。 编译器说 MPI_Ssend 中有错误,但是在哪里呢? (id_buffer == 4)

void funcion_productor(int productor_i)
{ 
  int b = 4;
  for ( unsigned int i= 0 ; i < num_items ; i++ )
  {
    // producir valor
    int valor_prod = producir(productor_i);
    // enviar valor
    cout << "Productor " << productor_i << " va a enviar valor " << 
    valor_prod << endl << flush;
    MPI_Ssend( &valor_prod, 1, MPI_INT, id_buffer, 0, MPI_COMM_WORLD );
    }
}

这是一个非常基本的错误,从错误消息和文档中可以明显看出 (https://www.mpich.org/static/docs/v3.2/www3/MPI_Ssend.html)。

您有 3 个进程,但您发送到排名 4 (id_buffer)(因此您应该至少有 5 个进程)。显然你的接收者选择逻辑失败了。