BigDFT ACELERADO POR GPU

Empieza hoy mismo con esta Guía para aplicaciones preparadas para GPU.

BigDFT

BigDFT es un código de estructura electrónica de paralelismo masivo de la teoría del funcional de la densidad (DFT) que usa una conjunto base de ondículas con la capacidad de usar un método de escalado lineal. Las ondículas forman un conjunto base de espacio real distribuido en una malla adaptable (dos niveles de resolución en la implementación). Se usan los pseudopotenciales de Goedecker-Teter-Hutter (GTH) o de Hartwigsen-Goedecker-Hutter (HGH) para eliminar los electrones del núcleo.

BigDFT está disponible en la versión 5.5 y posteriores de ABINIT, pero también se puede descargar por separado desde su sitio web. El solucionador de Poisson basado en el formalismo de la función de Green, sistemas periódicos, superficies y sistemas aislados puede simularse con condiciones límite explícitas.
El solucionador de Poisson está integrado en ABINIT, Octopus y CP2K, pero también se puede descargar y usar por separado. El código, los tutoriales y la documentación están disponibles en BigDFT.

Instalación

Puedes descargar e instalar BigDFT en una reconstrucción completa, o bien puedes descargar y ejecutar el contenedor de BigDFT desde NVIDIA GPU Cloud.

Instalar aplicaciones en un entorno de computación de alto rendimiento (HPC) puede ser complicado. Los contenedores te permiten ejecutar la aplicación sin tener que instalarla en el sistema, de forma que resulta sencillo implementar la versión más reciente a la vez que se optimiza el rendimiento.

Ejecutar un contenedor de BigDFT es muy simple y se puede configurar en unos minutos.

Ejecución de trabajos

Existen cuatro opciones para ejecutar el contenedor de BigDFT cuando lo extraigas de NGC.

  • Ejecutarlo directamente desde el comando nvidia-docker run
  • Ejecutarlo de forma interactiva en el contenedor
  • Ejecutarlo con Jupyter Notebook desde un navegador web
  • Ejecutarlo con MPI/OpenMP/GPU

1. Ejecutar BigDFT desde la línea de comandos

Para ejecutar el contenedor de BigDFT desde la interfaz de la línea de comandos (CLI), necesitas archivos de entrada en el directorio actual del sistema host. Después, puedes escribir el siguiente comando para ejecutar BigDFT y permitir que el directorio de trabajo actual sea accesible como “/results” en el contenedor:

nvidia-docker run -it --rm -v $(pwd):/results -w /results

nvcr.io/hpc/bigdft:cuda9-ubuntu1604-mvapich2_gdr-mkl bigdft

2. Ejecuta BigDFT de forma interactiva

En este ejemplo, vamos a ejecutar BigDFT de forma interactiva y a reproducir una prueba de FeHyb incluida en el contenedor.

Para ejecutar el contenedor de forma interactiva, escribe este comando para iniciar el contenedor y montar el directorio actual en /results, con el fin de que esté disponible dentro del propio contenedor (consulta las opciones de -v en el siguiente comando para configurar la asignación del directorio de datos local al directorio dentro del contenedor).

nvidia-docker run -it --rm -v $(pwd):/results

nvcr.io/hpc/bigdft:cuda9-ubuntu1604-mvapich2_gdr-mkl bash

Cuando se inicie el contenedor, te encontrarás en el directorio raíz (“/”). Después, puedes cambiar a /docker/FeHyb/GPU, donde se encuentran los archivos de entrada (input.yaml, posinp.xyz y psppar.Fe) y realizar la prueba:

cd /docker/FeHyb/GPU

bigdft

Después del cálculo, el resultado se encuentra en el archivo log.yaml y los tiempos en time.yaml. Estos archivos se pueden copiar en /results para que puedas guardarlos en la carpeta actual del sistema host.

3. Ejecutarlo con Jupyter Notebook

El comando predeterminado del contenedor inicia un servidor Jupyter dentro del contenedor, al cual se puede acceder desde cualquier navegador web y permite que se ejecuten sesiones interactivas con BigDFT. Para que esto sea posible, tienes que redirigir el puerto 8888 del contenedor a cualquier puerto del sistema host. Si quieres acceder desde otro ordenador, entonces este puerto tiene que abrirse a las conexiones:

nvidia-docker run -p 8888:8888 -it --rm -v $(pwd):/results

nvcr.io/hpc/bigdft:cuda9-ubuntu1604-mvapich2_gdr-mkl

