【发布时间】:2018-08-23 13:11:07
【问题描述】:
在混合 MPI/OpenMP 程序中超额订阅 OpenMP 线程的数量会导致 C++ 中并行代码的错误执行吗?不正确是指它不会按预期在并行测试用例中产生输出。
我试图提出一个示例,说明超额订阅本身会导致代码执行失败。我能想到并通过研究发现的唯一原因是,OpenMP 中使用的线程太多导致堆栈溢出。
我提出这个问题的动机是我正在开发一个使用混合 OpenMP / MPI 的大型项目,其中失败的测试数量似乎取决于使用的核心数量。我想这可能是由于问题范围之外的许多问题造成的,但我很想知道仅仅超额订阅是否会导致正确性测试失败。
【问题讨论】:
标签: c++ multithreading mpi openmp shared-memory