Você está na página 1de 8

Grupo GFMM

Guia Básico de Acesso ao Cluster HPC Gauss


Suporte: gausshpc@usp.br
Site: portal.if.usp.br/gausshpc

Escrito por: Emanuel Mancio


Revisado por: Fábio Andrijauskas e Kaline Coutinho

São Paulo - SP
Janeiro de 2021
Sumário

Sumário . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1 Login na Gauss . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
2 Comandos Básicos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
2.1 Diretório . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
2.2 Arquivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2.3 Edição de Arquivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
3 Fila de Jobs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
4 Submissão de Jobs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

1 Login na Gauss
O acesso à Gauss é feito por meio de usuário e senha, se você não possui entre no link
https://forms.gle/E2UZfiJFvhzMGBMH6 e solicite sua conta. Caso não receba resposta
entre em contato com o suporte da Gauss (gausshpc@usp.br) para fazer o cadastro. Tendo
as informações de login e senha, entre no terminal do seu computador, use o comando abaixo
para entrar na Gauss, substituindo usuario pelo seu nome de usuário (username). Saiba que o
sı́mbolo $ representa o prompt do seu terminal e não faz parte do comando.
$ ssh usuario@gauss . if . usp . br

Se estiver no windows e retornar um erro afirmando que ssh não é reconhecido, você precisa
habilitar o ssh, siga as instruções do link https://pureinfotech.com/install-openssh-c
lient-windows-10/. Sendo seu primeiro acesso a Gauss, a mensagem mostrada na figura 1
aparecerá ou uma parecida.

Figura 1 – Mensagem de autenticação ssh.

Responda com “yes” e o seu terminal estará parecido com a figura 2, com isso você está
logado na Gauss. Repare que a senha não aparece ao seu digitada, nem qualquer outro sinal.

Figura 2 – Terminal após acesso na Gauss.


Se tiver alguma dificuldade com o login entre em contato com o suporte.

2 Comandos Básicos
2.1 Diretório
Assim que entrar na Gauss, você estará na sua pasta ou diretório home do servidor principal
(head-node) que tem 2Tb de disponibilidade para todos os usuário, no diretório /home/users/usuario.
Para verificar o diretório em que você está use o comando:
$ pwd

Também existe uma outra pasta para armazenar os arquivos no diretário /home1/users/usuario
que tem 51Tb de disponibilidade para todos os usuário. Então após executar alguns programas
copie seus arquivos/diretórios para seu diretório no disco /home1. Assim, não corre o risco de
lotar o disco /home e bloquear o head-node. Sempre que analizar seus dados comprima seus
diretórios para econimizar o espaço em disco.
Como os programas geram muitos arquivos, é interessante que você crie pastas, para manter
tudo organizado, a partir do comando:
$ mkdir nome_da_pasta

Tendo a nova pasta, para entrar nela use:


$ cd nome_da_pasta

Para retornar a pasta anterior, use:


$ cd ..

O comando cd pode ser utilizado para ir a qualquer pasta desde que você tenha o caminho
(path) dela. Por exemplo, se você estiver na sua pasta na home, e você queira ir para a pasta
”/home/users/usuario/Dice/Sim/Resultados”, basta usar:
$ cd / home / users / usuario / Dice / Sim / Resultados

ou
$ cd ∼/ Dice / Sim / Resultados

Perceba que ∼ representa a sua pasta na home, logo, para retornar para ela de qualquer
outra pasta, basta usar:
$ cd ∼

Assim como ∼ representa sua pasta na home, ”.” representa a sua pasta atual e ”..” a pasta
na qual ”.” está contida.
Mais informações sobre os comandos:

• cd no link https://linuxize.com/post/linux-cd-command/

• mkdir no link https://linuxize.com/post/how-to-create-directories-in-linux-w


ith-the-mkdir-command/

• pwd no link https://linuxize.com/post/current-working-directory/

2
2.2 Arquivos
Para listar os arquivos em um diretório use:
$ ls

O comando mv é usado para mover os arquivos:


$ mv nome_do_arquivo pasta_de_destino

Além disso, ele pode ser usado para renomear um arquivo:


$ mv nome_atual novo_nome

Para copiar algum arquivo use:


$ cp nome_do_arquivo pasta_de_destino

ou
$ cp nome_do_arquivo n o m e _ d o _ a r q u i v o _ c o p i a d o

