2014-01-14 34 views
3

我正在尋找一種方式將OpenMP作業提交給Grid Engine調度程序,同時指定它應該運行的核心數。相當於LSF的-n選項或PBS的-l個節點= [計數]選項。SGE/UGE/etc。將OpenMP作業提交給多個核心的標準化方法?

當我搜索這個時,我看到一堆答案,指定類似「-pe threaded [內核數量]」的語法。在這些答案中,沒有提到必須創建一個名爲「線程化」的並行環境。但是當我嘗試這種語法時,它失敗了,說所請求的並行線程環境不存在。當我輸入「qconf -spl」時,我得到的唯一結果是「make」。所以 - 這個「線程化」的並行環境是否應該默認存在,還是必須在集羣上手動創建?

如果必須手動創建,是否有任何其他語法將作業提交給多個不依賴羣集上可配置命名的多核?這是針對第三方程序提交給集羣的,所以我不希望不僅不得不依賴於創建此pe的客戶端,而是將它命名爲相同的,等等......我希望-l選項可能會有一些東西,但我一直沒能找到任何的排列來實現這一點。

+1

Grid Engine安裝的管理員定義和配置pe(並行環境),所以,不,你不應該指望默認存在一個叫做'threaded'的pe。至於問題的其餘部分,我無法提供幫助,因爲我有專家管理我使用的集羣的幸運位置,所以不必過多地關注自己的本質。 –

回答

5

如果您只有「make」作爲可能的並行環境,那麼這意味着您的集羣上沒有設置並行環境。

有兩個解決您的問題,根據這些2種情況:

A)你有根/管理員訪問羣集

B)你不

在情況B ,請讓管理員創建一個並行環境。在情況A中,你必須創建一個並行環境。要創建一個新的並行環境中,您必須輸入(需要root /管理員權限):

qconf -ap <pe_name> 

,默認編輯器將開始,你必須編輯默認pe_conf文件。如果您需要設置唯一的OpenMP並行環境中,你可以使用這些選項:

pe_name   smp 
slots    9999 
user_lists   NONE 
xuser_lists  NONE 
start_proc_args /bin/true 
stop_proc_args  /bin/true 
allocation_rule $pe_slots 
control_slaves  FALSE 
job_is_first_task FALSE 
urgency_slots  min 
accounting_summary TRUE 

和一個MPI並行環境:

pe_name   mpi 
slots    9999 
user_lists   NONE 
xuser_lists  NONE 
start_proc_args /opt/sge/mpi/startmpi.sh $pe_hostfile 
stop_proc_args  /opt/sge/mpi/stopmpi.sh 
allocation_rule $fill_up 
control_slaves  FALSE 
job_is_first_task TRUE 
urgency_slots  min 
accounting_summary TRUE 

當你看到,在後一種情況下,你將指向SGE到爲您的MPI配置提供正確的初始化腳本和關閉腳本。在第一種情況下,您只需指向/bin/true即可。

allocation_rule在這個例子中是不同的。 $fill_up意味着SGE將填充它可以找到的部分MPI作業的任何CPU,而對於smp配置,則只需在同一臺計算機上分配正確數量的插槽即$pe_slots

如果您使用MPI,您的節點應該使用高性能開關連接,如infiniband否則您的工作將花費更多時間進行通信而不是計算。

編輯: 哦,順便說一句:正確synthax提交作業與並行環境中有效的是:

qsub -pe <pe_name> <nb_slots> 

最後編輯: 最終答案的問題來這裏下面的評論。實際上,如果羣集上未設置並行環境(PE),SGE不能處理多線程作業。如果沒有集羣管理員權限,則必須猜測對於必須使用qconf -spl使用,並與qconf -sp <pe_name>檢查不同的PE,或添加在軟件的選項,允許用戶指定正確的PE必須使用的PE。

否則,即如果羣集上沒有可用的PE,則不能使用軟件的並行版本。

請參閱評論以獲取更多信息。

+0

正如OP所述,我們創建了一個與調度程序交互的第三方程序。所以我們非常希望找到一種不依賴於我們控制之外因素的方式 - 即客戶是否配置了這些pe,並以某種方式命名它們等等。我們沒有任何訪問這些客戶端系統。我們可以在所有其他調度程序中使用開箱即用的標誌來做到這一點 - 這種「不得不配置並行環境」的東西似乎與SGE相當具體。這是100%唯一的方法嗎?如果是這樣,那麼我們實際上沒有解決方案可以爲我們工作。 :-( – teleute00

+0

這就是說 - 你的OpenMP例子,你有插槽爲「9999」,那麼它是否適用於任何系統?(也就是說,我們是否可以包含管理員可以運行的腳本,沒有我們需要了解系統的任何信息,計算各種排列,等等......? – teleute00

+0

如果有效插槽的數量取決於正在使用的隊列,插槽9999不是問題 – Danduk82

相關問題