2017-06-16 34 views
0

問題:是否有可能,如果是,那麼如何獲得核心的列表我的mpi作業正在哪個特定時刻運行?是否有可能以及如何獲得我的mpi作業從slurm運行的核心列表?

很容易列出作業已分配到的節點,但在花了幾個小時花在瀏覽互聯網之後,我開始懷疑slurm以任何方式暴露核心列表(爲什麼它不會很難?)。

問題是,我想仔細檢查一下,我正在處理的集羣是否真的像我要求的那樣跨節點,核心(如果可能,套接字)傳播我的作業進程你會)。

請注意,hwloc不是我的問題的答案,我問是否有可能從slurm中獲取這些信息,而不是從我的程序中獲取(如果您願意,請打電話給我好奇)。

密切相關的(但肯定不是一回事)other similar question

回答

1

好,這就要看你的MPI庫(MPICH爲基礎,基於開放MPI,等),你如何運行MPI應用程序(通過mpirun或通過srun直接啓動)和你的SLURM配置。

如果你直接啓動,SLURM是可以做綁定的。 srun --cpu_bind=verbose ... 應報告每個任務是如何綁定的。

如果你的mpirun,SLURM只在每個節點上產生一個代理。 在Open MPI的情況下,spawn命令爲 srun --cpu_bind=none orted ... 所以除非將SLURM配置爲限制可用內核(例如,如果您配置了cpuset且節點不處於獨佔模式),則所有內核均可由MPI使用任務。 ,然後由MPI庫在可用內核中綁定MPI任務。

如果你想知道可用的核心是什麼

,您可以 srun -N $SLURM_NNODES -n $SLURM_NNODES --cpu_bind=none grep Cpus_allowed_list /proc/self/status

如果你想知道這個任務是如何綁定

,您可以 mpirun grep Cpus_allowed_list /proc/self/status

,或者你可以問MPI報告, iirc,帶Open MPI您可以 mpirun --report-bindings ...

+0

酷!我將在明天上午首先測試它,然後我們會看到。 – Empischon

+0

我非常確定這個集羣是在MVAPICH上運行的...事實證明,它是在Intel MPI上運行的! 所以,谷歌上搜索了一下與你的答案關鍵詞遞給我: --print秩地圖 作爲IMPI等價的: --report-綁定 所以,非常感謝! – Empischon

相關問題