女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

使用樹(shù)莓派構(gòu)建 Slurm 高性能計(jì)算集群:分步指南!

上海晶珩電子科技有限公司 ? 2025-06-17 16:27 ? 次閱讀

e0f6b540-4b54-11f0-986f-92fbcf53809c.jpg

在這篇文章中,我將分享我嘗試使用樹(shù)莓派構(gòu)建Slurm高性能計(jì)算集群的經(jīng)歷。一段時(shí)間前,我開(kāi)始使用這個(gè)集群作為測(cè)試平臺(tái),來(lái)創(chuàng)建一個(gè)更大的、支持GPU計(jì)算的高性能計(jì)算集群。我獲得了高性能計(jì)算設(shè)置各個(gè)組件的實(shí)踐經(jīng)驗(yàn),并了解了它們是如何協(xié)同工作的。設(shè)置SLURM組件確實(shí)是其中的主要部分,經(jīng)過(guò)一番研究,我終于成功搭建了自己的高性能計(jì)算集群。由于設(shè)置這臺(tái)機(jī)器非常簡(jiǎn)單,因此它非常適合快速嘗試不同的軟件包和庫(kù),或者調(diào)整集群硬件以查看哪種配置效果最佳。

我們的目標(biāo)是構(gòu)建一個(gè)能夠處理多個(gè)計(jì)算節(jié)點(diǎn)的高性能計(jì)算集群。從頭開(kāi)始創(chuàng)建這樣的系統(tǒng)是一項(xiàng)具有挑戰(zhàn)性的任務(wù),需要一定的專業(yè)知識(shí)。此外,找到一份涵蓋配置Slurm集群所有必要步驟的全面教程相當(dāng)困難,至少根據(jù)我的經(jīng)驗(yàn)是這樣。因此,我希望這份分步指南能對(duì)你構(gòu)建自己的高性能計(jì)算集群集群有所幫助。

概要

本文從對(duì)高性能計(jì)算集群的簡(jiǎn)要介紹開(kāi)始,并強(qiáng)調(diào)了Slurm作為高性能計(jì)算集群系統(tǒng)常用的資源管理器和作業(yè)調(diào)度器的重要性。接下來(lái),我將展示集群網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu),討論必要的先決條件、硬件規(guī)格和操作系統(tǒng)設(shè)置。之后,我將指導(dǎo)你完成存儲(chǔ)節(jié)點(diǎn)的設(shè)置。然后,通過(guò)從源代碼構(gòu)建Slurm,在主節(jié)點(diǎn)上安裝和配置它,并添加一個(gè)額外的計(jì)算節(jié)點(diǎn)。最后,我將展示幾個(gè)示例,展示我們構(gòu)建的Slurm集群的狀態(tài)以及如何在其中處理作業(yè)提交。

特性

最終,你將可以擁有自己的高性能計(jì)算集群,需要:

1.Slurm工作負(fù)載管理器

2.集中式網(wǎng)絡(luò)存儲(chǔ)

目前,我專注于最小化特性,以防止這篇文章過(guò)長(zhǎng)。目標(biāo)是首先設(shè)置一個(gè)具有基本功能的高性能計(jì)算集群,但足夠靈活,以便以后進(jìn)行擴(kuò)展。

什么是高性能計(jì)算集群?

高性能計(jì)算集群是由互連的計(jì)算機(jī)組成的網(wǎng)絡(luò),旨在共同解決計(jì)算問(wèn)題并在多個(gè)領(lǐng)域高速處理大型數(shù)據(jù)集。這些集群由多個(gè)計(jì)算節(jié)點(diǎn)組成,每個(gè)節(jié)點(diǎn)都配備了處理器、內(nèi)存,并且通常還配備了專門(mén)的加速器,如GPU,使研究人員和科學(xué)家能夠處理計(jì)算密集型任務(wù)和模擬

Slurm(簡(jiǎn)單Linux資源管理工具)是一種開(kāi)源的高性能計(jì)算集群作業(yè)調(diào)度器和資源管理器。它在高效分配計(jì)算資源、管理作業(yè)調(diào)度以及協(xié)調(diào)高性能計(jì)算集群上的并行計(jì)算方面發(fā)揮著關(guān)鍵作用。作為Kubernetes集群的替代方案,Slurm專門(mén)用于管理科學(xué)研究中常見(jiàn)的批處理計(jì)算工作負(fù)載、模擬和數(shù)據(jù)分析任務(wù)。而Kubernetes則更側(cè)重于容器化應(yīng)用程序和微服務(wù)。

集群網(wǎng)絡(luò)拓?fù)?/strong>

有多種網(wǎng)絡(luò)拓?fù)淇捎糜谂渲酶咝阅苡?jì)算集群,每種拓?fù)涠坚槍?duì)特定的性能預(yù)期和應(yīng)用需求進(jìn)行了定制。在我們的場(chǎng)景中,我們專注于通過(guò)路由器和交換機(jī)在子網(wǎng)(10.0.0.x)內(nèi)互連三個(gè)樹(shù)莓派。我在路由器上設(shè)置了一個(gè)DHCP服務(wù)器,并保留了IP地址,以便根據(jù)每個(gè)樹(shù)莓派的唯一MAC地址為其分配固定的IP地址。然而,這可以通過(guò)直接在樹(shù)莓派上配置靜態(tài)IP(192.168.0.x)來(lái)簡(jiǎn)化。此外,如果你使用Wi-Fi接入點(diǎn)而不是LAN連接來(lái)通過(guò)家庭ISP路由器互連樹(shù)莓派,則可以繞過(guò)路由器和以太網(wǎng)交換機(jī)的需求。由于此設(shè)置旨在用于測(cè)試集群,并且不需要快速或甚至穩(wěn)定的連接,因此這種替代方案是可行的。此外,通過(guò)將路由器鏈接到家庭ISP Wi-Fi接入點(diǎn)并通過(guò)以太網(wǎng)共享給設(shè)備來(lái)提供互聯(lián)網(wǎng)連接。下圖提供了集群網(wǎng)絡(luò)的視覺(jué)表示:

