Sign inSign up
beast2-beagle-cuda logo

ccervantess/beast2-beagle-cuda

By ccervantess

•Updated 5 months ago

BEAST2 y BEAGLE compilado con CUDA para ejecutar análisis filogenéticos en GPU.

Image
Data science
0

149

ccervantess/beast2-beagle-cuda repository overview

⁠BEAST2 + BEAGLE CUDA en Docker/Apptainer

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.

⁠Imagen probada en GPU

Esta imagen fue probada exitosamente en una GPU:

  • NVIDIA Tesla V100-PCIE-32GB

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 ...

⁠Versiones incluidas

La imagen contiene:

  • BEAST2 2.7.8
  • BEAST.base 2.7.8
  • BEAST.app 2.7.8
  • BEAGLE 4.0.1
  • CUDA Toolkit 12.4.1
  • OpenJDK 17

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.

⁠Versiones disponibles

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.

⁠Programas incluidos

La imagen incluye las herramientas principales de BEAST2:

  • beast
  • beauti
  • treeannotator
  • logcombiner
  • loganalyser
  • packagemanager

Tambié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.

⁠Uso con Docker

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

⁠Uso con Apptainer

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

⁠Opciones comunes de BEAGLE

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 en Slurm con Apptainer

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

⁠Notas importantes

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.

⁠Reproducibilidad

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.

⁠Mantenedor

Cristian Cervantes Unidad de Síntesis en Sistemática y Evolución Instituto de Biología Universidad Nacional Autónoma de México

⁠Licencia

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.

Tag summary

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