MPI 使用多个进程运行我的程序。
我希望其中一个进程休眠一段时间,以便它使用最少的 CPU。
std::this_thread::sleep_for()
看起来像我想要的,但是那个 thread
位在这种情况下看起来有点粗略。
这样做可以吗?
最佳答案
这样做完全没问题 - 任何事情都不应因此而崩溃或挂起。
但是,您的“使其使用最少的 CPU”有点令人担忧。您运行的 MPI 进程是否超过可用于执行它们的硬件线程?这种超额订阅通常对性能很糟糕,应该避免。每个硬件节点的进程数比它提供的硬件线程数少一个时,通常会出现最佳性能,以允许系统进程在某个地方运行而不会抢占应用程序。
如果您的程序有一部分的并行性低于进程,那么这可能是合理的(我刚刚发布了 a paper)。如果您在具有 Turbo Boost 的 Intel CPU 上运行,那么让空闲进程实际休眠可以让运行工作进程的内核以更高的时钟速度运行。
关于c++ - 我可以将 `std::this_thread::sleep_for()` 用于 MPI 进程吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37062120/