簡體   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