c++ - 混合并行 : MPI and TBB

标签 c++ multithreading parallel-processing mpi tbb

在 TBB 中,经常(并且应该?)在内部调用的 task_scheduler_init () 方法是经过深思熟虑的设计决策。

但是,如果我们把TBB和MPI混合使用,是不是在不控制每个MPI进程的线程数的情况下保证线程安全呢? 例如,假设我们有 7 个内核(没有超线程)和 2 个 MPI 进程。如果每个进程同时使用 4 个线程生成一个单独的 TBB 任务,则存在可能导致程序在运行时崩溃的冲突。

我是 TBB 的新手。 期待您的意见和建议!

最佳答案

从英特尔 TBB 运行时的角度来看,它是否是 MPI 进程并不重要。因此,如果您有两个进程,您将拥有两个独立的英特尔 TBB 运行时实例。我不确定我是否理解与线程安全相关的问题,但它应该可以正常工作。但是,您可能会超额订阅,从而导致性能问题。

此外,如果您同时(从多个线程)使用 MPI 例程,您应该检查 MPI 实现文档,因为它可能会导致一些问题。

关于c++ - 混合并行 : MPI and TBB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45579255/

相关文章:

c++ - 计算C++中树形结构的内存使用情况

java - 在*多线程* Swing 应用程序中使用 Hibernate 进行 session 管理

c - 在 C 中使用多线程显示质数

c++ - MPI 运行时给出不正确的输出

c - 如何不使用 waitpid 阻止父级

C#高效地在核心之间划分任务

c++ - 导入C++模块,如果失败: import Python version?

c++ - 使用 enable_if 匹配数字作为函数参数

c++ - cout变量值延时

C++ 类 : Object that creates Thread + pointer to the function = Access violation