Por exemplo:
$ cp text . txt text_backup . txt

Criará o text backup.txt que é uma cópia do arquivo text.txt no mesmo diretório. Já:
$ cp text . txt / home

Criará uma cópia de text.txt na pasta /home. Para ler os arquivos de texto diretamente
do terminal use o comando more:
$ more nome_do_arquivo

Ele inicialmente apresentará algumas linhas do arquivo, mas ao usar a tecla Enter ele mos-
trará mais linhas. Caso você queira parar de ler o arquivo você precisa cancelar o comando com
Ctrl + C (Win/Liux) ou Cmd + C (Mac). Caso você queira somente uma quantidade de linhas
do arquivo use:
$ head -n [ numero_de_linhas ] nome_do_arquivo

Por exemplo:
$ head - n2 resultados . out

Irá retornar as duas primeiras linhas do arquivo resultados.out. Se você quiser as linhas
do final substitua head por tail. Se você rodar a opção -n[numero de linhas], os comandos
head e tail mostrarão 10 linhas como padrão.
Se você precisar verificar se há alguma palavra especı́fica em um arquivo use:
$ grep palavra arquivo

Além disso, para enviar arquivos para a Gauss, usa-se o comando scp:
$ scp arquivos usuario@gauss . if . usp . br : di re to ri o_ na_ Ga us s

Para copiar um arquivos na Gauss para seu computador use:


$ scp usuario@gauss . if . usp . br : a rquivo s_na_G auss destino

3
Lembre-se de colocar o path completo dos arquivos que for copiar da Gauss para o seu
computador. Além disso, é possı́vel copiar ou enviar pastas inteiras com o comando scp:
$ scp -r diretorio usuario@gauss . if . usp . br : di re to ri o_ na_ Ga us s

Ademais, o comando scp vai sempre pedir a sua senha de acesso da Gauss. Mais informações
sobre os comandos:

• ls no link https://linuxize.com/post/how-to-list-files-in-linux-using-the-l
s-command/

• mv no link https://linuxize.com/post/how-to-move-files-in-linux-with-mv-com
mand/

• cp no link https://linuxize.com/post/cp-command-in-linux/

• more no link https://www.geeksforgeeks.org/more-command-in-linux-with-examp


les/

• head no link https://www.geeksforgeeks.org/head-command-linux-examples/

• tail no link https://www.hostinger.com.br/tutoriais/comando-tail-linux/

• grep no link https://www.hostinger.com.br/tutoriais/comando-grep-linux/

• scp no link https://www.hostinger.com.br/tutoriais/usar-comando-scp-linux-pa


ra-transferir-arquivos

2.3 Edição de Arquivos


É sugerido que toda edição de arquivos seja feita no seu micro local e depois copiar os
arquivo para Gauss. Mas se for preciso editar arquivos que já estão na Gauss use algum editor
de terminal, como por exemplo o vim. Por ser um comando mais complexo e fugir do escopo
desse guia, recomendo a leitura desses tutoriais:

• https://www.howtoforge.com/vim-basics

• https://opensource.com/article/19/3/getting-started-vim

3 Fila de Jobs
A Gauss possui 5 filas – biomol, inct, schwinger, biomolgpu, atmol – possivelmente você não
terá acesso a todas, em dúvida contate o suporte. Para rodar os programas, a Gauss usa um
sistema de jobs onde você pede uma quantidade de processadores e de memória e o job entra
em uma das filas, se houverem processadores e memória o job começa a rodar, se não, fica na
espera até haver.
Para saber como estão os jobs que estão rodando na Gauss use:
$ qstat

4
Que retornará como mostrado na figura 3.

Figura 3 – Resultado do comando qstat.

O Job id é o número associado ao job, o Name é uma variável que você define quando
submete o job, User é o usuário que submeteu, Time é o tempo que está rodando no formato
hhhh:mm, S é a situação que o job está: R significa running (rodando), Q queueing (em espera)
e E elapsed (terminou), e Queue é a fila que o job está.
A Gauss é um cluster de vários computadores, chamamos os computadores individuais de
nodes, a lista dos nodes disponı́veis está no link https://portal.if.usp.br/gausshpc/node.
Os jobs rodam em único node e para saber em qual o job está rodando use:
$ qstat -n

O node aparecerá junto com o Job id. Além disso, para verificar apenas os seus jobs, pode
usar:
$ qstat - na -u usuario

