我如何解决生产者和消费者问题 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 个进程)。显然你的接收者选择逻辑失败了。
所以我需要解决使用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 个进程)。显然你的接收者选择逻辑失败了。