MPI_Init是否等价于指定desired=MPI_THREAD_SINGLE的MPI_Init_thread?
MPI_Init 与 MPI_Init_thread(..., MPI_THREAD_SINGLE, ...) 是否等价?
是的,MPI_Init 完全等价于调用将 desired 参数设置为 MPI_THREAD_SINGLE 的 MPI_Init_thread。
从MPI标准规范来看:
- MPI_Init 初始化MPI环境时,默认只保证单线程安全,对应
MPI_THREAD_SINGLE的线程支持级别——即进程中只有调用MPI_Init的线程可以执行MPI操作。 - 调用
MPI_Init_thread(NULL, NULL, MPI_THREAD_SINGLE, &provided)时,provided参数返回的线程支持级别必然是MPI_THREAD_SINGLE,这和MPI_Init的行为完全一致。
多数MPI实现里,MPI_Init 的底层实现就是直接调用 MPI_Init_thread 并传入 MPI_THREAD_SINGLE 作为desired参数,进一步印证了两者的等价性。
内容的提问来源于stack exchange,提问作者user2052436
相关产品推荐
相关产品推荐