Como o job roda no node, normalmente os arquivos relativos ao job não estão acessı́veis
diretamente, para acessá-los você precisa entrar no node, usando:
$ ssh nome_do_node

Por exemplo, para acessar o node12 use:


$ ssh node12

Muitas vezes é interessante saber se algum node está livre ou quantos processadores ele tem
disponı́vel, isso pode ser obtido utilizando:
$ pbsnodes nome_do_node

Ele retornará informações de todos os nodes, por exemplo:


$ pbsnodes node22

Resultará nas informações mostradas na figura 4, vemos que o node22 possui 32 processadores
sendo que 26 estão em uso, além disso que ele tem pouco mais de 60GB de memória e que 8GB
estão em uso. Com isso, sabemos que podemos submeter um job diretamente ao node22 com 6
processadores.

5
Figura 4 – Informações do node22.

Podemos receber essas informações de todos os nodes com:


$ pbsnodes -a

Mais informações sobre os comandos:

• qstat no link http://docs.adaptivecomputing.com/torque/4-1-3/Content/topics


/commands/qstat.htm

• pbsnodes no link http://docs.adaptivecomputing.com/torque/4-0-2/Content/topi


cs/commands/pbsnodes.htm.

4 Submissão de Jobs
A submissão de um job na Gauss é feita através de um arquivo script em bash e usando o
comando qsub, como mostrado a seguir:
$ qsub script . sh

Exemplos de script pode ser encontrados no link https://portal.if.usp.br/gauss


hpc/script. Como informado antes, o job usualmente roda no node, mais especificamente
na pasta ”/scratch/local/job id.gauss”, por exemplo o job 29574 está na pasta ”/scratch/lo-
cal/29574.gauss”do node. Vale ressaltar que isso nem sempre é verdadeiro dado que depende
de um conjunto de comandos no script. Se estes comandos não estiverem no script então
os arquivos são gerados no seu home e poderão ser acessı́veis sem precisar acessar o node, mas
isso influencia no tempo de execução do job (que ficará mais lento) já que os dados precisão
ser gravados no disco do servidor (heard node). Logo, garanta que os arquivos sejam acessı́veis
apenas no node. Ao final do job, é interessante acessar o node que o job foi executado e verificar
se os dados do scratch foram realmente apagados, para garantir a operação contı́nua dos jobs.
Além disso, para remover um job use:
$ qdel job_id

Por exemplo, para deletar o job com id 29574 se utiliza:


$ qdel 29574

6
Quando você usar o qstat ele adiciona ao número ”.gauss” ao número, lembre-se que não
precisa adicioná-lo para o comando qdel.
Todos os scripts possuem uma parte de configuração com o seguinte formato:
#!/ bin / bash
# PBS -S / bin / bash
# PBS -l nodes =1: ppn =12
# PBS -l walltime =300:00:00
# PBS -l mem =16 GB
# PBS -N nome_do_job
# PBS -q biomol

Na qual podemos especificar o node substituindo nodes=1 por nodes=nome do node. Se


quiséssemos rodar no node22, usarı́amos nodes=node22. Não é necessário especificar o node
para a execução, pois sem especificar o seu job vai entrar no primeiro node que ficar livre e
atender sua especificação de processadores e memória livre. Neste caso a linha ficara assim:
# PBS -l ppn =12

Já ppn é relativo a quantidade de processadores, walltime é o tempo máximo que o job vai rodar,
se esse tempo for atingido tudo que estiver rodando relativo ao job será parado e finalizado, nesse
caso os programas normalmente possuem um comando de continuação; mem é a quantidade de
memória requerida. A penúltima linha define o nome do job e a última a fila que o job será
submetido, se ele for posto numa fila que você não tem autorização, ele não irá rodar.
Importante: Se você deletar um job ou se acontecer algum erro que impeça a finalização
normal do job, garanta que a pasta de execução no node com os arquivos seja apagada para não
lotar os discos locais dos notes e impedir que outros usuários executem.
Importante: Se você submeter um job e ele ficar com status E (elapsed), avise o suporte.
Enquanto isso verifique outro node disponı́vel e altere o script de submissão especificando o
node, para que ele vá para outro node quando for submetido, uma vez que se você cancelar
o job e submetê-lo de novo, provavelmente ele irá para o mesmo node e apresentará o mesmo
problema.

Você também pode gostar