e10400d8-4b54-11f0-986f-92fbcf53809c.png

樹(shù)莓派高性能計(jì)算集群網(wǎng)絡(luò)拓?fù)?/i>

這種網(wǎng)絡(luò)拓?fù)涮峁┝丝梢浦残缘膬?yōu)勢(shì),允許集群輕松連接到不同的接入點(diǎn)。此外,我使用了一個(gè)節(jié)點(diǎn)專門(mén)用于數(shù)據(jù)管理,作為專用的網(wǎng)絡(luò)存儲(chǔ)服務(wù)器。剩下的兩個(gè)樹(shù)莓派一個(gè)用作主節(jié)點(diǎn)和計(jì)算節(jié)點(diǎn),另一個(gè)用作額外的計(jì)算節(jié)點(diǎn)。

先決條件

硬件組件

我使用了三個(gè)閑置了一段時(shí)間的樹(shù)莓派以及其他一些組件,如下所示:

1.樹(shù)莓派4 Model B 2GB板(主機(jī)名rpnode01)

該設(shè)備作為主節(jié)點(diǎn)和計(jì)算節(jié)點(diǎn)。

2.樹(shù)莓派4 Model B 2GB板(主機(jī)名rpnode02)

該設(shè)備作為第二個(gè)計(jì)算節(jié)點(diǎn)。

3.樹(shù)莓派3+ 1GB板(主機(jī)名filenode01)

該設(shè)備設(shè)置為網(wǎng)絡(luò)存儲(chǔ)服務(wù)器。

4.USB電源集線器

你需要一個(gè)帶有多個(gè)端口的USB電源充電器,能夠同時(shí)支持多個(gè)樹(shù)莓派的電力需求(每個(gè)樹(shù)莓派至少2A)。

5.路由器和以太網(wǎng)交換機(jī)(可選)

路由器將管理外部連接,而交換機(jī)處理內(nèi)部設(shè)備通信

e113d2c4-4b54-11f0-986f-92fbcf53809c.jpg

樹(shù)莓派集群的照片

操作系統(tǒng)

我使用了Debian bookworm(版本12)OS Lite 64位,它以輕量級(jí)著稱,這對(duì)于像樹(shù)莓派這樣資源有限的系統(tǒng)來(lái)說(shuō)是有益的。預(yù)計(jì)需要對(duì)所有設(shè)備進(jìn)行以下調(diào)整:

1.我使用了默認(rèn)用戶pi,并設(shè)置了測(cè)試密碼testpass。然而,這里還有改進(jìn)的空間,可以利用LDAP或其他認(rèn)證機(jī)制來(lái)保持集群中用戶和組ID的同步。

2.在節(jié)點(diǎn)上啟用SSH訪問(wèn),一種方便的方法是使用SSH密鑰共享來(lái)訪問(wèn)節(jié)點(diǎn)。

3.為CPU和內(nèi)存啟用控制組。通過(guò)修改/boot/firmware/cmdline.txt,添加cgroup_enable=cpuset cgroup_memory=1 cgroup_enable=memory swapaccount=1。更改后重啟系統(tǒng)。

4.將以下主機(jī)名添加到/etc/hosts:

10.0.0.1rpnode01 rpnode01.home.local10.0.0.2rpnode02 rpnode02.home.local10.0.0.3filenode01 filenode01.home.local

5.如果需要,使用以下命令配置語(yǔ)言和區(qū)域設(shè)置:

$sudo raspi-config

6.最后,更新和升級(jí)系統(tǒng)包:

$sudo apt update && sudo apt upgrade

e11fef6e-4b54-11f0-986f-92fbcf53809c.png

存儲(chǔ)節(jié)點(diǎn)

在高性能計(jì)算集群中,計(jì)算節(jié)點(diǎn)被設(shè)計(jì)為無(wú)狀態(tài)的,這意味著它們不保留任何持久數(shù)據(jù)或狀態(tài)。相反,所有應(yīng)用程序軟件和用戶數(shù)據(jù)都存儲(chǔ)在集中式共享存儲(chǔ)上。這種架構(gòu)提供了幾個(gè)優(yōu)勢(shì)。首先,它通過(guò)簡(jiǎn)化新計(jì)算節(jié)點(diǎn)的添加而無(wú)需在多臺(tái)機(jī)器上復(fù)制數(shù)據(jù)來(lái)增強(qiáng)可擴(kuò)展性。其次,它為用戶提供了靈活性,允許他們從集群中的任何計(jì)算節(jié)點(diǎn)訪問(wèn)其應(yīng)用程序和數(shù)據(jù)。第三,將所有數(shù)據(jù)存儲(chǔ)在集中式存儲(chǔ)節(jié)點(diǎn)上可確保數(shù)據(jù)完整性和一致性,消除了因在單個(gè)計(jì)算節(jié)點(diǎn)上本地存儲(chǔ)數(shù)據(jù)而可能產(chǎn)生的不一致性擔(dān)憂。最后,無(wú)狀態(tài)計(jì)算節(jié)點(diǎn)架構(gòu)簡(jiǎn)化了維護(hù)任務(wù),如軟件更新、硬件更換和故障排除,因?yàn)闊o(wú)需轉(zhuǎn)移或備份計(jì)算節(jié)點(diǎn)上本地存儲(chǔ)的數(shù)據(jù)。

