AmberTools19 – Windows10 – WSL

Jag är inte en frekvent windows användare och har inte varit på ett bra tag men jag försöker hålla mig uppdaterad på tekniska nyheter och därmed även vad som händer på windows sidan. Då jag tidigare prövat att installera AmberTools via Cygwin var jag nu intresserad av att se om det gick att kompilera AmberTools direkt via Windows Subsystem for Linux (WSL). Bland förra veckans nyheter var den planerade uppdateringen till WSL2, den nya versionen som skall innehålla en hel del förbättringar och en full Linux Kernel, samt en ”windows terminal”.

I vilket fall som helst, då jag inte är en Windows användare har jag testat denna installation i en virtuell maskin (VM) med windows 10 och WSL i denna maskin. Jag har inte hunnit gräva djupare i alternativa metoder eller förbättringar ännu och det finns saker som jag inte riktigt kan lista ut varför det fungerar eller om det finns ett bättre sätt att göra det men det fungerar i min virtual maskin. I vanlig ordning så testar du självklart allt detta på egen risk. Glöm inte att kommandon som presenteras får att ”side-scrolla” och du måste göra detta för att se hela kommandot, annars kan du missa viktiga saker.

Frågor riktar du till mail forumet för Amber och inte här på sidan då jag inte aktivt kontrollerar kommentarer.

Så det första vi behöver göra är att se till att det går att installera WSL. Starta Powershell (x86?) som administratör genom att söka på det i sökfältet vid startmenyn i nedre vänstra hörnet, högerklicka och välj ”…som administratör”. Jag vet inte om detta ”ärvs” mellan Powershell installationer så om man gör detta i 32 bitars versionen fungerar det även i 64 bitars versionen eller vice versa så tyvärr får du själv lista ut vilken version du behöver och kommer att använda här. Jag vet att min VM är 64-bitars och jag således kan sikta på Powershell x86 men jag körde kommandot i båda. Kommandot du vill köra här är följande:

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux

Leta sedan rätt på ”Microsoft Store” genom att söka efter detta i sökfältet du hittar nere till vänster i vyn. Härifrån skall du sedan söka reda på ”Ubuntu 18.04 LTS” (vilket är versionen jag testade, du är självklart fri att pröva vilken version du vill) och installera denna. Man behöver inte registrera ett konto men det är inte helt enkelt att komma undan eftersom det inte finns som ett alternativ. Genom att ”Avbryta” registreringen visar det sig att man kan installera appar från butiken utan att registrera ett konto då nedladdning och installation fortgår trots att man väljer att avbryta, mycket intuitivt.

Detta tar hand om en grundläggande Linux installation, för att kunna köra de program som använder ett GUI via X måste vi dock fortfarande installera en X-server på Windows sidan, jag valde VcXsrv eftersom det är gratis och verkar vara ett accepterat och stött alternativ av den breda allmänheten efter vissa undersökningar. Du hittar programvaran på denna adress:

https://sourceforge.net/projects/vcxsrv/

Så ladda ned och installera med standardinställningar rakt igenom (om du inte vet något som jag inte vet).

Nu är det dags för själva amber paketet, nu är det dags att köra igång Ubuntu så använd sökfältet igen och sparka igång Ubuntu. Din installation av ”Ubuntu” är just nu bara en terminal, en kommando tolk som likar Powershell eller CMD. Här ska vi nu köra lite kommandon. Först och främst skall vi installera de saker som Amber/AmberTools enligt manualen behöver för att gå att installera. En av de saker som listas där är C shell (CSH ) och där hade vi första problemet. Att installera CSH skall vara så enkelt som att köra:

sudo apt install csh

Men detta leder till ett felmeddelande:

E: Unable to locate package csh

Detta är lite konstigt eftersom detta paket finns och ska gå att installera utan problem i Ubuntu, jag jämförde sources.list mellan en Ubuntu 18.04 LTS maskin och den jag hittar i WSL Ubuntu 18.04 LTS versionen och de är, mer eller mindre, identiska. Lösningen på problemet som fungerade var att lägga till en rad med ytterligare källor för installation men vad jag inte förstår är att alla dessa är standard källor och dessutom redan finns i filen jag editerar!? I vilket fall, det man behöver göra för att installera CSH är att editera en fil, hur editerar man en fil? Tja då måste man vera hur man använder en editor som VIM, nano eller pico (eller något annat som finns installerat). Jag visar hur man gör med nano då detta gav mig minst problem med min tangentbordslayout.

sudo nano /etc/apt/sources.list

I den fil som dyker upp på skärmen skall du lägga till följande rad någonstans:

deb http://archive.ubuntu.com/ubuntu bionic main restricted universe multiverse

När detta är gjort måste man spara filen och lämna editorn, enklaste sättet att göra detta är ”control+x”, följt av att trycka på ”y” för ”ja” och sedan ”return/enter” tangenten för att verifiera. Nu skall det gå att installera CSH (även om det kommer generera en del klagomål) genom att köra följande kommando:

sudo apt-get update
sudo apt-get install csh

Efter att jag gjorde detta tog jag bort raden jag precis lade till i filen /etc/apt/sources.list eftersom jag inte vet vad det har för andra effekter på systemet.

