¿Por qué usar un clúster?


  • La Computación de Alto Rendimiento (HPC en inglés, High Performance Computing) típicamente implica conectarse a sistemas de computación muy grandes que se encuentran en cualquier parte del mundo.
  • Estos sistemas pueden usarse para realizar trabajos que serían imposibles o mucho más lentos de completar en sistemas más pequeños.
  • Los recursos HPC son compartidos por múltiples usuarios.
  • El método estándar de interacción con dichos sistemas es a través de una interfaz de línea de comandos.

Conectándose a un sistema HPC remoto


  • Un sistema HPC es un conjunto de máquinas conectadas en red.
  • Los sistemas HPC normalmente proporcionan nodos de acceso y un conjunto de nodos de trabajo.
  • Los recursos en nodos independientes (de trabajo) pueden variar en volumen y tipo (cantidad de RAM, arquitectura de procesador, disponibilidad de sistemas de archivos montados en red, etc.).
  • Los archivos guardados en un nodo están disponibles en todos los nodos.

Trabajando en un sistema HPC remoto


  • “Un sistema HPC es un conjunto de máquinas conectadas en red.”
  • “Los sistemas HPC normalmente proporcionan nodos de acceso y un conjunto de nodos de trabajo.”
  • “Los recursos en nodos independientes (de trabajo) pueden variar en volumen y tipo (cantidad de RAM, arquitectura del procesador, disponibilidad de sistemas de archivos montados en red, etc.).”
  • “Los archivos guardados en un nodo están disponibles en todos los nodos.”

Fundamentos del Planificador de Trabajos


  • El planificador gestiona cómo se comparten los recursos de cómputo entre usuarios.
  • Un trabajo es solo un script de shell.
  • Solicita ligeramente más recursos de los que necesitarás.

Variables de Entorno


  • Las variables de shell se tratan como cadenas de texto por defecto.
  • Las variables se asignan usando “=” y se recuperan usando el nombre de la variable con el prefijo “$”.
  • Usa “export” para que una variable esté disponible para otros programas.
  • La variable PATH define la ruta de búsqueda de la shell.

Acceder a software a través de Módulos


  • Carga software con module load nombreDelSoftware.
  • Descarga software con module unload.
  • El sistema de módulos gestiona automáticamente el versionado del software y los conflictos entre paquetes.

Transferencia de archivos con computadoras remotas


  • wget y curl -O descargan un archivo desde Internet.
  • scp y rsync transfieren archivos hacia y desde tu computadora.
  • Puedes usar un cliente SFTP como FileZilla para transferir archivos con una GUI.

Ejecutar un trabajo paralelo


  • La programación paralela permite que las aplicaciones aprovechen el hardware paralelo.
  • El sistema de colas facilita la ejecución de tareas paralelas.
  • Las mejoras de rendimiento de la ejecución paralela no se escalan linealmente.

Usar recursos de forma eficaz


  • Los scripts de trabajo precisos ayudan al sistema de colas a asignar eficientemente los recursos compartidos.

Usar recursos compartidos de manera responsable


  • Sea cuidadoso con cómo usa el nodo de acceso.
  • Sus datos en el sistema son su responsabilidad.
  • Planifique y pruebe transferencias de datos grandes.
  • A menudo es mejor convertir muchos archivos en un solo archivo de tipo archivo antes de transferir.