NFS服務(wù)器

我在專用節(jié)點(diǎn)filenode01上設(shè)置了NFS(網(wǎng)絡(luò)文件系統(tǒng))服務(wù)器,以便擁有網(wǎng)絡(luò)存儲(chǔ)。當(dāng)我在高性能計(jì)算集群的上下文中將計(jì)算節(jié)點(diǎn)稱為“無(wú)狀態(tài)”時(shí),我的意思是計(jì)算節(jié)點(diǎn)本身不保留任何持久數(shù)據(jù)。相反,所有用戶主目錄數(shù)據(jù)和應(yīng)用程序軟件都駐留在集中式存儲(chǔ)節(jié)點(diǎn)上。

為此,我使用apt包管理器安裝了NFS服務(wù)器。這可以通過(guò)在終端中運(yùn)行以下命令來(lái)完成:

$sudo apt install nfs-kernel-server

然后,我通過(guò)配置/etc/exports文件來(lái)定義我希望通過(guò)NFS共享的目錄。這是在Unix類操作系統(tǒng)中NFS服務(wù)器使用的配置文件。該文件指定了服務(wù)器上哪些目錄與NFS客戶端共享,并定義了這些目錄的訪問(wèn)權(quán)限。我確保這些文件夾存在,然后使用以下命令添加條目:

$sudomkdir-p /home /nfs

$ sudobash -c"cat >> /etc/exports << EOF/home ?*(rw,sync,no_root_squash,no_subtree_check)/nfs ?*(rw,sync,no_root_squash,no_subtree_check)EOF"

在這里,我使用*來(lái)允許來(lái)自任何節(jié)點(diǎn)的訪問(wèn),并根據(jù)需要指定了選項(xiàng),如rw表示讀寫(xiě)訪問(wèn)。編輯exports文件后,通過(guò)運(yùn)行以下命令應(yīng)用更改:

$sudo exportfs -ra

如果節(jié)點(diǎn)上啟用了防火墻,你可能需要打開(kāi)NFS端口。NFSv4使用TCP和UDP端口2049,而NFSv3使用額外的端口。你可以使用ufw或iptables根據(jù)防火墻配置打開(kāi)這些端口。

我們可以使用showmount來(lái)驗(yàn)證NFS共享是否可用。此命令將顯示節(jié)點(diǎn)上導(dǎo)出的目錄列表。

$ sudo showmount -eExport listforfilenode01:/home */nfs *

NFS客戶端

為了在兩個(gè)NFS客戶端節(jié)點(diǎn)(即rpnode01和rpnode02)上啟用網(wǎng)絡(luò)存儲(chǔ)訪問(wèn),我們可以通過(guò)調(diào)整/etc/fstab文件來(lái)包含NFS掛載點(diǎn)。這是一個(gè)系統(tǒng)文件,允許在系統(tǒng)啟動(dòng)時(shí)自動(dòng)化掛載文件系統(tǒng)。

在更改此文件之前,請(qǐng)?jiān)俅未_保客戶端側(cè)的目錄/home和/nfs存在。執(zhí)行以下命令:

$sudomkdir-p /home /nfs

$ sudobash -c"cat >> /etc/fstab << EOFfilenode01:/home /home nfs defaults 0 0filenode01:/nfs /nfs nfs defaults 0 0EOF"

追加到/etc/fstab的每一行都定義了一個(gè)不同的NFS掛載點(diǎn)。它指示系統(tǒng)將主機(jī)名為filenode01的NFS服務(wù)器上的/home(/nfs)目錄掛載到本地的/home(/nfs)目錄。如前所述,/home用于用戶數(shù)據(jù),而/nfs目錄用于共享軟件棧。重啟節(jié)點(diǎn)。

為了檢查更新的/etc/fstab的正確性,我使用以下命令mount -a。

$ sudo mount -av/nfs : successfully mounted/home : successfully mounted

這會(huì)在系統(tǒng)啟動(dòng)時(shí)讀取/etc/fstab,并掛載尚未掛載的文件系統(tǒng)。

主節(jié)點(diǎn)

構(gòu)建和安裝Slurm

我總是更喜歡從源代碼編譯Slurm,而不是使用預(yù)構(gòu)建的包。這允許定制化,確保訪問(wèn)最新功能和修復(fù),并提供教育價(jià)值。從源代碼構(gòu)建Slurm包并使其準(zhǔn)備安裝的說(shuō)明與此處所述大致相同,但我做了一些更改,下面將進(jìn)行解釋。

1.先決條件庫(kù)

在繼續(xù)配置Slurm之前,請(qǐng)確保已安裝以下庫(kù)或頭文件。你可以通過(guò)apt包管理器輕松安裝它們。

$sudo apt install libpmix-dev libpam-dev libmariadb-dev \ libmunge-dev libdbus-1-dev munge

2.從源代碼構(gòu)建

讓我們從SchedMD的GitHub倉(cāng)庫(kù)下載最新版本的Slurm 23.11(在撰寫(xiě)本文時(shí))。我們將為其構(gòu)建aarch64架構(gòu),而不是x86_64。

https://github.com/SchedMD/slurm/tags

$sudomkdir/opt/slurm &&cd/opt/slurm$sudo wget https://github.com/SchedMD/slurm/archive/refs/tags/slurm-23-11-6-1.tar.gz$sudo tar -xf slurm-23-11-6-1.tar.gz

