2016-12-17 56 views
0

我正在用不同的編譯器設置對MPI程序進行基準測試。使用Linux的時間工具來衡量MPI程序的性能

現在,我使用Linux的time這樣做:

$> $(which time) mpirun -v [executable] 

我得到了什麼,我預期方面看行的值。

是否有任何理由爲什麼我應該不是爲此使用time

測量所需的CPU時間是這裏主要關注的。

我知道單個機器上的基準測試並不一定與羣集上發生的情況一致,但這超出了範圍。

回答

1

您應該爲而不是使用time爲了獲取MPI程序的CPU時間。

首先,這不會在分佈式設置中工作。現在你的問題並不清楚你是針對單個節點還是集羣,但這並不重要。即使在單個節點上,MPI實現也可以使用任何機制來啓動。所以時間可能會或可能不會包含實際應用程序進程的CPU時間。

但還有更多的概念性問題:MPI程序的CPU時間是什麼意思?這將是所有進程的CPU時間總和。這是基準測試的一個不好的指標:它不能量化改進,並且與整體運行時間無關。例如,一個非常不平衡的代碼版本可能會佔用更少的CPU時間,但比平衡的時間更多。或者啓用忙等待而不是阻塞可能會改善整體運行時間,但也會增加使用的CPU時間。要真正瞭解發生了什麼,哪個過程使用哪種資源,您應該使用proper parallel performance analysis tool

在HPC中,您不會按CPU時間預算,而是預留CPU * walltime。因此,如果您必須使用一維度量標準,那麼walltime是一種可行的方法。現在,您可以使用time mpirun ...來獲得該結果,但對於短期運行的應用程序來說,精度不會很高。

+0

謝謝您的詳細解答!我在這件事上很少有經驗,所以非常感謝! – j2L4e

相關問題