BEAST2 y BEAGLE compilado con CUDA para ejecutar análisis filogenéticos en GPU.
149
Este repositorio contiene imágenes de contenedor para BEAST2 junto con BEAGLE, compilado con soporte CUDA, para ejecutar análisis filogenéticos bayesianos aprovechando aceleración por GPU NVIDIA.
BEAST2 permite realizar inferencia filogenética bayesiana mediante MCMC, incluyendo análisis con relojes moleculares, estimación de árboles fechados, modelos de sustitución molecular y otros modelos evolutivos.
BEAGLE es una biblioteca de alto rendimiento que acelera el cálculo de verosimilitudes filogenéticas y permite utilizar procesadores paralelos, incluyendo GPUs NVIDIA.
Las imágenes están pensadas para facilitar el uso de BEAST2 + BEAGLE en servidores, estaciones de trabajo y ambientes HPC mediante Docker o Apptainer.
Esta imagen fue probada exitosamente en una GPU:
La prueba confirmó que BEAST2 detecta BEAGLE y que BEAGLE reconoce la GPU como recurso CUDA:
--- BEAGLE RESOURCES ---
0 : CPU (x86_64)
1 : Tesla V100-PCIE-32GB
Flags: ... PROCESSOR_GPU FRAMEWORK_CUDA ...
La imagen contiene:
BEAGLE fue compilado con soporte CUDA y arquitectura:
sm_70
Esta arquitectura corresponde a GPUs NVIDIA Volta, como la Tesla V100.
Nota: la instalación base proviene del paquete completo de BEAST2 2.7.7, pero los paquetes internos BEAST.base y BEAST.app fueron reemplazados por la versión 2.7.8.
Etiqueta principal disponible:
ccervantess/beast2-beagle-cuda:2.7.8-gpu-v100
Para análisis reproducibles se recomienda usar siempre etiquetas específicas y evitar depender exclusivamente de latest.
La imagen incluye las herramientas principales de BEAST2:
beastbeautitreeannotatorlogcombinerloganalyserpackagemanagerTambién incluye un script de diagnóstico:
test_beast2_beagle_gpu
Este script permite verificar rápidamente si la imagen detecta NVIDIA-SMI, BEAST2, BEAGLE y los recursos GPU disponibles.
Verificar la versión de BEAST2:
docker run --rm \
ccervantess/beast2-beagle-cuda:2.7.8-gpu-v100 \
-version
Verificar que BEAST2 detecta BEAGLE y la GPU:
docker run --rm --gpus all \
ccervantess/beast2-beagle-cuda:2.7.8-gpu-v100 \
-beagle_info
Ejecutar el diagnóstico completo:
docker run --rm --gpus all \
--entrypoint test_beast2_beagle_gpu \
ccervantess/beast2-beagle-cuda:2.7.8-gpu-v100
Ejecutar un análisis con un archivo XML de BEAST2:
docker run --rm --gpus all \
-v "$PWD":/data \
-w /data \
ccervantess/beast2-beagle-cuda:2.7.8-gpu-v100 \
-beagle \
-beagle_GPU \
-beagle_order 1 \
-beagle_double \
-threads 4 \
analisis.xml
Descargar la imagen desde Docker Hub:
apptainer pull beast2_beagle_cuda12_v100.sif \
docker://ccervantess/beast2-beagle-cuda:2.7.8-gpu-v100
Verificar la versión de BEAST2:
apptainer exec beast2_beagle_cuda12_v100.sif \
beast -version
Verificar que BEAST2 detecta BEAGLE:
apptainer exec --nv beast2_beagle_cuda12_v100.sif \
beast -beagle_info
Ejecutar el diagnóstico completo:
apptainer exec --nv beast2_beagle_cuda12_v100.sif \
test_beast2_beagle_gpu
Ejecutar un análisis con GPU:
apptainer exec --nv beast2_beagle_cuda12_v100.sif \
beast \
-beagle \
-beagle_GPU \
-beagle_order 1 \
-beagle_double \
-threads 4 \
analisis.xml
Usar BEAGLE:
-beagle
Usar GPU:
-beagle_GPU
Indicar el recurso GPU a usar:
-beagle_order 1
Usar precisión doble:
-beagle_double
Usar precisión simple:
-beagle_single
Mostrar los recursos BEAGLE disponibles:
-beagle_info
En muchos sistemas, el recurso 0 corresponde a CPU y el recurso 1 corresponde a la primera GPU detectada por BEAGLE.
Ejemplo de script para ejecutar BEAST2 + BEAGLE en una GPU NVIDIA V100:
#!/bin/bash
#SBATCH --job-name=beast2_v100
#SBATCH --partition=gpu_V100
#SBATCH --gres=gpu:1
#SBATCH --cpus-per-task=4
#SBATCH --mem=16G
#SBATCH --time=5-00:00:00
#SBATCH --output=beast2_v100_%j.out
#SBATCH --error=beast2_v100_%j.err
SIF=$HOME/beast2_beagle_cuda12_v100.sif
XML=$1
echo "Nodo:"
hostname
echo "GPU asignada:"
nvidia-smi
echo "Versión de BEAST2:"
apptainer exec --nv "$SIF" beast -version
echo "Recursos BEAGLE:"
apptainer exec --nv "$SIF" beast -beagle_info
echo "Iniciando BEAST2 con BEAGLE GPU..."
apptainer exec --nv "$SIF" \
beast \
-beagle \
-beagle_GPU \
-beagle_order 1 \
-beagle_double \
-threads "$SLURM_CPUS_PER_TASK" \
"$XML"
Enviar el trabajo:
sbatch run_beast2_gpu.slurm analisis.xml
Para usar GPU con Apptainer es necesario ejecutar el contenedor con:
--nv
Sin esta opción, el contenedor puede ejecutarse, pero no tendrá acceso a las GPUs NVIDIA del sistema.
Para usar GPU con Docker es necesario contar con NVIDIA Container Toolkit y ejecutar la imagen con:
--gpus all
Aunque el sistema anfitrión muestre una versión de CUDA más reciente mediante nvidia-smi, la imagen utiliza CUDA Toolkit 12.4.1 internamente. Esto permite mantener un ambiente controlado y reproducible para BEAST2 + BEAGLE.
Para análisis reproducibles se recomienda indicar explícitamente la etiqueta usada, por ejemplo:
ccervantess/beast2-beagle-cuda:2.7.8-gpu-v100
La etiqueta latest, si existe, puede cambiar con el tiempo.
Cristian Cervantes Unidad de Síntesis en Sistemática y Evolución Instituto de Biología Universidad Nacional Autónoma de México
Este contenedor integra software de terceros. Cada programa conserva su propia licencia. Se recomienda revisar las licencias individuales de BEAST2, BEAGLE, CUDA, OpenJDK y las bibliotecas incluidas antes de su redistribución o uso en producción.
Content type
Image
Digest
sha256:604103526…
Size
4.3 GB
Last updated
5 months ago
docker pull ccervantess/beast2-beagle-cuda:2.7.8-gpu-v100