Abaqus con aceleración en la GPU

Empieza hoy mismo con esta guía para aplicaciones listas para GPU.

Abaqus Standard

Abaqus/Standard emplea una tecnología de solución ideal para eventos estáticos y dinámicos de baja velocidad en los que las soluciones de tensión de alta precisión son de importancia crítica. La presión de sellado en una junta de estanqueidad, el rodamiento en estado estacionario de un neumático y la propagación de grietas en el fuselaje de un avión compuesto son algunos casos de uso. Abaqus permite analizar un modelo tanto en el dominio del tiempo como en el de la frecuencia dentro de una única simulación.

Abaqus/Standard se ejecuta hasta 3,7 veces más rápido en sistemas acelerados en la GPU NVIDIA que en sistemas con solo CPU, lo que permite a los usuarios ejecutar más simulaciones de elementos finitos en un día de trabajo y aumentar la productividad.

Lee la documentación técnica sobre la aceleración de simulaciones de Abaqus con GPU NVIDIA. Consulta cómo las GPU NVIDIA aceleran Abaqus/Standard FEA Solver de Dassault Systèmes SIMULIA aquí.

Abaqus se ejecuta hasta 3,7 veces más rápido en las GPU

Instalación

Instrucciones de descarga e instalación

Abaqus Standard (versión R2017x) puede descargarse en el sitio web de 3ds SIMULIA. A continuación se describen unas breves instrucciones de instalación:-

1. Descarga los archivos "tar" y extrae el contenido de estos archivos en un solo directorio. Esto debe generar un único subdirectorio denominado "AM_SIM_Abaqus_Extend.AllOS" que contiene el software de instalación.

2. Ejecuta el script de shell y, opcionalmente, instala la documentación, la licencia y las aplicaciones restantes en el orden correcto, tal y como se describe en la guía de instalación.

Señales de licencias de Abaqus: ahorro en costes

Las licencias de Abaqus se basan en señales para que sean lo suficientemente flexibles como para que los usuarios ejecuten diversos análisis de Abaqus y utilicen Abaqus/CAE para compilar modelos de simulación o para consultar los resultados. El número de señales se calcula a partir del número de núcleos de CPU que se utilicen en la ejecución de la simulación. Abaqus utiliza la siguiente fórmula de función de degradación para determinar el número de señales. En esta fórmula, N corresponde al número de núcleos de CPU.

El gráfico siguiente ilustra esta ecuación, muestra cómo aumenta el número de señales de licencias de Abaqus a medida que aumenta el número de núcleos.

Forma en que aumenta el número de señales de licencias de Abaqus a medida que aumenta el número de núcleos.

La curva azul representa el caso de solo CPU, mientras que la curva verde representa el caso de CPU y GPU. El patrón escalonado de estas curvas muestra cómo el aumento del número necesario de señales va a menos a medida que aumenta el número de núcleos de CPU. Cuando se incluye una GPU en la simulación, se considera un solo núcleo de CPU para calcular el número de señales necesarias. Esta forma de considerar una GPU se representa mediante la curva verde de patrón escalonado con el número correspondiente de núcleos de CPU+GPU en el eje X secundario de la parte superior

La relación coste-beneficio del uso de las GPU en las simulaciones se ilustra mediante los dos conjuntos de configuraciones de computación indicados por las líneas de puntos
de la figura:

  • La primera línea de puntos mostrada en la marca de 8 núcleos en el eje X primario indica que para 8 núcleos de CPU se requieren 12 señales. Si se incluye una GPU en la ejecución de la simulación, el número de núcleos de CPU es 9, pero el número de señales sigue siendo 12, tal como indica el punto rojo individual.
  • La segunda línea de puntos mostrada en la marca de 16 núcleos en el eje X primario indica que para 16 núcleos de CPU se requieren 16 señales. Si se añaden 1 o 2 GPU a 16 núcleos de CPU, el número de núcleos de CPU aumenta a 17 o 18, respectivamente, pero el número de señales se mantendría en 16, tal como muestran los dos puntos rojos.