考慮到我們是從頭開(kāi)始構(gòu)建所有內(nèi)容,編譯Slurm將需要幾分鐘時(shí)間。

$cdslurm-slurm-23-11-6-1$sudo ./configure \ --prefix=/opt/slurm/build \ --sysconfdir=/etc/slurm \ --enable-pam \ --with-pam_dir=/lib/aarch64-linux-gnu/security/ \ --without-shared-libslurm \ --with-pmix$sudo make$sudo make contrib$sudo make install

--prefix選項(xiàng)指定了安裝編譯代碼的基礎(chǔ)目錄。我沒(méi)有直接安裝到/usr,而是將其設(shè)置為/opt/slurm/build。原因是在將Slurm安裝在額外的計(jì)算節(jié)點(diǎn)上時(shí),打算利用它來(lái)創(chuàng)建可安裝的包。

3.構(gòu)建Debian包

我使用了fpm工具來(lái)創(chuàng)建編譯代碼的Debian包。這需要安裝一個(gè)額外的包。

$sudo apt ruby-dev$sudo gem install fpm

此工具將創(chuàng)建一個(gè)包文件slurm-23.11_1.0_arm64.deb。值得一提的是,從Slurm 23.11.0開(kāi)始,Slurm包含了構(gòu)建Debian包所需的文件。

$sudo fpm -s dir -t deb -v1.0-n slurm-23.11--prefix=/usr -C /opt/slurm/build.Createdpackage {:path=>"slurm-23.11_1.0_arm64.deb"}

4. 安裝Debian包

接下來(lái),我們通過(guò)dpkg命令安裝此包:

$sudo dpkg-islurm-23.11_1.0_arm64.debPreparing to unpack slurm-23.11_1.0_arm64.deb ...Unpacking slurm-23.11(1.0) over (1.0) ...Setting up slurm-23.11(1.0) ...Processing triggersforman-db(2.11.2-2) ...

我們還必須創(chuàng)建slurm系統(tǒng)用戶,并使用正確的訪問(wèn)權(quán)限初始化所需的目錄。確保slurm用戶存在,并且其用戶ID在集群中同步。請(qǐng)注意,Slurm控制器使用的文件和目錄需要由slurm用戶可讀或可寫(xiě)。此外,日志文件目錄/var/log/slurm和狀態(tài)保存目錄/var/spool/slurm必須可寫(xiě)。

在這里,我將slurm用戶和組ID固定為151。

$sudo adduser --system --group -uid 151 slurm

還通過(guò)執(zhí)行以下命令創(chuàng)建了具有預(yù)期權(quán)限的必要目錄:

$sudomkdir-p /etc/slurm /var/spool/slurm/ctld /var/spool/slurm/d /var/log/slurm$sudochownslurm: /var/spool/slurm/ctld /var/spool/slurm/d /var/log/slurm

Slurm配置

到目前為止,一切進(jìn)展順利。到目前為止,我們已經(jīng)構(gòu)建并安裝了Slurm包。下一步將是配置其各個(gè)組件,并將它們作為服務(wù)運(yùn)行。

1.Slurm數(shù)據(jù)庫(kù)守護(hù)進(jìn)程

我們將設(shè)置Slurm數(shù)據(jù)庫(kù)守護(hù)進(jìn)程(slurmdbd)來(lái)收集每個(gè)作業(yè)的詳細(xì)會(huì)計(jì)信息,并將所有會(huì)計(jì)數(shù)據(jù)存儲(chǔ)在數(shù)據(jù)庫(kù)中。這首先需要在主節(jié)點(diǎn)上創(chuàng)建一個(gè)數(shù)據(jù)庫(kù)服務(wù)器,但理想情況下,它應(yīng)該位于一個(gè)單獨(dú)的節(jié)點(diǎn)上。我選擇了MariaDB,這是一個(gè)與MySQL兼容的開(kāi)源數(shù)據(jù)庫(kù)。你可以使用以下說(shuō)明部署數(shù)據(jù)庫(kù)服務(wù)器:

$ sudo apt install mariadb-server$ sudo mysql-u rootcreatedatabase slurm_acct_db;createuser'slurm'@'localhost';setpasswordfor'slurm'@'localhost'=password('slurmdbpass');grantusageon*.*to'slurm'@'localhost';grantallprivilegesonslurm_acct_db.*to'slurm'@'localhost';flush privileges;exit

之后,我們需要?jiǎng)?chuàng)建/etc/slurm/slurmdbd.conf并添加所需的配置,例如指定認(rèn)證、數(shù)據(jù)庫(kù)服務(wù)器主機(jī)名、日志記錄等。執(zhí)行以下命令以添加配置文件。

$sudo bash -c"cat > /etc/slurm/slurmdbd.conf << EOF#?Authentication infoAuthType=auth/munge
#slurmDBD infoDbdAddr=localhostDbdHost=localhostSlurmUser=slurmDebugLevel=3LogFile=/var/log/slurm/slurmdbd.logPidFile=/run/slurmdbd.pidPluginDir=/usr/lib/slurm
#Database infoStorageType=accounting_storage/mysqlStorageUser=slurmStoragePass=slurmdbpassStorageLoc=slurm_acct_dbEOF"

此文件描述了Slurm數(shù)據(jù)庫(kù)守護(hù)進(jìn)程的配置信息。請(qǐng)注意,它應(yīng)該只位于執(zhí)行slurmdbd的計(jì)算機(jī)上。此外,它必須只能由slurm用戶讀取。

