一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

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

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

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

上海晶珩電子科技有限公司 ? 2025-06-17 16:27 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

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

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

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

概要

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

特性

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

1.Slurm工作負載管理器

2.集中式網(wǎng)絡存儲

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

什么是高性能計算集群?

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

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

集群網(wǎng)絡拓撲

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

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

樹莓派高性能計算集群網(wǎng)絡拓撲

這種網(wǎng)絡拓撲提供了可移植性的優(yōu)勢,允許集群輕松連接到不同的接入點。此外,我使用了一個節(jié)點專門用于數(shù)據(jù)管理,作為專用的網(wǎng)絡存儲服務器。剩下的兩個樹莓派一個用作主節(jié)點和計算節(jié)點,另一個用作額外的計算節(jié)點。

先決條件

硬件組件

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

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

該設(shè)備作為主節(jié)點和計算節(jié)點。

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

該設(shè)備作為第二個計算節(jié)點。

3.樹莓派3+ 1GB板(主機名filenode01)

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

4.USB電源集線器

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

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

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

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

樹莓派集群的照片

操作系統(tǒng)

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

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

2.在節(jié)點上啟用SSH訪問,一種方便的方法是使用SSH密鑰共享來訪問節(jié)點。

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

4.將以下主機名添加到/etc/hosts:

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

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

$sudo raspi-config

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

$sudo apt update && sudo apt upgrade

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

存儲節(jié)點

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

NFS服務器

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

為此,我使用apt包管理器安裝了NFS服務器。這可以通過在終端中運行以下命令來完成:

$sudo apt install nfs-kernel-server

然后,我通過配置/etc/exports文件來定義我希望通過NFS共享的目錄。這是在Unix類操作系統(tǒng)中NFS服務器使用的配置文件。該文件指定了服務器上哪些目錄與NFS客戶端共享,并定義了這些目錄的訪問權(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"

在這里,我使用*來允許來自任何節(jié)點的訪問,并根據(jù)需要指定了選項,如rw表示讀寫訪問。編輯exports文件后,通過運行以下命令應用更改:

$sudo exportfs -ra

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

我們可以使用showmount來驗證NFS共享是否可用。此命令將顯示節(jié)點上導出的目錄列表。

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

NFS客戶端

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

在更改此文件之前,請再次確??蛻舳藗?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的每一行都定義了一個不同的NFS掛載點。它指示系統(tǒng)將主機名為filenode01的NFS服務器上的/home(/nfs)目錄掛載到本地的/home(/nfs)目錄。如前所述,/home用于用戶數(shù)據(jù),而/nfs目錄用于共享軟件棧。重啟節(jié)點。

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

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

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

主節(jié)點

構(gòu)建和安裝Slurm

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

1.先決條件庫

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

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

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

讓我們從SchedMD的GitHub倉庫下載最新版本的Slurm 23.11(在撰寫本文時)。我們將為其構(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

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

$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選項指定了安裝編譯代碼的基礎(chǔ)目錄。我沒有直接安裝到/usr,而是將其設(shè)置為/opt/slurm/build。原因是在將Slurm安裝在額外的計算節(jié)點上時,打算利用它來創(chuàng)建可安裝的包。

3.構(gòu)建Debian包

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

$sudo apt ruby-dev$sudo gem install fpm

此工具將創(chuàng)建一個包文件slurm-23.11_1.0_arm64.deb。值得一提的是,從Slurm 23.11.0開始,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包

接下來,我們通過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)用戶,并使用正確的訪問權(quán)限初始化所需的目錄。確保slurm用戶存在,并且其用戶ID在集群中同步。請注意,Slurm控制器使用的文件和目錄需要由slurm用戶可讀或可寫。此外,日志文件目錄/var/log/slurm和狀態(tài)保存目錄/var/spool/slurm必須可寫。

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

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

還通過執(zhí)行以下命令創(chuàng)建了具有預期權(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īng)構(gòu)建并安裝了Slurm包。下一步將是配置其各個組件,并將它們作為服務運行。

1.Slurm數(shù)據(jù)庫守護進程

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

$ 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

之后,我們需要創(chuàng)建/etc/slurm/slurmdbd.conf并添加所需的配置,例如指定認證、數(shù)據(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ù)庫守護進程的配置信息。請注意,它應該只位于執(zhí)行slurmdbd的計算機上。此外,它必須只能由slurm用戶讀取。

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

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

$ 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)在可以啟用并啟動slurmdbd.service,如下所示:

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

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

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

2.Slurm控制器守護進程

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

$ 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)在可以啟用并啟動slurmctld.service,如下所示:

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

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

3.Slurm節(jié)點守護進程

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

$ 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"

最后,使用以下命令啟用并啟動slurmd服務:

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

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

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

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

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

Slurm 賬戶記錄

Slurm為每個執(zhí)行的作業(yè)和作業(yè)步驟收集賬戶信息。它還支持將賬戶記錄直接寫入數(shù)據(jù)庫。出于測試目的,我們在Slurm數(shù)據(jù)庫中定義了一個集群“raspi-hpc-cluster”和一個賬戶“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é)點Slurm集群現(xiàn)在應該已經(jīng)準備好提交作業(yè)了。讓我們首先顯示有關(guān)可用節(jié)點當前狀態(tài)的信息:

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

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

$srun hostnamerpnode01

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

計算節(jié)點

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

1.安裝先決條件庫和頭文件。

2.從主節(jié)點將/etc/munge/munge.key復制到計算節(jié)點,將所有者更改為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文件復制到/etc/slurm/。

6.啟用并啟動slurmd.service。

測試

讓我們首先使用以下命令將新節(jié)點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é)點上使用以下命令運行主機名作業(yè):

$srun -w rpnode02 hostnamerpnode02

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

示例

集群信息

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

$ 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è)

讓我們在主目錄中創(chuàng)建一個簡單的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

你可以在默認批處理隊列中查看提交作業(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上運行,并具有1分鐘的時間限制。

總結(jié)

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

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

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

    關(guān)注

    19

    文章

    7663

    瀏覽量

    90828
  • 樹莓派
    +關(guān)注

    關(guān)注

    121

    文章

    2009

    瀏覽量

    107491
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

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

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

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

    120個樹莓集群

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

    樹莓Python編程指南分享

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

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

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

    樹莓4的計算模組終于上線!

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

    樹莓MCU來了!

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

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

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

    樹莓-搭建邊緣計算云平臺

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

    樹莓機器人船構(gòu)建

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

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

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

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

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

    樹莓4B的性能特點及應用

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

    樹莓4b和什么性能計算機相當

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

    Raspberry Pi樹莓新手指南

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

    解鎖樹莓集群:一步步打造你的超級計算陣列!

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