2013-06-29 37 views
1

我正在對具有8個節點並且每個具有Intel Xeon六核處理器的集羣進行MPI編程。我需要三個處理器來處理我的mpi代碼。PBS調度程序爲3個處理器的MPI程序分配相同的處理器

我使用qsub提交作業。當我使用「qstat -n」檢查哪些處理器正在運行時,它會顯示類似cn004/0 * 3的內容。

那麼這是否意味着它只在一個處理器上運行?

因爲它是不小於當我使用單個處理器加速(這是當域大小對於這兩種情況下是相同的)

我使用用於提交腳本如下

#! /bin/bash 
#PBS -o logfile.log 
#PBS -e errorfile.err 
#PBS -l cput=40:00:00 
#PBS -lselect=1:ncpus=3:ngpus=3 
#PBS -lplace=excl 
cat $PBS_NODEFILE 
cd $PBS_O_WORKDIR 
mpicc -g -W -c -I /usr/local/cuda/include mpi1.c 
mpicc -g -W mpi1.o -L /usr/local/cuda/lib64 -lOpenCL 
mpirun -np 3 ./a.out 

回答

1

「qstat -n」它表示類似cn004/0 * 3。

問:那麼這是否意味着它只在一個處理器上運行?

簡短答案是「否」。這並不意味着它在一個處理器上運行。 「cn004/0 * 3」應解釋爲「該作業分配了三個cpu核心,如果我們將核心數量從0到5分配,則分配的核心將具有數字0,1和2」。

如果另一項工作在節點上運行,它將接收到下三個連續的數字「3,4和5」。在qstat -n輸出中,這看起來像「cn004/3 * 3」。

您使用指令place=excl來確保其他作業不會獲得節點,因此基本上所有六個核心都可用。

現在對於你的第二個問題:

問:它是不是比我使用一個處理器加快

爲了回答這個問題,我們需要知道的算法正確並行化。

+1

與CUDA不同,OpenCL編譯器是運行時環境的一部分,因此不需要「mpicc」的「OpenCL enabled」編譯器後端。 –

+0

@HristoIliev謝謝你,我對此一無所知。 –

+0

有沒有什麼方法可以找到程序裏面的「節點」是程序運行?這是如果我給了select = 2 – user2534312