c++ - 如何解决 MPI_Ssend 与生产者和消费者问题有关的错误
问题描述
所以我需要解决多个生产者和消费者使用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 个进程)。显然,您的接收器选择逻辑失败。
推荐阅读
- android - 任何人都可以查看我的 AndroidSQLite 查询游标吗?
- ruby - 如何在使用carrierwave gem上传文件时修复“未定义的方法”错误
- c - 在C中交换指针数组中的2个元素(到不同长度的字符串)
- sqlite - 如何在(键,值)sqlite数据库表中插入?
- sql - 如何以“dd/mm/yyyy”格式调整日期
- javascript - 如何创建函数示例 $('#fooinput').barfunction()
- javascript - 在 JavaScript 中使用 array.join()
- typescript - 使用TypeScript,如何强类型mysql查询结果
- react-native - NSMutableDictionary 类型的 JSON 值无法在获取请求时转换为 NSString
- c++ - 如何在 C++ 中将映射中的键和值打印为列表