我使用任務集來設定一個多執行緒行程以在 Linux 主機上運行,??如下所示:
任務-c 1,2 ./myprocess
特定執行緒是否總是在特定 CPU 上運行,例如執行緒 1 總是在 c1 上運行?還是會在不同時間在 c1 或 c2 上運行?
uj5u.com熱心網友回復:
不,過濾器應用于整個行程,執行緒可以在(受限串列)核心之間移動。如果您希望執行緒不移動,那么您需要分別設定每個執行緒的親和性(例如使用pthread_setaffinity_np示例)。請注意,您可以使用強大的 hwloc 工具 ( hwloc-ps -t) 檢查給定行程的執行緒的親和性。
請注意,某些庫/框架可以更輕松地做到這一點。對于 OpenMP 程式就是這種情況,您可以在其中使用環境變數OMP_PLACES來設定每個執行緒的親和性。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/480494.html
上一篇:重新啟動應用程式的簡單方法
