MPI使用多个进程运行我的程序。
我将其中一个进程暂停一段时间,以便它使用最少的CPU。
std::this_thread::sleep_for()
看起来像我想要的,但thread
位在这种情况下看起来有点粗略。
这样做可以吗?
答案 0 :(得分:1)
这是完全可以的 - 没有什么可以因此而崩溃或挂起。
然而,你的"以便它使用最少的CPU"有点担心。您是否运行了比可用硬件线程更多的MPI进程?这种超额认购通常对性能很糟糕,应该避免。每个硬件节点的进程数少于其提供的硬件线程数,通常可以获得最佳性能,从而允许系统进程在不占用应用程序的情况下运行。
这可能是合理的(我刚刚发布a paper)的情况是,如果你有一个程序的一部分,你的并行性比你的进程少。如果您使用Turbo Boost在Intel CPU上运行,那么让空闲进程实际处于休眠状态可以允许运行工作进程的核心以更高的时钟速度运行。