====== Computación de Altas Prestacións (HPC) ====== ===== Acceso ao clúster e copia de arquivos ===== O acceso faise a través dunha máquina que actúa coma //frontend// a través de //ssh//. Para máis información, consulta [[centro:servizos:hpc:acceso_al_cluster | como acceder ao clúster e copiar ficheiros]]. Antes de acceder por primeira vez, le atentamente a sección de introdución que segue para entender como funciona o sistema. Tamén atoparás información que servirache de referencia máis adiante. ===== Introdución ===== ==== Funcionamento básico dun clúster de computación ==== O Clúster de Computación de Altas Prestacións (HPC, //High Performance Computing//) proporciona aos investigadores una unha infraestrutura compartida que serve como plataforma axeitada á execución de procesos computacionalmente custosos. Un **clúster de computación** componse dun conxunto de nodos interconectados mediante unha rede dedicada que pode actuar como un único elemento computacional. Isto proporciona unha grande potencia, permitindo a execución de traballos paralelos moi grandes ou moitas execucións pequenas de forma concorrente. Un **sistema de xestión de colas** (//SGC//) é un software que planifica a execución dos traballos que se atopa habitualmente nos sistemas deste tipo, xa que permite unha xestión eficiente dos recursos con múltiples usuarios. Neste clúster está instalado o sistema **PBS/TORQUE**. A dinámica de funcionamento dun sistema deste tipo é a seguinte: - O usuario solicita a execución dunha tarefa((Normalmente un script de //bash//)) cuns recursos determinados. - O sistema rexistra a solicitude nunha das súas colas de entrada((Tipicamente //batch//)) e, segundo a cantidade de recursos solicitados, derívaa a unha cola de sistema determinada ((Chamadas //np1//, //np2//, //np4//...)). - En función da prioridade da cola de sistema (a menores recursos precisos, maior prioridade) e da dispoñibilidade dos recursos no sistema, a tarefa enviarase a un ou varios dos nodos computacionais. Ao rematar a execución, devolverase a saída xerada. O habitual é que a execución teña que **agardar na cola** até que os recursos estean dispoñibles e preparados. Ademais, resulta imposible realizar así execucións de maneira interactiva((Con todo, existe unha cola interactiva especial para execucións interactivas, orientada a solucionar problemas nas execucións)). ==== Descrición do hardware ==== O clúster **ctcomp2** é un clúster heteroxéneo, formado por 8 nodos computacionais //HP Proliant BL685c G7//, 5 nodos //Dell PowerEdge M910// e 5 nodos //Dell PowerEdge M620//. ^ Nome do nodo ^ Modelo ^ Núcleos por nodo (NUMAs, Sockets, Cores/socket, Threads/core) ^ Memoria RAM ^ | node1-7 | HP Proliant BL685c G7 - Procesadores AMD | 64 (8, 4, 8, 2) | 256GB((node1 128GB)) | | inode11-15 | Dell PowerEdge M910 - Procesadores Intel Xeon L | 32 (4, 4, 8, 1) | 64GB | | inode16-20 | Dell PowerEdge M620 - Procesadores Intel Xeon E5 | 32 (2, 2, 8, 2) | 64GB | Internamente os nodos computacionais están conectados entre si a través de varias redes 10 GbE dedicadas. A conexión dende o exterior é de 1Gb. Case todos os nodos, fóra de //node1// e //inode20// apáganse cando non se están empregando durante un intre, o que podería causar atrasos de varios minutos na cola aínda que o clúster aparentemente estea desocupado. [[ centro:*servizos:*hpc:referencia_bios|Información técnica dos procesadores e opcións de BIOS]] ==== Descrición do software ==== O sistema operativo é //Debian GNU/Linux 8.6 (jessie)//. O sistema de colas que xestiona os traballos é PBS/Torque, apoiado por CLUES para mellorar a xestión de enerxía. * [[http://docs.adaptivecomputing.com/maui/index.php|MAUI 3.3.1]] * [[http://docs.adaptivecomputing.com/torque/4-1-7/help.htm|Torque 4.1.3]] * [[http://www.grycap.upv.es/clues/eng/index.php|CLUES 0.88]] O sistema permite compilar e executar código en C++, Java, Python, R, Octave... O uso de determinado software pode requirir a súa carga a través do sistema //Modules//. Podes consultar o catálogo completo de software dispoñible na seguinte ligazón: [[centro:servizos:hpc:referencia_software | Información do software dispoñible]] ===== Sistema de colas ===== O sistema de colas ten catro **colas de entrada** e oito **colas do sistema**. Un usuario envía un traballo a unha cola de entrada e, en función dos recursos solicitados, envíanse a unha ou outra cola de sistema. Para enviar un traballo ao sistema de colas, utilízase o comando ''qsub''. Por defecto envíase á cola de entrada //batch//. Se o clúster atópase moi saturado, pode ser interesante especificar a cola //short// ou //bigmem//. ^ Cola ^ Nº máx. de traballos((Só contan os traballos que non foron aínda enviados a unha cola do sistema, así que isto non quere dicir que só poidas enviar ese número de traballos)) ^ Características ^ Exemplo ^ | ''batch'' | 256 | É a cola por defecto. | ''qsub traballo.sh'' | | ''short'' | 256 | Cola especial con maior prioridade para traballos de como máximo 12 horas, 16 procesos, 5 nodos e 32GB | ''qsub -q short traballo.sh'' | | ''bigmem'' | 8 | Outra cola especial con maior prioridade para traballos de, especificamente, 64 procesos e un nodo. É obrigatorio especificar eses recursos (''nodes=1:ppn=64''). | ''qsub -q bigmem -l nodes=1:ppn=64 traballo.sh'' | | ''interactive'' | 1 | Cola especial para traballar de forma interactiva. Debe chamarse de forma especial. | ''qsub -q interactive -I'' | Os recursos que se poden solicitar e que determinarán a cola do sistema utilizada son: * O número de nodos * O número de núcleos por nodo * O tempo de execución A memoria máxima asignada depende da cola do sistema que se empregue finalmente, así que estará determinada polo resto de parámetros. Os recursos poden solicitarse de dúas formas: como comentarios ao comezo do script, ou co parámetro ''-l'' (que ten precedencia). Podes ver [[centro:servizos:hpc:escribir_script:exemplos|exemplos de traballos]] para ver como se especifican estes recursos. Comproba os límites existentes nas colas do sistema, para determinar a mellor elección de recursos posible((Se pides unha situación imposible, por exemplo, 8 núcleos con 200 horas, o traballo permanecerá na cola de entrada e xamais se chegará a executar)): ^ ^ Límites |||||| ^ Cola ^ Núcleos((parámetro ''ppn'')) ^ Nodos((parámetro ''nodes'')) ^ Memoria (GB)((Determinada polo resto de parámetros)) ^ Traballos/usuario((Se se alcanza este número de traballos, os traballos restantes permanecerán na cola de entrada mentres non se liberen traballos na cola de sistema)) ^ Tempo máximo (horas) ^ Prioridade((Maior número = maior prioridade)) ^ | ''np1'' | 1 | 1 | 1,99 | 300 | 672 | 6 | | ''np2'' | 2 | 2 | 3,75 | 150 | 500 | 5 | | ''np4'' | 4 | 4 | 7,5 | 90 | 500 | 4 | | ''np8'' | 8 | 5 | 15 | 40 | 192 | 4 | | ''np16'' | 16 | 5 | 31 | 20 | 192 | 3 | | ''np32'' | 32 | 5 | 63 | 10 | 288 | 2 | | ''np64'' | 64 | 5 | 127 | 5 | 384 | 1 | | ''parallel'' | 32-160 | 5 | 64 | 15 | 192 | 3 | Podes ler máis sobre [[centro:servizos:hpc:escribir_script |como preparar os traballos para o seu envío ao xestor de colas]] e como [[ centro:servizos:hpc:envio_trabajo|enviar e xestionar traballos unha vez enviados]].