C++ 如何解决MPI错误与生产者和消费者问题
因此,我需要使用开放mpi解决多个生产者和消费者的问题。 编译器说MPI_Ssend中有一个错误,但是在哪里? (id_buffer==4)C++ 如何解决MPI错误与生产者和消费者问题,c++,openmpi,C++,Openmpi,因此,我需要使用开放mpi解决多个生产者和消费者的问题。 编译器说MPI_Ssend中有一个错误,但是在哪里? (id_buffer==4) void function\u productor(int productor\u i) { int b=4; for(无符号整数i=0;i
void function\u productor(int productor\u i)
{
int b=4;
for(无符号整数i=0;i cout这是一个非常基本的错误,从错误消息和文档中可以明显看出()
您有3个进程,但您要发送到第4级(id\u buffer
)(因此您应该至少有5个进程)。显然,您的接收器选择逻辑失败。谢谢,对不起,这是我第一次使用mpi,一旦更改了排名,它会给我带来一个新的错误:系统中没有足够的可用插槽来满足我们需要的10个插槽应用程序请求的e:./prodcons2-mu_exe为应用程序请求更少的插槽,或提供更多可用插槽。在这种情况下,从使用简单的发送/接收调用开始。尝试简单,然后进行更复杂的操作。这是一个分配,0到3是生产者ID,4是缓冲区,5到9个消费者使用您提供的代码,这是唯一的t我可以这么说。但一定要从基础开始。以下是完整的代码:
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 );
}
}