Slurm是一個用於Linux和Unix操作系統的開源的、可擴展的和高性能的計算集群管理系統,可以用於管理數千個節點。Slurm設計用於管理計算機集群,特別是高性能計算(HPC)系統。
一、Slurm API
Slurm提供了一組API,用於用戶和管理員使用編程語言進行訪問和管理Slurm,這些API包括C、Python、Perl和Java等語言。Slurm API包括以下組件:
- 命令行界面:提供Slurm標準命令的Python介面;
- Slurm open-source source base library:提供訪問Slurm API的C函數;
- SLURM perl library:Slurm Perl API
- Java binding:提供Java API的通用綁定(JNI);
- Python binding:Slurm的Python API
所有Slurm API都可以在Slurm官方文檔中找到。這些API可用於創建自定義腳本,以管理Slurm工作,以及進行高級任務請求。
二、Slurm搭建GPU集群
在Slurm中使用GPU資源時,需要至少一個GPU,而對於多GPU節點,Slurm提供了多種排隊策略:
- 共享GPU:可將同一任務的多個執行互相共享GPU。可以選擇合適的分區大小,該分區大小建議為每個GPU配置的核心數量;
- 獨佔GPU:預訂所有GPU資源,等待隊列中的作業獲得所有GPU,生命周期結束後,釋放GPU資源;
- 混合GPU:為同一任務使用多個GPU和CPU資源。Slurm將GPU、CPU和內存分開進行排隊,因此可以分別通過QoS參數控制GPU、CPU和內存。這意味著Slurm可以優化內存和GPU之間的通信。
以下是一個Slurm搭建GPU集群的示例,該示例使用2個節點,每個節點有1個GPU。
Step 1:安裝GPU驅動程序
$ sudo apt-get install nvidia-driver
Step 2:安裝CUDA和cuDNN
$ sudo apt-get install cuda $ sudo apt-get install libcudnn7 $ sudo apt-get install libcudnn7-dev
Step 3:安裝Slurm
$ sudo apt-get install slurm-llnl
Step 4:在Slurm配置中添加GPU資源
在Slurm配置文件中定義GPU資源,如下所示:
NodeName=node1 Name=gpu Type=gpu File=/dev/nvidia0 NodeName=node2 Name=gpu Type=gpu File=/dev/nvidia0
Step 5:測試GPU資源
$ salloc -N 1 -p gpu -t 20:00 $ srun -p gpu -N 1 nvidia-smi
三、Slurm支持Ubuntu嗎
Slurm可以在各種Linux和Unix操作系統上運行,包括Ubuntu。可以使用以下命令在Ubuntu上安裝Slurm:
$ sudo apt-get install slurm-llnl
默認情況下,Slurm將在Ubuntu上啟動,並可以使用Ubuntu上的Slurm命令管理計算集群。
四、Slurm節點宕機處理
Slurm可以檢測到節點宕機並處理宕機節點。當一個節點宕機時,Slurm將執行以下操作:
- Slurm將檢測到節點已經下線,並在Slurm資料庫中刪除該節點;
- Slurm將自動停止正在運行的任務,並將它們重新分配到其它可用節點上;
- Slurm將自動關閉所有由該節點處理的依賴任務,確保任務不會一直處於等待狀態。
如果您想要手動將節點從Slurm中刪除,可以使用以下命令:
$ scontrol update nodename=node0 state=down reason="node down"
以上就是Slurm的簡要概述,同時介紹了Slurm的幾個方面。隨著科學技術的發展,Slurm作為一個高效的計算集群管理系統在科學研究中扮演著巨大的角色。如有興趣可以進入官網(http://slurm.schedmd.com/)獲取更多資料。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/275970.html