$sudochmod600 /etc/slurm/slurmdbd.conf$sudochownslurm: /etc/slurm/slurmdbd.conf

接下來(lái),我們需要將slurmdbd設(shè)置為systemd服務(wù)。這可以通過(guò)創(chuàng)建/etc/systemd/system/slurmdbd.service來(lái)完成。

$ sudobash -c"cat > /etc/systemd/system/slurmdbd.service << EOF[Unit]Description=Slurm DBD accounting daemonAfter=network.target munge.serviceConditionPathExists=/etc/slurm/slurmdbd.conf
[Service]Type=forkingEnvironmentFile=-/etc/sysconfig/slurmdbdExecStart=/usr/sbin/slurmdbd$SLURMDBD_OPTIONSExecReload=/bin/kill -HUP$MAINPIDPIDFile=/run/slurmdbd.pid
[Install]WantedBy=multi-user.targetEOF"

你現(xiàn)在可以啟用并啟動(dòng)slurmdbd.service,如下所示:

$sudo systemctlenableslurmdbd.service$sudo systemctl start slurmdbd.service

$sudo systemctl | grep slurmdbd slurmdbd.service loaded active running Slurm DBD accounting daemon

如果一切順利,你應(yīng)該看到slurmdbd服務(wù)已啟動(dòng)并正在運(yùn)行。否則,請(qǐng)檢查/var/log/slurm/slurmdbd.log文件或systemd狀態(tài)。

2.Slurm控制器守護(hù)進(jìn)程

Slurm控制器守護(hù)進(jìn)程(slurmctl)協(xié)調(diào)Slurm活動(dòng),是Slurm的中央管理守護(hù)進(jìn)程。它監(jiān)控所有其他Slurm守護(hù)進(jìn)程和資源,接受作業(yè),并為這些作業(yè)分配資源。我們必須創(chuàng)建一個(gè)/etc/slurm/slurm.conf文件。此配置文件定義了Slurm如何與資源交互、管理作業(yè)以及與其他組件通信。它包含各種各樣的參數(shù),并且必須在集群的每個(gè)節(jié)點(diǎn)上保持一致。使用以下命令在終端中創(chuàng)建并添加所需的配置:

$sudo bash -c"cat > /etc/slurm/slurm.conf << EOFClusterName=raspi-hpc-clusterControlMachine=rpnode01SlurmUser=slurmAuthType=auth/mungeStateSaveLocation=/var/spool/slurm/ctldSlurmdSpoolDir=/var/spool/slurm/dSwitchType=switch/noneMpiDefault=pmi2SlurmctldPidFile=/run/slurmctld.pidSlurmdPidFile=/run/slurmd.pidProctrackType=proctrack/cgroupPluginDir=/usr/lib/slurmReturnToService=1TaskPlugin=task/cgroup
#SCHEDULINGSchedulerType=sched/backfillSelectTypeParameters=CR_Core_Memory,CR_CORE_DEFAULT_DIST_BLOCK,CR_ONE_TASK_PER_CORE
#LOGGINGSlurmctldDebug=3SlurmctldLogFile=/var/log/slurm/slurmctld.logSlurmdDebug=3SlurmdLogFile=/var/log/slurm/slurmd.logJobCompType=jobcomp/none
#ACCOUNTINGJobAcctGatherType=jobacct_gather/cgroupAccountingStorageTRES=gres/gpuDebugFlags=CPU_Bind,gresAccountingStorageType=accounting_storage/slurmdbdAccountingStorageHost=localhostAccountingStoragePass=/run/munge/munge.socket.2AccountingStorageUser=slurmAccountingStorageEnforce=limits
#COMPUTE NODESNodeName=rpnode01 CPUs=4 Sockets=1 CoresPerSocket=4 ThreadsPerCore=1 RealMemory=1800 State=idleNodeName=rpnode02 CPUs=4 Sockets=1 CoresPerSocket=4 ThreadsPerCore=1 RealMemory=1800 State=idle
#PARTITIONNSPartitionName=batch Nodes=rpnode[01-02] Default=YES State=UP DefaultTime=1-0000 DefMemPerCPU=200 MaxTime=30-0000 DefCpuPerGPU=1EOF"

再次創(chuàng)建/etc/systemd/system/slurmctld.service以將slurmctl作為systemd守護(hù)進(jìn)程運(yùn)行。這可以通過(guò)運(yùn)行以下命令來(lái)添加:

$ sudobash -c"cat > /etc/systemd/system/slurmctld.service << EOF[Unit]Description=Slurm controller daemonAfter=network.target munge.serviceConditionPathExists=/etc/slurm/slurm.conf
[Service]Type=forkingEnvironmentFile=-/etc/sysconfig/slurmctldExecStart=/usr/sbin/slurmctld$SLURMCTLD_OPTIONSExecReload=/bin/kill -HUP$MAINPIDPIDFile=/run/slurmctld.pid
[Install]WantedBy=multi-user.targetEOF"

我們現(xiàn)在可以啟用并啟動(dòng)slurmctld.service,如下所示:

$sudo systemctlenableslurmctld.service$sudo systemctl start slurmctld.service

$sudo systemctl | grep slurmctldslurmctld.service loaded active running Slurm controller daemon

3.Slurm節(jié)點(diǎn)守護(hù)進(jìn)程

