最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

Java和Matlab混合編程2,管理遠(yuǎn)程服務(wù)器任務(wù)提交

2023-03-19 17:02 作者:潘多拉茶壺  | 我要投稿

項(xiàng)目地址:https://github.com/CHanzyLazer/SmartSLURM

問(wèn)題描述

我們考慮這樣一個(gè)情景:你有成百上千個(gè)任務(wù)需要提交到遠(yuǎn)程服務(wù)器來(lái)進(jìn)行計(jì)算,并且其中有些任務(wù)需要其他的任務(wù)的結(jié)果來(lái)作為初始條件,此時(shí)你的工作流就是這樣:

%E6%89%B9%E9%87%8F%E7%94%9F%E6%88%90%E8%BE%93%E5%85%A5%E6%96%87%E4%BB%B6%5Clongrightarrow%20%0A%E4%B8%8A%E4%BC%A0%E8%BE%93%E5%85%A5%E6%96%87%E4%BB%B6%E5%88%B0%E6%9C%8D%E5%8A%A1%E5%99%A8%5Clongrightarrow%20%0A%E6%8F%90%E4%BA%A4%E4%BB%BB%E5%8A%A1%5Clongrightarrow%20%5C%5C%0A%E7%AD%89%E5%BE%85%E4%BB%BB%E5%8A%A1%E6%89%A7%E8%A1%8C%E5%AE%8C%E6%88%90%5Clongrightarrow%20%0A%E4%BB%8E%E6%9C%8D%E5%8A%A1%E5%99%A8%E4%B8%8B%E8%BD%BD%E8%BE%93%E5%87%BA%E6%96%87%E4%BB%B6%5Clongrightarrow%20%5C%5C%0A%E5%AF%B9%E8%BE%93%E5%87%BA%E6%96%87%E4%BB%B6%E6%95%B0%E6%8D%AE%E5%A4%84%E7%90%86%5Clongrightarrow%20%0A%E6%A0%B9%E6%8D%AE%E7%BB%93%E6%9E%9C%E7%94%9F%E6%88%90%E4%B8%8B%E4%B8%80%E6%89%B9%E8%BE%93%E5%85%A5%E6%96%87%E4%BB%B6%5Clongrightarrow%20%5Ccdots%20

對(duì)于這種需求,原始的直接ssh到遠(yuǎn)程服務(wù)器,然后把這些任務(wù)寫(xiě)到一個(gè)腳本中提交就會(huì)非常困難:

  • 這種超長(zhǎng)的工作流應(yīng)該使用matlab或者jupyter可以分段執(zhí)行腳本的功能,實(shí)時(shí)進(jìn)行調(diào)試,全部放在服務(wù)端則難以實(shí)現(xiàn)這個(gè)功能(現(xiàn)在一般的遠(yuǎn)程服務(wù)器也不支持jupyter,matlab沒(méi)有g(shù)ui的話也就沒(méi)什么意義,配置起來(lái)難度也不低)

  • 數(shù)據(jù)處理部分會(huì)被迫在遠(yuǎn)程服務(wù)器完成,難度很高并且非常受限(如果沒(méi)有實(shí)現(xiàn)直接運(yùn)行遠(yuǎn)程服務(wù)器的jupyter,那么也只會(huì)是在本地調(diào)試完成后上傳到服務(wù)器來(lái)運(yùn)行,那么為何不直接全都在本地執(zhí)行?)

  • 不能跨服務(wù)器提交任務(wù)

鑒于本人更傾向于使用matlab而不是jupyter,因此我就沒(méi)去研究怎么直接在本地運(yùn)行遠(yuǎn)程服務(wù)器的jupyter了,轉(zhuǎn)而將項(xiàng)目全都放在本地,而遠(yuǎn)程服務(wù)器只負(fù)責(zé)計(jì)算部分,并且這個(gè)方法也可以在jupyter中使用。

我之前的一次專欄上有給出一個(gè)工具可以使用java的線程池來(lái)并行運(yùn)行指令,這樣就可以配合ssh免密登錄,使用類似于這樣的指令:

來(lái)直接向遠(yuǎn)程服務(wù)器執(zhí)行指令,而線程池可以并行的執(zhí)行這些指令,從而可以實(shí)現(xiàn)并行提交任務(wù)并且等待任務(wù)完成的功能。

在我的實(shí)際使用后,這樣也會(huì)存在一些問(wèn)題:

  • 上傳下載文件使用scp指令會(huì)很慢,需要使用linux中的rsync指令,可以比較方便的實(shí)現(xiàn)整個(gè)文件夾的同步,并且支持并發(fā)以及壓縮傳輸,但是在windows上則需要安裝wsl或者使用第三方軟件,門(mén)檻就會(huì)比較高。

  • java的線程池提交的指令需要使用長(zhǎng)期掛起直到指令執(zhí)行完成的形式,但是如果任務(wù)執(zhí)行的時(shí)間過(guò)長(zhǎng),可能ssh連接會(huì)中斷,這樣掛起就中斷了,從而讓腳本出現(xiàn)意料之外的結(jié)果。并且如果手動(dòng)取消這些任務(wù),這些任務(wù)實(shí)際還會(huì)繼續(xù)在遠(yuǎn)程服務(wù)器運(yùn)行。

  • 每個(gè)部分都是割裂開(kāi)的,沒(méi)有形成整體,每個(gè)操作都要重新建立一次ssh連接,效率很低并且使用起來(lái)也很不方便。

