Paralelización en VASP

Aug 19 2020

Tengo un sistema que tiene 1 punto k, 54 átomos NBANDS=152y NGZ=80. Estoy ejecutando una simulación AIMD en VASP versión 5.4.4

La supercomputadora tiene 32 núcleos / nodo. Es un clúster LINUX vinculado por Infiniband, una moderna máquina multinúcleo. Me preguntaba cuál sería la mejor manera de seleccionar parámetros y solicitar recursos para obtener un cálculo rápido y eficiente. Aquí hay algunos escenarios que he considerado. Tengo curiosidad por saber cuál sería el "mejor" método (en términos de eficiencia y velocidad).

  1. Basado en lo que leí aquí
  • Debería solicitar algo así como 19 bandas (152/8). Quizás establezca NBANDS = 160 para solicitar 20 núcleos pares.
  • ¿Entonces establecería NCORE = 20 en mi archivo INCAR y solicitaría 20 núcleos en 1 nodo?
  • ¿O sería mejor establecer NCORE = 10. Y luego solicitar algo como 2 nodos y 10 núcleos por nodo? ¿O eso crearía demasiada sobrecarga de comunicación y ralentizaría la simulación?
  1. Si decido usar # de núcleos = # de átomos = 54
  • ¿Establecería NCORE = 32 y luego solicitaría 54 núcleos en 2 nodos (32 en 1 nodo + 22 en el segundo)? ¿O 9 núcleos / nodo y 6 nodos?
  1. ¿No puedo solicitar todo el nodo? 1 nodo, 32 núcleos
  • entonces establezco NCORE = 32 y solo solicito todo el nodo. Sin embargo, el manual de VASP sugiere contra esto porque eso haría que NPAR = 1
  • esto me confunde un poco porque supongo que 32 núcleos en un nodo serían más eficientes que tener núcleos en varios nodos que se comunican entre sí

Respuestas

11 TristanMaxson Aug 20 2020 at 04:04

Como alguien que ha realizado muchas evaluaciones comparativas para VASP, le sugiero que pruebe el enfoque experimental. Creo que VASP agregará bandas adicionales para usted si es necesario para la paralelización, por lo que no me preocuparía por eso personalmente. El diseño del nodo físicamente (32 núcleos en 1 procesador frente a 16 núcleos en 2 procesadores frente a diseños especiales de procesador AMD en una sola CPU) puede diferir significativamente de un clúster a otro; no puede saber qué es lo óptimo sin intentarlo.

Como parece que está ejecutando simulaciones MD, creo que vale la pena comparar cada sistema antes de ejecutar una simulación larga. Los cambios menores no requieren que cambie la referencia, pero si pasa de 50 a 150 a 300 átomos, el ideal puede cambiar. Ejecute una serie de cálculos rápidos con todo el rango de NCORE que parezca razonable. Utilice el mejor resultado. Tiendo a verificar cada factor del nodo más grande.

Para 32 núcleos, comprobaría NCORE = (1, 2, 4, 8, 16, 32). Lo compararía con unos 10 pasos geométricos. Esto puede parecer una pérdida de tiempo, pero puede terminar ahorrando una gran cantidad de tiempo en el futuro.

Casi siempre sugeriría solicitar nodos completos a menos que tenga una buena razón para no hacerlo. Es posible que eventualmente vea una opción de KPAR mientras mira a su alrededor, he escuchado opiniones encontradas. Personalmente, nunca he obtenido un mejor resultado con la paralelización de kpoint que sin ella. Sin embargo, puede marcar una diferencia en la memoria.

7 DoubleKx Aug 21 2020 at 03:50

Pensé que publicaría los resultados de la evaluación comparativa según la sugerencia de Tristan. Tal vez sea útil para alguien en el futuro. Solo hice 10 pasos en el MD (tamaño de paso de 1 fs, 10 fs en total).

Las diferencias porcentuales son todas relativas a la ejecución NCORE = 1 con 32 núcleos y 1 nodo. Hay una aceleración del 33% yendo a los 2 nodos con 64 núcleos (NCORE = 32).

Obviamente, esto puede diferir según su clúster. Por cierto, este es el grupo de Graham en Sharcnet en Canadá, así que espero que sea útil para otros canadienses :)