如果你想將主節(jié)點(diǎn)也用作計(jì)算節(jié)點(diǎn),那么你應(yīng)該設(shè)置Slurm的計(jì)算節(jié)點(diǎn)守護(hù)進(jìn)程(slurmd)。slurmd守護(hù)進(jìn)程必須在每個(gè)計(jì)算節(jié)點(diǎn)上執(zhí)行。它監(jiān)控計(jì)算節(jié)點(diǎn)上運(yùn)行的所有任務(wù),接受作業(yè),啟動(dòng)任務(wù),并在請(qǐng)求時(shí)終止正在運(yùn)行的任務(wù)。此守護(hù)進(jìn)程讀取slurmd.conf以及兩個(gè)額外的文件:cgroup.conf和cgroup_allowed_devices_file.conf。使用以下命令創(chuàng)建所需的兩個(gè)控制組(cgroup)文件:

$ sudobash -c"cat > /etc/slurm/cgroup.conf << EOFConstrainCores=yes?ConstrainDevices=yesConstrainRAMSpace=yesEOF"

$ sudobash -c"cat > /etc/slurm/cgroup_allowed_devices_file.conf << EOF/dev/null/dev/urandom/dev/zero/dev/sda*/dev/cpu/*/*/dev/pts/*/dev/nvidia*EOF"

然后,我們必須再次創(chuàng)建systemd.service文件以將slurmd作為服務(wù)運(yùn)行。

$ sudobash -c"cat > /etc/systemd/system/slurmd.service << EOF[Unit]Description=Slurm node daemonAfter=network.target munge.serviceConditionPathExists=/etc/slurm/slurm.conf
[Service]Type=forkingEnvironmentFile=-/etc/sysconfig/slurmdExecStart=/usr/sbin/slurmd -d /usr/sbin/slurmstepd$SLURMD_OPTIONSExecReload=/bin/kill -HUP$MAINPIDPIDFile=/run/slurmd.pidKillMode=processLimitNOFILE=51200LimitMEMLOCK=infinityLimitSTACK=infinityRestart=on-failureRestartSec=5s
[Install]WantedBy=multi-user.targetEOF"

最后,使用以下命令啟用并啟動(dòng)slurmd服務(wù):

$sudo systemctlenableslurmd.service$sudo systemctl start slurmd.service

$sudo systemctl | grep slurmd slurmd.service loaded active running Slurm node daemon

在這一步,我們已經(jīng)準(zhǔn)備就緒,可以使用Slurm的sinfo命令查看有關(guān)我們的Slurm節(jié)點(diǎn)和分區(qū)的信息:

$sinfoPARTITION AVAIL TIMELIMIT NODES STATE NODELISTbatch* up 30-000 1 idle rpnode01

如果你看到此輸出,則表示你已經(jīng)成功安裝并配置了Slurm。干得好!

Slurm 賬戶記錄

Slurm為每個(gè)執(zhí)行的作業(yè)和作業(yè)步驟收集賬戶信息。它還支持將賬戶記錄直接寫(xiě)入數(shù)據(jù)庫(kù)。出于測(cè)試目的,我們?cè)赟lurm數(shù)據(jù)庫(kù)中定義了一個(gè)集群“raspi-hpc-cluster”和一個(gè)賬戶“compute”,如下所示:

$sudo sacctmgr add cluster raspi-hpc-cluster$sudo sacctmgr add account compute description="Compute account"Organization=home

$ sudo sacctmgrshowaccount Account Descr Org---------- -------------------- -------------------- compute Compute account home rootdefaultroot account root

并將用戶pi與常規(guī)Slurm賬戶關(guān)聯(lián):

$ sudo sacctmgradduserpi account=compute$ sudo sacctmgr modifyuserpisetGrpTRES=cpu=4,mem=1gb$ sudo sacctmgrshowuser User Def Acct Admin---------- ---------- --------- pi compute None root root Administ+

如果一切順利,我們的單節(jié)點(diǎn)Slurm集群現(xiàn)在應(yīng)該已經(jīng)準(zhǔn)備好提交作業(yè)了。讓我們首先顯示有關(guān)可用節(jié)點(diǎn)當(dāng)前狀態(tài)的信息:

$sinfoPARTITION AVAIL TIMELIMIT NODES STATE NODELISTbatch* up 30-000 1 idle rpnode[01]

現(xiàn)在,讓我們執(zhí)行一個(gè)簡(jiǎn)單的Slurm srun命令并檢查輸出。

$srun hostnamerpnode01

這表明我們的作業(yè)作為Slurm作業(yè)成功運(yùn)行,并返回了計(jì)算節(jié)點(diǎn)的主機(jī)名,在這種情況下是rpnode01。

計(jì)算節(jié)點(diǎn)

將我們的Slurm集群擴(kuò)展以包含額外的計(jì)算節(jié)點(diǎn)涉及以下幾個(gè)關(guān)鍵步驟:

1.安裝先決條件庫(kù)和頭文件。

2.從主節(jié)點(diǎn)將/etc/munge/munge.key復(fù)制到計(jì)算節(jié)點(diǎn),將所有者更改為munge用戶,并重啟munge.service。

3.安裝slurm-23.11_1.0_arm64.deb。

4.創(chuàng)建slurm用戶和所需的Slurm目錄。

5.將slurm.conf、cgroup.conf和cgroup_allowed_devices_file.conf文件復(fù)制到/etc/slurm/。

6.啟用并啟動(dòng)slurmd.service。

測(cè)試

讓我們首先使用以下命令將新節(jié)點(diǎn)rpnode02的狀態(tài)更新為idle:

$scontrol update nodename=rpnode02 state=idle

$sinfoPARTITION AVAIL TIMELIMIT NODES STATE NODELISTbatch* up 30-000 2 idle rpnode[01-02]

再次在新節(jié)點(diǎn)上使用以下命令運(yùn)行主機(jī)名作業(yè):

