====== Servidores de processamento ====== Existem diversos grupos de pesquisa que dispõem de recurso próprio para processamento. O objetivo deste artigo não é descrever completamente a infraestrutura de processamento do IME, mas descrever a infraestrutura de processamento disponível para toda a comunidade do IME. Contamos com três servidores de processamento: brucutuiv, brucutuv e brucutuvi. Todos os servidores operam com o sistema [[https://debian.org/|Debian GNU/Linux]] na versão estável contando com diversos pacotes possibilitando a compilação de programas em C, bem como a execução de scripts em Python, R etc. O acesso a tais servidores é remoto se dá a partir do protocolo [[tutoriais:como_acessar_a_rede_ime_de_fora|SSH]]. Lembrando que é **necessário** [[https://criaconta.ime.usp.br|criar a conta]] na rede do IME para o acesso remoto. Exemplo: ssh usuario@brucutu.ime.usp.br **OBS:** o acesso às brucutus V e VI se dá apenas a partir do ambiente interno. Então é preciso [[tutoriais:como_acessar_a_rede_ime_de_fora|acessar remotamente a rede do IME]] e, de lá, fazer outro SSH. ===== Configuração ===== As configurações simplificadas de hardware dos computadores são as seguintes: ^ servidor ^ processador ^ núcleos ^ threads* ^ memória RAM ^ coprocessador ^ | brucutuiv | 2x [[https://ark.intel.com/content/www/us/en/ark/products/91767/intel-xeon-processor-e5-2650-v4-30m-cache-2-20-ghz.html|Intel Xeon E5-2650 v4]] | 12 | 24 | 384GB | [[https://www.nvidia.com/content/dam/en-zz/Solutions/Data-Center/tesla-product-literature/TeslaK80-datasheet.pdf|Nvidia Tesla K40]] | | brucutu | 2x [[https://ark.intel.com/content/www/us/en/ark/products/120489/intel-xeon-gold-6148-processor-27-5m-cache-2-40-ghz.html|Intel Xeon Gold 6148]] | 20 | 40 | 512GB | N/A | | brucutuvi | 2x [[https://ark.intel.com/content/www/us/en/ark/products/120489/intel-xeon-gold-6148-processor-27-5m-cache-2-40-ghz.html|Intel Xeon Gold 6148]] | 20 | 40 | 512GB | [[https://www.nvidia.com/en-us/data-center/v100/|Nvidia Tesla V100]] | * Com [[https://en.wikipedia.org/wiki/Hyper-threading|hyperthreading]], a quantidade efetiva linhas de processamento é o dobro do número de núcleos. ===== Política de uso ===== - Não ocupar as duas GPUs. Se acontecer, poderemos matar o seu processo **mais antigo**; - Não pode ocupar mais do que duas máquinas em CPU. Se acontecer, poderemos matar seus processos **mais antigos**; - Se um processo passar de **168h** (uma semana corrida), ele poderá ser morto para liberar recursos para outros usuários; - Se um processo usar **todo** o recurso da GPU, ele poderá ser morto para liberar o recurso para outros usuários; - A SI não se responsabilizará pelos processos mortos que não obedecerem esta política de uso. Em essência: //Brute force science should be avoided//. ===== Pacotes ===== Costumamos instalar bibliotecas mais generalistas como o ''r-recommended'' ou o ''build-essential''. Caso for necessário a instalação de algo mais específico, basta escrever para admin@ime.usp.br solicitando a instalação. Atentamos que pode acontecer de não ser possível instalar a dependência por se tratar de uma versão conflitante com o que a versão estável do Debian tem a oferecer. ===== Boas práticas ===== - Utilizar o comando **screen**; - Não usar a área de rede como origem ou destino de dados para seu programa. Usar ''/var/tmp'' ou ''/var/fasttmp'' (com SSD); - Usar **checkpoint**. Caso ocorra uma queda de energia ou travamento do servidor, o seu processo poderá reiniciar e continuar o processamento de algum ponto próximo à queda; - Por se tratarem de servidores compartilhados, limitamos o processamento e a memória disponível por usuário. ==== Sobre o GNU Screen ==== Para abrir uma sessão no ''screen'', basta rodar o comando ''screen''. Dentro da screen, basta rodar seu programa como o habitual. Para sair de uma sessão da screen sem fechá-la, ''Ctrl+A'' depois a tecla ''D''. Para retomar uma sessão da screen, basta rodar o comando ''screen -r''. Se houver mais de uma screen aberta, será necessário identificá-la. Cada screen terá um número de processo associado a ela, basta especificá-lo. Exemplo: $ screen -r There are screens on: 31415.pts-9.amaterasu (26/02/2020 05:35:08) (Detached) 9793.pts-2.amaterasu (26/02/2020 03:08:46) (Detached) # seu processo é o 31415 $ screen -r 31415