-
MetaHipMer2 (MHM2)
MetaHipMer2 (MHM2)
MetaHipMer2 on UPC++:lla ja CUDA:lla kirjoitettu de novo -metagenomin lyhytlukukokoonpanotyökalu. Se toimii tehokkaasti yksittäisillä palvelimilla ja monisolmuisilla supertietokoneilla, joissa se voi skaalautua teratavun kokoisten metagenomien yhteiskokoonpanoon. Roihussa se on tarjolla GPU-kiihdytettynä versiona GH200-GPU-solmuille.
Lisenssi
MetaHipMer2 on vapaa ja avoimen lähdekoodin ohjelmisto Berkeley Labin muokatulla BSD 3-Clause -lisenssillä.
Saatavuus
- Roihu-GPU: 2.2.2.0-20260904,
bio-apps-moduulin kautta (vain GPU-solmut).
MHM2 toimii Roihun GPU- (GH200) solmuilla. Kirjaudu osoitteeseen roihu-gpu.csc.fi ja lataa moduulit siellä, jotta saat käyttöösi GPU-version.
Käyttö
MHM2 on osa Roihun bio-apps -kokoelmaa. Lataa ensin bio-apps-moduulipuu ja sitten MHM2-moduuli:
Kokoonpanot käynnistetään mhm2.py-ajurilla, joka käynnistää rinnakkaiset
(UPC++)-prosessit puolestasi — älä äläkä lisää sen eteen srun-komentoa. Perusajo
paripäisillä luvuilla:
Käytä valitsinta -p/--paired-reads paritetuille luvuille, jotka on jaettu erillisiin R1/R2-tiedostoihin (tiedostot erotetaan pilkulla), tai valitsinta -r/--reads lomitetuille paritetuille luvuille yhdessä tiedostossa.
Kootut kontigit kirjoitetaan tiedostoon assembly_result/final_assembly.fasta. Saat
täydet tiedot valinnoista komennolla:
Metagenomidatan kokoaminen vaatii paljon resursseja, joten aja MHM2 eräajona GPU-solmulla.
MHM2 vaatii GPU-solmun
MHM2 on GPU-versio ja linkittyy suoraan CUDA-ajurikirjastoon, joten se
toimii vain Roihun GPU-solmuilla. Kirjautumissolmulla se epäonnistuu
käynnistyksessä virheeseen
error while loading shared libraries: libcuda.so.1, koska kirjautumissolmuilla ei ole GPU:ita.
Esimerkkieräajokomentosarja
MHM2 on prosessirinnakkainen (UPC++): mhm2.py käynnistää yhden prosessin jokaista Slurm-tehtävää kohti ja johtaa niiden määrän valitsimesta --ntasks-per-node. Varaa yksi tehtävä jokaista käytettävää CPU-ydintä kohti käyttäen valitsinta --cpus-per-task=1. Alla oleva esimerkki käyttää yhtä GPU:ta ja 72 prosessia:
#!/bin/bash
#SBATCH --job-name=mhm2
#SBATCH --account=<project>
#SBATCH --output=mhm2_out_%j.txt
#SBATCH --error=mhm2_err_%j.txt
#SBATCH --partition=gpumedium
#SBATCH --time=12:00:00
#SBATCH --nodes=1
#SBATCH --ntasks-per-node=72 --cpus-per-task=1
#SBATCH --gres=gpu:gh200:1
module load bio-apps/v202603
module load mhm2/2.2.2.0-20260904
mhm2.py -p reads_1.fastq,reads_2.fastq -o assembly_result
Korvaa <project> omalla CSC-projektillasi (esimerkiksi project_2001234). Voit
tarkistaa CSC-projektisi komennolla csc-projects. Lähetä työ komennolla sbatch:
Jos varaat vain yhden tehtävän (oletus), MHM2 toimii yhdellä ytimellä ja antaa varoituksen
Detected slurm job restricts cores to 1 because of SLURM_TASKS_PER_NODE=1 — aseta
--ntasks-per-node kuten yllä, jotta vältät tämän. Jos haluat käyttää koko GPU-solmua, pyydä kaikki
neljä GPU:ta ja 288 tehtävää (--ntasks-per-node=288 --gres=gpu:gh200:4); MHM2 jakaa
solmun GPU:t prosessiensa kesken. Koska se kommunikoi InfiniBandin kautta, se voi myös tehdä yhteiskokoonpanon usean solmun yli — kasvata tällöin --nodes-arvoa vastaavasti ja vaihda myös gpularge-osioon, joka tukee usean solmun pyyntöjä.
Sovita prosessien määrä datan kokoon
MHM2:n rinnakkaisen käynnistyksen, kommunikoinnin ja GPU-jakamisen yleiskustannukset korostuvat
pienillä syötteillä, joten suuri määrä prosesseja voi olla hitaampi kuin muutama. Pienille tai
testiaineistoille kannattaa pyytää vain muutama ydin (esimerkiksi
--ntasks-per-node=4 --cpus-per-task=1 lyhytkestoisessa gputest-osiossa). Käytä kaikkia 72 ydintä GPU:ta kohti tai koko solmua vain suurille metagenomeille.
Katso lisätietoja eräajoista sivulta eräajokomentosarjan luominen Roihulle sekä käytettävissä olevista GPU-resursseista sivulta GPU-osiot.