-
ParaView
ParaView
ParaView on avoimen lähdekoodin tehokas ohjelmisto tieteelliseen visualisointiin. Taustalla se käyttää VTK-kirjastoa Python-kääreellä. Suosittelemme HPC:n selainkäyttöliittymän etätyöpöytiä interaktiiviseen käyttöön.
ParaView'n suorittaminen GPU-kiihdytetyllä grafiikalla Puhdissa ja LUMIssa
Voit nyt ottaa käyttöön myös interaktiivisen visualisoinnin GPU-kiihdytyksellä paremman
suorituskyvyn saavuttamiseksi. Valitse tässä tapauksessa Puhdin selainkäyttöliittymässä Accelerated visualization vaihtoehdon Desktop
sijaan. LUMIssa valitse Desktop-sovellus ja lumid-osio
(lisätietoja).
ParaView on suunniteltu rinnakkaisten tehtävien suorittamiseen, ja se koostuu yhdestä asiakkaasta ja yhdestä tai useammasta palvelimesta (pvserver). ParaView'ta voidaan käyttää monella tavalla erilaisiin tarpeisiin.
Lisenssi
ParaView käyttää sallivaa BSD-lisenssiä, joka mahdollistaa ohjelmiston rojaltivapaan käytön useimpiin tarkoituksiin mahdollisimman laajalle käyttäjäkunnalle, mukaan lukien kaupalliset organisaatiot.
Saatavuus
- Puhti: 5.10.1
- Mahti: 5.10.1
- LUMI: 5.8.0
Käyttö
Itsenäinen tila
Yksinkertaisin tapa käyttää ParaView'ta on suorittaa se itsenäisessä tilassa. Tämä tila riittää perusvisualisointitehtäviin ja on hyvä lähtökohta myös monimutkaisempiin tehtäviin.
Itsenäinen ParaView ei tarvitse pvserver-varausta. Huomaa, että ParaView'ta ei pidä suorittaa kirjautumissolmulla. Voit käyttää komentoa sinteractive -i varataksesi yhden suorittimen ja enintään 16 Gt muistia interaktiivista istuntoasi varten. Kun resurssit vapautuvat, istunto ohjataan laskentasolmulle. Lataa moduuli ja käynnistä ParaView:
Jos tarvitset enemmän resursseja, käytä srun-komentoa ja anna istunnon parametrit yhdellä rivillä. Seuraava komento varaa 32 Gt muistia yhdelle suorittimelle yhdeksi tunniksi:
Kun istunto on ohjattu laskentasolmulle, lataa moduuli ja käynnistä ParaView kuten yllä olevassa esimerkissä.
Jos mallissasi on monimutkainen geometria, vuorovaikutus hidastuu ja näytön päivitysten viive tulee havaittavaksi. ParaView'ssa on valintaruutu OSPRay-renderöijän käyttöön nopeampia näytön uudelleenpiirtoja varten. Huomaa, että vaihtaminen oletusrenderöintitilan ja OSPRay-renderöintitilan välillä voi olla hidasta. Jopa yhtä suoritinta käytettäessä OSPRay-renderöinti on paljon nopeampaa.
OSPRay pystyy käyttämään useampaa kuin yhtä suoritinta säikeinä näytön päivitysten edelleen nopeuttamiseksi. Säikeet varataan parametrilla --cpus-per-task. Seuraava esimerkki varaa 5 säiettä renderöintiä varten ja käyttää yhteensä 32 Gt muistia suorittimien kesken jaettuna. Huomaa, että useimmat muut ParaView'n toiminnot eivät ole säikeistettyjä, joten ne käyttävät edelleen vain yhtä suoritinta.
srun --ntasks=1 --cpus-per-task=5 --partition=small --time=01:00:00 --mem=32G --account=<project> --x11=first --pty bash
Kuten aiemmin näytettiin, kun istunto on ohjattu laskentasolmulle, lataa moduuli ja käynnistä ParaView.
Rinnakkaistila - asiakas käyttää useita palvelimia (pvserver) ja säikeitä
Vaativia töitä varten ParaView voidaan suorittaa rinnakkaistilassa: yksi asiakas ja monta pvserver-palvelinta, joista kukin toimii erillisillä suorittimilla. Asiakas yhdistää yhteen pvserver-palvelimeen, joka kommunikoi muiden pvserver-palvelimien kanssa.
Huomaa, että jos suurin osa työstä tehdään vain yhdellä pvserver-palvelimella, rinnakkaisen asetelman käyttö voi itse asiassa hidastaa ParaView'ta, koska eri suorittimilta tulevan datan jäsentämiseen kuluu ylimääräistä aikaa. Voit tarkistaa, kuinka paljon kutakin pvserver-palvelinta käytetään, avaamalla ParaView'n Memory Inspector -ikkunan (tiedostovalikko: View/Memory Inspector). ParaView'n D3-suodatinta voidaan käyttää työn jakamiseen tasaisemmin ytimien välillä.
Alla oleva esimerkkiskripti para5101-multi.sh käynnistää useita pvserver-palvelimia ja yhden asiakkaan (front-end) sekä yhdistää ne. Kun olet kopioinut skriptin, tarkista, että sillä on tarvittavat suoritusoikeudet - käytä komentoa chmod u+x niiden myöntämiseen. Skriptiä ei tarvitse muokata. Resurssit tulee varata salloc-komennolla. Varaus koskee asiakasta ja pvserver-palvelimia yhdessä. --ntasks on pvserver-palvelimien määrä plus yksi asiakas, ja --cpus-per-task on kunkin näistä tehtävistä käyttämien säikeiden määrä, joten varattujen suorittimien määrä on --ntasks * cpus-per-task. --mem on kaikkien yhteensä käyttämä muisti. Skripti varaa asiakkaalle yhden gigatavun muistia, ja loppu jaetaan pvserver-palvelimien kesken.
Alla oleva salloc-esimerkki varaa resurssit yhdelle asiakkaalle ja yhdeksälle pvserver-palvelimelle, joista kullakin on kaksi säiettä, joten yhteensä varataan 20 suoritinta. Pvserver-palvelimille varataan yhteensä yhdeksän gigatavua muistia ja asiakkaalle yksi gigatavu. ParaView'n OSPRay-renderöijä käyttää säikeitä, kun taas useimmat muut ParaView'n toiminnot hyötyvät enemmän pvserver-palvelimista. Huomaa, että kaikki nämä salloc-parametrit on annettava eksplisiittisesti, muuten skripti para581-multi.sh ei toimi
salloc --nodes=1 --ntasks=10 --cpus-per-task=2 --mem=10G --time=01:00:00 --partition=small --account=<project> para5101-multi.sh
Kun asiakas yhdistää palvelimiin, saatat nähdä muutamia varoituksia (connect failed, retrying), jotka voi jättää huomiotta. Jos viimeinen viesti kuitenkin oli Creating default builtin connection, yhteyden muodostaminen lopulta epäonnistui ja asiakas toimii ilman pvserver-palvelimia. Jos näin käy, tarkista, että olet sisällyttänyt kaikki tarvittavat työn parametrit salloc-komentoosi.
Esimerkkiskripti
#!/bin/bash
######################################################
### This script starts paraview servers and client ###
### and connects them using a unique random port. ###
### Run the script via salloc. All job parameters ###
### are copied from the salloc command, no editing ###
### of this script is needed. ###
######################################################
export SLURM_EXACT=1
export XDG_RUNTIME_DIR=$HOME
export KNOB_MAX_WORKER_THREADS=$SLURM_CPUS_PER_TASK
export LP_NUM_THREADS=$SLURM_CPUS_PER_TASK
MACHINEFILE="nodes.${SLURM_JOB_ID}"
scontrol show hostnames ${SLURM_JOB_NODELIST} > $MACHINEFILE
FIRSTNODE=$(head -n 1 ${MACHINEFILE})
MYPORT=`comm -23 <(seq 22200 22299 | sort) <(ss -Htan | awk '{print $4}' | cut -d':' -f2 | sort -u) | shuf | head -n 1`
SERVER_NTASKS=$(( ${SLURM_NTASKS}-1 ))
SERVER_MEMORY=$(( ${SLURM_MEM_PER_NODE}-1000 ))
module purge
module load paraview/5.10.1-pvserverosmesa
srun --nodes=1 --ntasks=$SERVER_NTASKS --cpus-per-task=$SLURM_CPUS_PER_TASK --mem=$SERVER_MEMORY pvserver --server-port=$MYPORT &
srun --nodes=1 --ntasks=1 --cpus-per-task=$SLURM_CPUS_PER_TASK --mem=1000 --x11=first /appl/opt/vis/paraview/paraview-5.10.1-mesa-client/bin/paraview --server-url=cs://$FIRSTNODE.bullx:$MYPORT &
wait