En este ejemplo, podemos iniciar un navegador web y acceder al servidor con la dirección localhost:8888.

La contraseña del servidor Jupyter activo es “bigdft”. Puedes encontrar un ejemplo de bloc de notas en/ContainerXP/H2O-Polarizability.ipynb

Encontrarás más documentación aquí.

4. Ejecutarlo con MPI/OpenMPI/GPU

MVAPICH-GDR 2.3 está instalado en el contenedor y se puede ejecutar con procesos mpirun -np.

De forma predeterminada, OpenMP está activado y usa todos los núcleos del sistema host. Para usar la interfaz de paso de mensajes (MPI), es necesario establecer OMP_NUM_THREADS en un valor inferior (por ejemplo, ncores/nprocesses).

Ejecución directa con 4 procesos y 8 subprocesos OpenMP en un nodo de 32 núcleos:

nvidia-docker run -it --rm -e OMP_NUM_THREADS=8 -v

$(pwd):/results -w /results nvcr.io/hpc/bigdft:cuda9-ubuntu1604-mvapich2_gdr-mkl

mpirun -np 4 bigdft

Si hay varias GPU disponibles en el nodo, cada proceso MPI intentará usar una diferente y cambiará si hay más procesos que GPU (también es recomendable usar la opción --ipc=host de docker run). Como los procesos MPI compatibles con NVIDIA® CUDA™ son necesarios para los cálculos PBE0, también puede ser necesario establecer MV2_USE_CUDA en 1. No está activado de forma predeterminada, ya que podría reducir las ejecuciones sin GPU.

Para realizar una ejecución de varias GPU con 4 procesos y 32 núcleos, usa:

nvidia-docker run -it --rm --ipc=host -e MV2_USE_CUDA=1 -e OMP_NUM_THREADS=8 -v

$(pwd):/results -w /results nvcr.io/hpc/bigdft:cuda9-ubuntu1604-mvapich2_gdr-mkl

mpirun -np 4 bigdft

Configuración de prueba

El contenedor de BigDFT incluye archivos de entrada para probar el comportamiento del software acelerado por GPU o solo con CPU:

nvidia-docker run -it --rm -v $(pwd):/results

nvcr.io/hpc/bigdft:cuda9-ubuntu1604-mvapich2_gdr-mkl bash

Cuando se inicie el contenedor, te encontrarás en el directorio raíz (“/”). Después, puedes cambiar a /docker/FeHyb/GPU, donde se encuentran los archivos de entrada (input.yaml, posinp.xyz y psppar.Fe) y realizar la prueba:

cd /ContainerXP/FeHyb/GPU

bigdft

cp log.yaml /results/log_gpu.yaml

cp time.yaml /results/time_gpu.yaml

cd /ContainerXP/FeHyb/NOGPU

bigdft

cp log.yaml /results/log_cpu.yaml

cp time.yaml /results/time_cpu.yaml

La comparación entre ambas ejecuciones debe mostrar una mejora considerable entre la versión de CPU y la de GPU.

Se pueden realizar otras pruebas para aprovechar mejor los recursos del sistema host. En la carpeta /docker/H2O_32, hay un conjunto de pruebas más grande.

Para validar la corrección del resultado, se puede comparar el archivo log.yaml con los archivos log.ref.yaml disponibles en las variantes de CPU de las carpetas de prueba. Para realizar una comparación sencilla, inicia:

python /usr/local/bigdft/lib/python2.7/site-packages/fldiff_yaml.py -d log.yaml -r

./log.ref.yaml -t ./tols-BigDFT.yaml

El resultado correcto debería ser:

Test succeeded: True

CONFIGURACIONES DE SISTEMAS RECOMENDADAS

El contenedor de BigDFT está optimizado y su fiabilidad se ha puesto a prueba para ejecutarse en sistemas equipados con NVIDIA Pascal™ y NVIDIA Volta con CUDA 9 o superiores. Visual Molecular Dynamics (VMD) y todos los contenedores de aplicaciones HPC disponibles en NVIDIA GPU Cloud se pueden ejecutar en los sistemas siguientes:

  • Estación de trabajo: equipada con NVIDIA Titan V y CPU x86
  • Sistemas NVIDIA® DGX™
  • Clúster HPC con GPU Pascal/Volta, CUDA 9, CPU x86
  • Nube (AWS, Google Cloud Platform y muchos más)

ACCEDE A LOS CONTENEDORES DE APLICACIONES
ACELERADAS POR GPU con NVIDIA GPU Cloud.