繁体   English   中英

我可以在 MPI 进程中使用 `std::this_thread::sleep_for()` 吗?

[英]Can I use `std::this_thread::sleep_for()` with an MPI process?

MPI 使用多个进程运行我的程序。

我让这些进程之一休眠一段时间,以便它使用最少的 CPU。

std::this_thread::sleep_for()看起来像我想要的,但在这种情况下,该thread看起来有点粗略。

这样做可以吗?

这是完全可以的 - 不会因此而崩溃或挂起。

但是,您的“以便它使用最少的 CPU”有点令人担忧。 您运行的 MPI 进程是否多于可用于执行它们的硬件线程? 这种超额订阅通常对性能来说很糟糕,应该避免。 最好的性能通常是每个硬件节点的进程比它提供的硬件线程数少一个,以允许系统进程在某个地方运行而无需抢占应用程序。

这可能是合理的(我刚刚发表了一篇论文)的情况是,如果您的程序部分中的并行性比进程少。 如果您在带有 Turbo Boost 的 Intel CPU 上运行,那么让空闲进程实际上处于睡眠状态可以让运行工作进程的内核以更高的时钟速度运行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM