連接超算運行python3時遇到的問題及解決辦法
最近需要在超算上跑python3.6的程序,本來想在我筆記本上的windows系統新建虛擬環境,然后拷貝到超算上就好了,但是在windows系統新建的虛擬環境無法在超算上的linux系統激活,所以我只能用VMware新建一個linux虛擬機,然后在虛擬機上創建python3.6的虛擬環境,將依賴包裝好后,在放到超算上運行。但還是遇到很多問題。
1.超算上沒有python3.6
關於這一點可以使用module avail python查看系統有哪些python版本,然后找一個python3.6的版本假如說時python3.6.4/gcc-......。然后module load python3.6.4/gcc....加載,就可以使用python3了,這些是在登錄節點做的,我試過在登陸節點加載python3后在計算節點運行python3發現沒有這個指令,這個問題還沒有搞明白,不過通過yhbatch還是可以在計算節點運行我的程序,蠻神奇。
2.進入/退出計算節點
使用yhalloc
申請一個計算節點,然后yhq
展示計算節點信息,最后有一個cn####(####是數字)使用
ssh cn####
即可進入計算節點,在使用exit可以退出計算節點
3.虛擬環境里的絕對路徑
在python3使用virtualenv新建虛擬環境后虛擬環境中的activate文件內有一個變量的命名是絕對路徑的,這樣導致我們在另一個系統(比如這個超算)就算激活了虛擬環境,也無法使用虛擬環境中的python3,所以需要改變這個絕對路徑,pip3的第一行同樣有這個絕對路徑,如果想在另一個系統通過pip3查看安裝的包也要把pip3里的絕對路徑改掉,改成新系統的絕對路徑。PS:顯示絕對路徑命令為pwd
4.虛擬環境中的python運行不了
弄過虛擬環境,也改了絕對路徑后,運行不了虛擬環境中的python3,報錯version GLIBC_2.25 not found。本來想安裝這個GLIBC_2.25的但是因為權限問題安裝不了,最終放棄。想了另一個辦法,因為這個問題是我們虛擬機內的python3需要的這個GLIBC版本在超算上沒有,但超算上的python3是可以運行的,所以我用超算上的python3新建一個虛擬環境后,將這個新建虛擬環境中的python3拷貝到我的虛擬環境並覆蓋掉原來的python3,這樣我虛擬環境中的python3就變成了超算上的python3,就不會有這個問題了。
5.使用yhbatch運行
最后一定要使用yhbatch
運行,因為無論是進入節點運行程序,還是用yhrun
運行程序,當退出連接后,這個程序就會退出,所以一定要使用yhbatch
運行,這樣才不會在退出后結束程序,yhbatch內的任務運行后節點也會自動退出,不必擔心機時浪費。
腳本里的yhrun
一定要有-n -N參數,即使為1。
運行的.sh文件要帶上后綴.sh且提前chmod +x
添加運行權限。
在斷開連接重連后超算上的python3環境就要重新module load了