我想知道为什么MPI_Send
的签名如下:
int MPI_Send(void *buf, int count, MPI_Datatype datatype, int dest, int tag,
MPI_Comm comm)
第一个参数是void *
类型。为什么类型void *
的第一个参数而不是const void *
。 MPI_Send
会修改来源吗?
我问这样的问题,因为我使用带有C ++的MPI并将message.c_str()
传递给MPI_Send函数,其中message
的类型为std::string
。通过这种方式,编译器会抱怨。
答案 0 :(得分:8)
MPI_Send会修改源吗?
不,它不会。
我的问题是为什么第一个参数是void *而不是const void *。
糟糕的设计。
MPI的第一版在1989年标准化后发布,const
作为标准提供。
向未来的MPI-3提交并接受了将遗失的const
添加到MPI_Send
和其他MPI功能的提案。