Nu är det dags att installera resten av de paket som Amber/AmberTools behöver + ett extra paket ”bison” som behövdes och inte fanns förinstallerat. Detta dyker annars upp som ett klagomål under konfigureringen av installationen.

sudo apt-get install -y bc flex gfortran g++ xorg-dev zlib1g-dev libbz2-dev patch bison

Du har gissningsvis laddat ned AmberTools i windows där filen troligtvis ligger någon stans på din hårddisk, men du behöver flytta detta arkiv till WSL miljön för att kunna installera. Detta gör du enklast genom att kopiera arkivet:

cp /mnt/c/Users/[username]/[path]/[to]/[file]/AmberTools19.tar.gz ~/[path]/[to]/[install]/

Efter att ha lyckats kopiera filen till WSL miljön är det dags att extrahera, göra iordning för installationen och sedan installera och testa installationen:

tar xvfj AmberTools19.tar.bz2
export AMBERHOME=/home/[username]/amber18
cd $AMBERHOME
./configure gnu
sudo echo "test -f /home/[username]/amber18//amber.sh && source /home/[username]/amber18//amber.sh" >> ~/.bashrc
source ~/.bashrc
make install

Under förutsättning att allt gått bra så här långt skall du nu se något som liknar detta:

Installation of AmberTools19 serial is complete at Wed May 1 07:56:51 DST 2019.

Det betyder att det är dags att köra lite tester och se att allt har blivit installerat korrekt:

make test

Vilket borde ge något som liknar följande:

2435 file comparisons passed
0 file comparisons failed (0 ignored)
0 tests experienced errors
Test log file saved as /home/[username]/amber18//logs/test_at_serial/2019-05-01_07-59-49.log
No test diffs to save!

Detta tar hand om den seriella installationen, om du även vill kompilera den parallella versionen är det du behöver göra följande:

cd $AMBERHOME/AmberTools/src/
wget https://download.open-mpi.org/release/open-mpi/v4.0/openmpi-4.0.1.tar.gz
tar xvf openmpi-4.0.1.tar.gz
./configure_openmpi -np $(nproc) gnu
cd $AMBERHOME
./configure -mpi gnu
make install

Förutsatt att allt detta gick som det skulle ser du nu något som liknar detta:

Installation of AmberTools19 MPI is complete at Wed May 1 16:05:09 DST 2019.

Det är nu dags att desta installationen, vilket självklart inte gick för mig, vet inte om det beror på att jag sitter i en VM eller något annat men processen skall vara följande:

export DO_PARALLEL="mpirun -np $(nproc)"
make test

Det har visat sig att detta är kopplat till ett antal problem, någon inställning i systemet verkar inte fungera ihop med detta som det ska. Dessutom används tydligen TCP på något sätt vilket kan skapa problem ihop med Windows Defender Firewall. Jag är inte helt säker när det gäller detaljerna men jag har fått laborera och kommit fram till följande. För MPI behöver man konfigurera brandväggen i Windows att ignorera processer från Ubuntu, alternativt stänga av brandväggen. Dessutom behöver man temporärt stänga av eller omkonfigurera Windows Real Time Protection, vilket tydligen försöker scanna MPI processerna medans de kör. Båda dessa saker verkar sabotera testerna ordentligt.

Slutligen, den sista saken som genererar en massa onödiga varningar och som kan stängas av genom följande:

sudo echo 0 > /proc/sys/kernel/yama/ptrace_scope

Det här är inte en bestående förändring och måste göras varje gång systemet startas om. Om du inte kan editera filen ens som ”sudo”, då används den. Starta om och försök igen.

Inget av detta löser alla problem, när testerna kör trillar prestandan bort helt på vissa tester, från 60-100% ned till 5%. Vet inte vad som orsakar detta eller hur man skulle lösa detta. I nuläget vet jag inte ens om det är något som påverkar bara testerna eller faktiska körningar heller.

Om vi ignorerar detta så är sista steget är att kompilera för att få stöd för NetCDF för CPPTRAJ att hantera simuleringsfiler och annat:

cd $AMBERHOME
./configure -openmp gnu
make install

Du bör nu se något som liknar detta om allt gick bra:

Installation of AmberTools19 OpenMP is complete at Wed May 1 16:05:09 DST 2019.

För att testa att X-servern fungerar. Starta VcXserv i windows, kolla att du hittar den lilla ”x” loggan i aktivitetsvältet nere till höger i windows aktivitets rad och ”hoovra” över den, du bör se någon slags information och troligtvis något som liknar 0:0 vilket indikerar var servern lyssnar efter input. Om det är 0:0 så kör vidare enligt nedan, är det något annat du ser så modifiera kommandot nedan. Det du annars gör är att köra följande i WSL terminalen och du skall nu få ett fönster som poppar upp med xleap.

export DISPLAY=:0
xleap

Det är allt, nu skall det fungera. Än så länge är WSL en viritualisering som gör att man inte till fullo kan dra nytta av de resurser man har i sin hårdvara men detta skall troligtvis komma att ändras i och med WSL2. I övrigt är detta i alla fall vad som behövs för att komma igång och jobba med amber/ambertools i windows miljö utan cygwin.