$srun -w rpnode02 hostnamerpnode02

如你所見(jiàn),此作業(yè)在第二個(gè)計(jì)算節(jié)點(diǎn)上執(zhí)行,因此這次返回了主機(jī)名rpnode02。

示例

集群信息

Slurm中的分區(qū)是將集群劃分為邏輯節(jié)點(diǎn)集的一種方式,可用于更有效地管理和分配資源。在這里,我們顯示有關(guān)Slurm中配置的batch分區(qū)的詳細(xì)信息:

$ scontrolshowpartitionPartitionName=batch AllowGroups=ALLAllowAccounts=ALLAllowQos=ALL AllocNodes=ALLDefault=YES QoS=N/A DefaultTime=1-00:00:00DisableRootJobs=NOExclusiveUser=NOGraceTime=0Hidden=NO MaxNodes=UNLIMITED MaxTime=30-00:00:00MinNodes=0LLN=NOMaxCPUsPerNode=UNLIMITED MaxCPUsPerSocket=UNLIMITED Nodes=rpnode[01-02] PriorityJobFactor=1PriorityTier=1RootOnly=NOReqResv=NOOverSubscribe=NO OverTimeLimit=NONEPreemptMode=OFF State=UP TotalCPUs=8TotalNodes=2SelectTypeParameters=NONE JobDefaults=DefCpuPerGPU=1 DefMemPerCPU=200MaxMemPerNode=UNLIMITED TRES=cpu=8,mem=3600M,node=2,billing=8

并顯示rpnode01的狀態(tài):

$ scontrolshownodesNodeName=rpnode01 Arch=aarch64 CoresPerSocket=4 CPUAlloc=0CPUEfctv=4CPUTot=4CPULoad=0.01 AvailableFeatures=(null) ActiveFeatures=(null) Gres=(null) NodeAddr=rpnode01 NodeHostName=rpnode01 Version=23.11.6 OS=Linux6.6.28+rpt-rpi-v8 #1SMP PREEMPT Debian1:6.6.28-1+rpt1 (2024-04-22) RealMemory=1800AllocMem=0FreeMem=297Sockets=1Boards=1 State=IDLE ThreadsPerCore=1TmpDisk=0Weight=1Owner=N/A MCS_label=N/A Partitions=batch BootTime=2024-05-19T13:58:15SlurmdStartTime=2024-05-19T14:20:03 LastBusyTime=2024-05-19T14:26:11ResumeAfterTime=None CfgTRES=cpu=4,mem=1800M,billing=4 AllocTRES= CapWatts=n/a CurrentWatts=0AveWatts=0 ExtSensorsJoules=n/a ExtSensorsWatts=0ExtSensorsTemp=n/a

提交作業(yè)

讓我們?cè)谥髂夸浿袆?chuàng)建一個(gè)簡(jiǎn)單的Slurm批處理文件:

$cat> ~/submit.sh <#SBATCH --job-name=testjob#SBATCH --mem=10mb#SBATCH --ntasks=1#SBATCH --cpus-per-task=2#SBATCH --time=0000
srun sleep 10EOF

現(xiàn)在我們可以提交此作業(yè):

$sbatch submit.shSubmitted batch job 8

你可以在默認(rèn)批處理隊(duì)列中查看提交作業(yè)的狀態(tài):

$ squeue-alSun May1914:26:032024JOBIDPARTITION NAME USER STATE TIMETIME_LIMI NODES NODELIST(REASON) 8 batch testjob pi RUNNING 0:03 1:00 1rpnode01

此作業(yè)正在rpnode01上運(yùn)行,并具有1分鐘的時(shí)間限制。

總結(jié)

如前所述,此高性能計(jì)算集群用作測(cè)試環(huán)境。它目前配備了基本的Slurm和集中存儲(chǔ)功能,但具有未來(lái)擴(kuò)展和增強(qiáng)的潛力。我計(jì)劃撰寫(xiě)后續(xù)文章,涵蓋與高性能計(jì)算集群系統(tǒng)設(shè)置相關(guān)的其他主題,包括用戶會(huì)計(jì)、磁盤(pán)配額、使用環(huán)境模塊和Conda包管理器設(shè)置軟件棧、MPI實(shí)現(xiàn)以及設(shè)置Jupyterhub服務(wù)。

隨時(shí)查看我的GitHub倉(cāng)庫(kù),了解我?guī)啄昵皠?chuàng)建的有關(guān)設(shè)置高性能計(jì)算集群的指南。在該倉(cāng)庫(kù)中,我涵蓋了所提到的高性能計(jì)算集群功能的設(shè)置過(guò)程。請(qǐng)記住,這些信息有些過(guò)時(shí),可能需要進(jìn)行一些調(diào)整才能與當(dāng)前版本一起使用。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 計(jì)算機(jī)
    +關(guān)注

    關(guān)注

    19

    文章

    7637

    瀏覽量

    90323
  • 樹(shù)莓派
    +關(guān)注

    關(guān)注

    121

    文章

    1963

    瀏覽量

    107078