El patrón escalonado muestra peldaños más anchos con núcleos cada vez mayores para ambas curvas, lo que resalta el hecho de que es rentable cuando se utilizan más núcleos de CPU. La ventaja es mucho mayor cuando se utilizan GPU en lugar de CPU adicionales.

Ejecución de trabajos

Para ejecutar la simulación de Abaqus en las GPU, debe incluirse el indicador -gpus en la línea de comandos. A partir de la versión 6.14, la característica de división de DMP (DMP y SMP) se puede combinar con aceleración en la GPU al añadir el indicador -threads o el indicador -mp_host_split con el indicador -gpus.

$Abaqus_2017 -interactive -j $job_name -inp $input_file_name -cpus $no_of_cpu_cores -gpus
$no_of_gpus_per_dmp -mp_host_split $no_of_dmp_per_node >& $output_file

Indicadores y funciones

1. –cpus: especifica el número de núcleos de CPU del trabajo.

2. –gpus especifica el número de GPU por proceso de DMP.

3. –mp_host_split: especifica el número de procesos de DMP por nodo.

4. –thread: este indicador se puede utilizar en lugar del indicador -mp_host_split y especifica el número de subprocesos por proceso de DMP.

A partir de la versión 2016 de Abaqus, ya no es necesario establecer las GPU en modo exclusivo. Sin embargo, siempre es conveniente comprobar si las GPU están suscritas en exceso cuando se ejecutan varios trabajos de Abaqus. Si es así, establezca las GPU en modo exclusivo para que los procesos de DMP vayan a otras GPU. Para establecer las GPU en modo exclusivo, ejecute el comando nvidia-smi siguiente:

$nvidia-smi -c 3

Con una máquina con dos sockets de CPU, crea dos procesos DMP y utiliza dos GPU: una GPU por proceso de DMP.

Además, inserta un archivo local abaqus_v6.env con el siguiente contenido en el directorio project/run para anular y especificar comandos adicionales para mejorar el rendimiento.

# Sobrescribir archivos sin preguntas
ask_delete=OFF
# Modificar la lista de hosts en función del número de nodos de cálculo usados y
especificar los núcleos de CPU por nodo en consecuencia
# Establecer el modo de afinidad de CPU de mpi en la granularidad de sockets
mp_mpirun_options = “-prot -aff:automatic:bandwidth:socket”
import os
os.environ['ABA_SRM_BALANCED']='ON'

Pruebas de referencia

Cada tarjeta Tesla P100 tiene una sola GPU Pascal y cada tarjeta Tesla K80 tiene dos GPU Kepler. Las ejecuciones se llevaron a cabo con variaciones del comando lines/env en distintas versiones de Abaqus. Consulta la documentación técnica sobre computación de Abaqus con GPU NVIDIA para obtener más información sobre los ajustes de env y otras configuraciones.

Rendimiento de Abaqus/Standard 2017 en sistemas de CPU y de GPU NVIDIA

Configuraciones recomendadas del sistema

Configuración de hardware

Estación de trabajo

Parámetro
Especificaciones

Arquitectura de CPU

x86

Memoria del sistema

48 GB o más

Disk

Mínimo 500 GB

CPUs

2 sockets de CPU (más de 8 núcleos, más de 2 GHz))

Modelo de GPU

Quadro GP100 para un cálculo de doble precisión

GPUs

1

Servidores

Parámetro
Especificaciones

Arquitectura de CPU

x86

Memoria del sistema

96-192GB

CPUs/Nodos

2 (más de 8 núcleos, más de 2 GHz))

Número total de nodos

1-10+

Modelo de GPU

Tesla P100

GPUs/Nodo

1

Interconexión

InfiniBand

Crea tu solución ideal de GPU hoy mismo.