Hyppää sisältöön

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:

module load bio-apps/v202603
module load mhm2/2.2.2.0-20260904

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:

mhm2.py -p reads_1.fastq,reads_2.fastq -o assembly_result

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:

mhm2.py -h

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:

sbatch mhm2_job.sh

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.

Tuki

CSC:n Service Desk

Lisätietoja

Onko tämä sivu hyödyllinen?
Kiitos palautteestasi!
Kiitos! Arvostamme palautettasi.

Kerro meille miten voisimme parantaa tätä sivua ottamalla meihin yhteyttä .