收藏 人收藏

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    樹(shù)莓權(quán)威用戶指南

    `樹(shù)莓權(quán)威用戶指南樹(shù)莓(raspberry pi),是一款基于linux系統(tǒng)的、只有一張信用卡大小的卡片式
    發(fā)表于 07-01 00:23

    120個(gè)樹(shù)莓集群

    我就發(fā)圖,讓大家觀賞一下120個(gè)樹(shù)莓做的集群。面板的后面,安裝了10個(gè)USB集線器,10個(gè)以太網(wǎng)交換機(jī),一個(gè)超強(qiáng)電源組。
    發(fā)表于 01-20 18:29

    樹(shù)莓Python編程指南分享

    樹(shù)莓python編程指南
    發(fā)表于 10-07 08:43

    樹(shù)莓(Raspberry Pi)實(shí)戰(zhàn)指南.pdf

    樹(shù)莓實(shí)戰(zhàn)指南
    發(fā)表于 05-07 15:17 ?130次下載

    樹(shù)莓4的計(jì)算模組終于上線!

    一段時(shí)間后發(fā)布同架構(gòu)的計(jì)算模組。樹(shù)莓 1 的計(jì)算模組在 2014 年推出,樹(shù)莓 3 和 3+
    的頭像 發(fā)表于 10-29 11:00 ?4498次閱讀
    <b class='flag-5'>樹(shù)莓</b><b class='flag-5'>派</b>4的<b class='flag-5'>計(jì)算</b>模組終于上線!

    樹(shù)莓MCU來(lái)了!

    1月22日,樹(shù)莓基金會(huì)最新發(fā)布一款低成本、高性能的微控制器開(kāi)發(fā)板Raspberry Pi Pico,新產(chǎn)品相比普通樹(shù)莓體積更小,售價(jià)僅4
    發(fā)表于 10-25 09:51 ?17次下載
    <b class='flag-5'>樹(shù)莓</b><b class='flag-5'>派</b>MCU來(lái)了!

    樹(shù)莓鏡像構(gòu)建指導(dǎo)、使用方法和特性介紹

    本文主要介紹 openEuler Embedded 中樹(shù)莓 4B 的構(gòu)建,使用和特性介紹。
    的頭像 發(fā)表于 06-08 15:44 ?3604次閱讀

    樹(shù)莓-搭建邊緣計(jì)算云平臺(tái)

    基于樹(shù)莓搭建邊緣計(jì)算云平臺(tái)
    的頭像 發(fā)表于 12-03 00:17 ?1936次閱讀
    <b class='flag-5'>樹(shù)莓</b><b class='flag-5'>派</b>-搭建邊緣<b class='flag-5'>計(jì)算</b>云平臺(tái)

    樹(shù)莓機(jī)器人船構(gòu)建

    電子發(fā)燒友網(wǎng)站提供《樹(shù)莓機(jī)器人船構(gòu)建.zip》資料免費(fèi)下載
    發(fā)表于 07-10 11:33 ?0次下載
    <b class='flag-5'>樹(shù)莓</b><b class='flag-5'>派</b>機(jī)器人船<b class='flag-5'>構(gòu)建</b>

    等待已久,新品上市 | RevPi Connect 4系列:基于樹(shù)莓CM4計(jì)算模塊的全新工業(yè)樹(shù)莓

    虹科工業(yè)樹(shù)莓新品重磅來(lái)襲!虹科RevPi Connect 4采用最新樹(shù)莓CM4計(jì)算模塊,全面升級(jí),
    的頭像 發(fā)表于 08-01 11:42 ?1114次閱讀
    等待已久,新品上市 | RevPi Connect 4系列:基于<b class='flag-5'>樹(shù)莓</b><b class='flag-5'>派</b>CM4<b class='flag-5'>計(jì)算</b>模塊的全新工業(yè)<b class='flag-5'>樹(shù)莓</b><b class='flag-5'>派</b>

    高性能計(jì)算集群的能耗優(yōu)化

    高性能計(jì)算(HighPerformanceComputing,HPC)是指利用大規(guī)模并行計(jì)算機(jī)集群來(lái)解決復(fù)雜的科學(xué)和工程問(wèn)題的技術(shù)。高性能
    的頭像 發(fā)表于 05-25 08:27 ?799次閱讀
    <b class='flag-5'>高性能</b><b class='flag-5'>計(jì)算</b><b class='flag-5'>集群</b>的能耗優(yōu)化

    樹(shù)莓4B的性能特點(diǎn)及應(yīng)用

    。Cortex-A72是ARM公司推出的一款高性能處理器,采用了64位架構(gòu),具備了高性能、低功耗的特點(diǎn)。相較于前代產(chǎn)品樹(shù)莓3B+,其CPU性能
    的頭像 發(fā)表于 08-30 16:54 ?4415次閱讀

    樹(shù)莓4b和什么性能計(jì)算機(jī)相當(dāng)

    樹(shù)莓4B與何種性能計(jì)算機(jī)相當(dāng),這個(gè)問(wèn)題涉及到多個(gè)方面的比較,包括處理器性能、內(nèi)存大小、接口豐富度以及應(yīng)用場(chǎng)景等。以下是從這些方面進(jìn)行的綜
    的頭像 發(fā)表于 08-30 17:01 ?1929次閱讀

    Raspberry Pi樹(shù)莓新手指南

    電子發(fā)燒友網(wǎng)站提供《Raspberry Pi樹(shù)莓新手指南.pdf》資料免費(fèi)下載
    發(fā)表于 12-23 17:05 ?2次下載

    解鎖樹(shù)莓集群:一步步打造你的超級(jí)計(jì)算陣列!

    樹(shù)莓集群簡(jiǎn)介樹(shù)莓集群是由多臺(tái)聯(lián)網(wǎng)的樹(shù)莓
    的頭像 發(fā)表于 04-25 16:17 ?457次閱讀
    解鎖<b class='flag-5'>樹(shù)莓</b><b class='flag-5'>派</b><b class='flag-5'>集群</b>:一步步打造你的超級(jí)<b class='flag-5'>計(jì)算</b>陣列!