最近發(fā)現(xiàn)java中有第三方庫(kù)jsch(http://www.jcraft.com/jsch/)可以直接創(chuàng)建一個(gè)ssh連接,然后在java中進(jìn)行操作。當(dāng)然直接使用起來(lái)很不方便,并且有很多進(jìn)階的功能也沒(méi)有實(shí)現(xiàn),因此我這里對(duì)這個(gè)庫(kù)進(jìn)行了封裝,提供了一些進(jìn)階的功能方便使用,并且對(duì)支持SLURM系統(tǒng)提交任務(wù)的服務(wù)器做了專門(mén)的適配。

使用方法

首先需要為了使用方便考慮,這個(gè)軟件不需要依賴任何第三方庫(kù),直接下載放入項(xiàng)目就可以使用。實(shí)現(xiàn)了基本的功能從而不再需要裝wsl或者免密登錄等麻煩的操作。

首先從項(xiàng)目的release(https://github.com/CHanzyLazer/SmartSLURM/releases)中下載最新的軟件,其中SmartSLURM-with-demo.zip包含了使用例子,而smartSlurm.jar則是軟件本體。

對(duì)于matlab,由于matlab原生支持java,因此只需要導(dǎo)入軟件包即可(認(rèn)為jar包位于include目錄下):

使用完成后可以移除java類的路徑:

由于使用的java編寫(xiě),python中同樣也能使用,不過(guò)需要安裝第三方庫(kù),這里使用py4j(https://www.py4j.org/):

使用完成后記得關(guān)閉GATEWAY:

而后將ServerSSH以及ServerSLURM當(dāng)作matlab或者python中內(nèi)部的類使用即可。

功能介紹

此軟件提供了兩種類,ServerSSH主要提供了一般的對(duì)遠(yuǎn)程ssh服務(wù)器的操作,包括提交指令,上傳下載文件夾,清空遠(yuǎn)程服務(wù)器的文件夾等操作;ServerSLURM則對(duì)SLURM的服務(wù)器提供了專門(mén)的適配,包括提交sbatch任務(wù),通過(guò)squeue來(lái)獲取任務(wù)執(zhí)行狀況,使用scancel來(lái)取消任務(wù)等。

這里只提供一些基本的功能介紹,詳細(xì)的介紹可以參看項(xiàng)目(https://github.com/CHanzyLazer/SmartSLURM)。

首先都使用靜態(tài)方法get來(lái)獲得類的實(shí)例,同時(shí)會(huì)進(jìn)行ssh連接:

為了后續(xù)的操作保持簡(jiǎn)潔,這里認(rèn)為你的使用場(chǎng)景就是類似于最開(kāi)始提到的那樣,項(xiàng)目存在本地,而遠(yuǎn)程服務(wù)器則存放項(xiàng)目的鏡像,因此這里需要指定本地的項(xiàng)目路徑以及你希望的存放在遠(yuǎn)程服務(wù)器的項(xiàng)目路徑。

其中密碼是可選的,如果不填則會(huì)使用密鑰登錄。

ServerSLURM則需要多一個(gè)參數(shù)(4),用來(lái)指定同時(shí)在SLURM上運(yùn)行的最大作業(yè)數(shù)目(如果達(dá)到了則后續(xù)提交的任務(wù)會(huì)排隊(duì)執(zhí)行)。

ServerSLURM提供了ssh()接口來(lái)獲取內(nèi)部的ServerSSH,從而執(zhí)行ssh的基本操作,對(duì)于上述工作流,則只需要進(jìn)行如下的操作:

可以看到本軟件支持并發(fā)的文件傳輸并且也支持?jǐn)?shù)據(jù)壓縮,因此實(shí)際速度不會(huì)慢于rsync指令。

下載

從 github 項(xiàng)目中下載:https://github.com/CHanzyLazer/SmartSLURM

或者直接下載:https://github.com/CHanzyLazer/SmartSLURM/releases/download/v1.2/smartSlurm.jar


Java和Matlab混合編程2,管理遠(yuǎn)程服務(wù)器任務(wù)提交的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
科尔| 甘谷县| 扬州市| 普定县| 会泽县| 珲春市| 江孜县| 黄梅县| 昭苏县| 新蔡县| 绵阳市| 达州市| 广河县| 军事| 德化县| 凤台县| 都安| 若羌县| 博客| 清水县| 新丰县| 乌拉特中旗| 拜城县| 娄烦县| 澳门| 张家口市| 上虞市| 淮北市| 昌宁县| 北辰区| 小金县| 江达县| 滁州市| 安丘市| 黄骅市| 吐鲁番市| 东阳市| 寿宁县| 福鼎市| 西乌| 克拉玛依市|