Escolar Documentos
Profissional Documentos
Cultura Documentos
Programa de Pós-Graduação
em Física (PPGFis - UFPR)
1 Agradecimentos 2
2 O manual 3
3 Introdução 5
3.1 Contexto histórico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
3.2 Introdução a Computação Científica . . . . . . . . . . . . . . . . . . . . . . 7
3.3 Introdução ao Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
3.3.1 O terminal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
3.4 Criando a conta na hoggar . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
3.5 Acesso à hoggar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
4 Usando a hoggar 13
4.1 Onde rodar: servidoras . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
4.2 Com o que rodar: onde deixar os seus programas . . . . . . . . . . . . . 15
4.3 Como rodar: usando as máquinas . . . . . . . . . . . . . . . . . . . . . . . . 15
4.3.1 Comandos úteis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
4.4 Como lidar com os resultados . . . . . . . . . . . . . . . . . . . . . . . . . . 17
4.4.1 Configurando a hoggar . . . . . . . . . . . . . . . . . . . . . . . . . . 17
5 Usando o lcpad 19
5.1 Acessando o lcpad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
5.2 Onde rodar: servidoras . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
5.3 Onde os seus programas e arquivos estão? . . . . . . . . . . . . . . . . . . 20
5.4 Como rodar: usando as máquinas . . . . . . . . . . . . . . . . . . . . . . . . 22
5.4.1 Configurando o lcpad . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
6 Programas específicos 24
6.1 Gaussian09 ou Gaussian16 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
6.2 Perspectivas Futuras . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
1
Capítulo 1
Agradecimentos
Aos estudantes que colaboraram com a criação e edição deste documento: Ms.
Bruno R. R. Boaretto (Doutorando), João A. P. da Silveira (Mestrando), Ms. João Paulo
Araújo Souza (Doutorando) e Kalel Rossi (Mestrando).
Ao professor Ricardo Viana pelo modelo de manual que ele havia elaborado para
seus orientandos e gentilmente compartilhou conosco.
2
Capítulo 2
O manual
Talvez o leitor esteja se questionando: Por que existe um manual para as máqui-
nas de cálculo? Penso que o fato de você estar lendo este documento já revela o
seu interesse em buscar entender uma das principais ferramentas de pesquisa em
um programa de pós-graduação, que é a sua infraestrutura computacional! Deve-
mos lembrar que em nosso departamento também possuímos espaços laboratoriais e
experimentais, contudo, focaremos exclusivamente nos recursos computacionais.
Um dos principais objetivos deste material é guiar os estudantes que recém ingres-
sarem em nosso programa de pós-graduação. Sim, desde discentes do mestrado, ou
passando pelo doutorado e até pós-doutorado! A ideia é instruir de maneira simples,
mas significativa, àqueles que necessitarão implementar, e consequentemente rodar,
cálculos numéricos de grande complexidade nas máquinas servidores aqui disponí-
veis. Nunca foi elaborado um documento geral que especificasse todos os detalhes que
apresentaremos nos capítulos seguintes em nosso programa, apenas alguns profes-
sores criaram manuais próprios para seus orientandos (como se fosse uma ‘herança
intelectual’ acadêmica, por assim dizer) ou indicando outro aluno já experiente para
ajudar os recém chegados.
Sem qualquer sombra de dúvidas, os estudantes são muito gratos aos professores
que dedicaram seu tempo em produzir um material auxiliar, no entanto, precisamos
padronizar as informações para atingir todo o corpo discente uniformemente. Sendo
assim, visando quebrar esse ciclo de hereditariedade de informações, este manual pas-
sará a ser incluído na página do programa (de onde você provavelmente baixou), jun-
tamente aos documentos de normas e resoluções. Aliás, recomendamos fortemente
que você leia o item de Auxílio aos Alunos, as Normas Internas, a Resolução No
32/17 CEPE e a Resolução PROEX/CAPES. Tais informações são fundamentais para
garantir seus direitos enquanto estudante de pós-graduação na UFPR.
Certo, após esse contato inicial (e talvez um pouco tenso) vamos descrever os
principais tópicos compreendidos neste manual. Primeiramente, apresentaremos
um breve contexto histórico envolvendo a criação e implementação tanto da hoggar
quanto do lcpad, seguido de uma descrição sucinta sobre o que é computação científica
e a sua importância. Incluímos uma seção dedicada ao Linux UNIX/Linux (pessoal
que manja do Windows ou MacOS, criem seções extras nas próximas edições...), com
informações básicas de como iniciar e usar um terminal. Em seguida, vamos reeditar
um procedimento que já explicado em [4] relacionado a criação e acesso da conta na
hoggar, bem como a liberação do email institucional pessoal. Dedicamos exclusiva-
mente o capítulo seguinte para o uso da hoggar, por exemplo, como selecionar as
3
CAPÍTULO 2. O MANUAL 4
máquinas servidores, onde deixar seus arquivos pessoais (binários, .exe, .c., .py, etc)
e finalmente executar seu código. O capítulo seguinte segue o mesmo raciocínio do
anterior, mas focando nos recursos disponíveis no lcpad. Finalizamos com algumas
dicas de configurações de usuário. Acabou! Não, o último capítulo é um compilado
de programas úteis que eventualmente vocês utilizem futuramente (em construção!).
Agora acabou! Espero que usem com sabedoria as informações aqui detalhadas e
que sejam também úteis no desenvolvimento da sua pesquisa.
Capítulo 3
Introdução
5
CAPÍTULO 3. INTRODUÇÃO 6
dou na gerência do material. Como ele estava bem ambientado com isto eu deixei
para ele esta tarefa (monstruosa) de gerenciar todo o parque de máquinas do De-
partamento. E assim finda minha trajetória na "Sala de Micros". Bom as vezes eu
dava uns pitacos, como por exemplo, arranjar mais nomes de máquinas do mesmo
livro, nada importante. Agradeço imensamente aos professores Armando Delgado
e Heraldo (não me lembro do sobrenome dele e ele não faz mais parte da UFPR),
do Departamento de Informática, entre outros que me ajudaram em muito desde o
início da minha empreitada.”
Figura 3.1: Monte hoggar, região central do deserto do Saara ao sul da Argélia, com
2,908 m de altitude. As montanhas cobrem uma área de aproximadamente 550,000
km2 . Fonte: Mohammed Amri, https://en.wikipedia.org/wiki/hoggar_Mountains
para os que o utilizam pela primeira vez. Portanto, apresentamos aqui uma breve
introdução sobre a utilização do Linux.
3.3.1 O terminal
A maioria de nós está acostumada com os sistemas de janelas, nos quais podemos
interagir com pastas e arquivos clicando neles com o mouse. Na maioria dos sistemas
Linux não é diferente, e você pode interagir assim graficamente através de janelas.
Mas há também no Linux uma forma alternativa de interagir com o computador: o
*terminal*. O terminal é um ambiente no qual se digita comandos para o computador
em forma de texto (e portanto, de forma não gráfica). Apesar de ser mais chato digitar
texto pro computador ao invés de usar o mouse, o terminal permite uma especificação
melhor do que você quer que o computador faça. A Fig. 3.2 mostra o visual que você
pode esperar de um terminal típico.
resultado do comando será impresso no terminal, abaixo do seu comando. Por exem-
plo, se você abrir um terminal, escrever pwd e dar Enter, um texto parecido com
"/home/usuario/"deve aparecer no seu terminal. Depois de mostrar o resultado do
comando, seu terminal volta a ficar disponível para receber outro comando.
Uma coisa importante a saber sobre o terminal é que você sempre "está dentro de
uma pasta". Quer dizer, sempre existe uma pasta (ou diretório, como é chamado no
Linux) que está atualmente aberta no seu terminal. Para descobrir o que tem dentro
da pasta atual do seu terminal, você pode executar o comando ls. Ele imprime no
terminal o conteúdo do diretório atual. Note que esse diretório que está aberto é o
mesmo que você acessa usando o gerenciador de arquivos normal, conforme mostra
a Fig. 3.5.
Para descobrir em qual pasta você "está"atualmente, você pode rodar o comando
pwd. Ele imprime o caminho completo do sistema até chegar na sua pasta atual.
Você pode mudar a pasta que você “está” atualmente no terminal com o comando
cd + o nome da pasta alvo. Por exemplo, existe uma pasta "Documentos"dentro do
diretório atual, você pode executar o comando cd Documentos para entrar na pasta
Documentos. Se você fizer isso, o diretório atual do seu terminal passa a ser o Do-
cumentos, e todos comandos que você digitar vão ser referentes a essa pasta. Se
você executar ls, vão ser exibidos os arquivos dentro da pasta Documentos. Se você
executar pwd, será exibido o caminho até o diretório Documentos, e assim por diante.
Para retornar à pasta anterior execute o comando cd .. (cd + espaço + dois pontos).
Serão criados dois arquivos, “arquivo” e “arquivo.pub”. Sugiro usar um nome sugestivo,
como fisica. No que se segue os comandos estão escritos para essa convenção. O
programa pede uma frase de acesso; é fundamental colocar uma frase longa (mais de
CAPÍTULO 3. INTRODUÇÃO 10
Se na maior parte das vezes for usar o ssh para conectar no departamento, é melhor
mudar o nome do arquivo:
porque esse é o default do programa. Envie fisica.pub por email para seu endereço
na hoggar (nick@fisica.ufpr.br), na forma de anexo. Note a extensão .pub.
Pronto, agora você será capaz de acessar as máquinas de cálculo disponíveis no PPG-
Fis! Lembrando que no primeiro uso é necessário liberar o acesso às servidoras,
conforme exposto na Seção 4.3 do Cap. 4.
ou
Se não tiver mudado o nome do arquivo de chave para id_rsa é necessário especificá-lo
na linha de comando:
Esse comando vai retornar ao prompt da sua máquina após pedir a frase de acesso,
e vai abrir uma janela da hoggar em sua tela. Dessa janela é possível rodar qualquer
programa, gráfico ou não. O programa vai rodar na hoggar e o resultado vai para
sua tela. A única desvantagem desse método é a necessidade de uma rede rápida.
Se a conexão é lenta, como por exemplo via modem, o tempo para abrir uma janela
ou o netscape é de cerca de 3 minutos ou mais :-( Para transferir arquivos usa-se o
comando scp, que é análogo ao cp mas exige autenticação e transfere os arquivos
usando criptografia. Leia o manual, man scp.
Se quiser usar o mozilla em sua máquina para lidar com o email use os comandos
abaixo antes de abrir a conexão de email:
qui@hoggar.fisica.ufpr.br
ui@hoggar.fisica.ufpr.br
É preciso configurar o mozilla (ou outro como Kmail, etc.) para usar as portas 1234
para puxar o email e 1235 para mandar, sempre com o servidor pop3 e smtp sendo
localhost. Os números 123[45] não são essenciais, basta que sejam portas desocupadas
em sua máquina. O melhor é usar números maiores que 1024.
A única vantagem de rodar o programa de email em sua máquina em vez da
hoggar é a velocidade. Se a rede for rápida (ex. se for DSL) não vale a pena.
Capítulo 4
Usando a hoggar
Nos capítulos anteriores vimos o que é a hoggar e como acessá-la. Agora vere-
mos como de fato usar a hoggar para executar os programas de interesse (isto é,
como "rodar as contas"). Para isso, é necessária uma noção do Linux - nada demais,
mas recomendamos que você dê uma olhada no capítulo anterior se não se sentir
confortável com esse sistema.
Para começar, precisamos acessar a hoggar. A seção 3.5 descreve como fazer isso.
Dando certo, você passa a ter acesso à máquina principal. Os programas pesados
não devem ser rodados nela, mas nas servidoras (também chamadas de máquinas,
simplesmente), que são dedicadas justamente para isso.
hoggar% carga
Ele irá retornar uma lista com (i) o nome de todas as servidoras (máquinas) co-
nectadas à hoggar; (ii) o número de jobs em cada máquina (i.e. de processos rodando
lá); (iii) os professores com prioridade para acesso à cada máquina; (iv) a memória
ram total em cada uma, em GB (v) o clock dos processadores da máquinas (basica-
mente, a velocidade deles) e (vi) o número de cores em cada processador (de forma
simplificada, quantos jobs a máquina pode rodar simultaneamente). O comando leva
um tempinho para terminar, não se preocupe se demorar um pouco. A figura 4.1
mostra um exemplo do retorno desse comando.
Se uma máquina estiver inoperante, isso será dito no lugar do número de jobs.
Você pode acessar as máquinas com o comando
Isso abrirá outra janela com um terminal de acesso à servidora. Na seção seguinte,
veremos exatamente como rodar o programa na máquina. Agora, vamos ver como
decidir qual das várias máquinas usar. As outras informações do comando carga
ajudam a fazer essa escolha, mas não há regras formais específicas para isso: você
terá que tomar a decisão.
Um programa simples rodando na máquina ocupa 1 job em 1 core. Se a máquina
tiver cores desocupados, esse processo é simples: o programa usa 100% do poder de
13
CAPÍTULO 4. USANDO A HOGGAR 14
hoggar% libera-servcpu
servidora-de-calculo% libera-servcpu
se ainda assim não for possível executar seu código na servidora, entre em contato
com o administrador (Carlos).
CAPÍTULO 4. USANDO A HOGGAR 16
Basta reiniciar a máquina e seguir para os passos seguintes. Assim, para executar
o seu código na máquina selecionada, procedemos da mesma forma como faríamos
em qualquer computador:
servidora-de-calculo% <comando de execução> <executavel>
como "./executavel"(para executáveis do c/c++), ou "python executavel.py"(em Python),
"julia executavel.jl"(em Julia), e assim por diante para outros programas.
Com isso, você precisa esperar o programa terminar de rodar. É claro que se fosse
tão fácil não precisaríamos usar a hoggar! Geralmente os programas demoram, e
queremos poder deixá-los rodando na servidora, e ir fazer outra coisa - até mesmo
poder sair da hoggar. Para isso, use o comando
servidora-de-calculo% nohup <comando> <executavel> &
O primeira parte, nohup, torna o executavel independente do terminal que você
abriu. O segundo, &, põe o comando no background. O & é útil em várias situações,
pois permite que você rode um comando e continue com acesso ao terminal enquanto
ele roda. Com ambas as partes, você pode deixar o executável rodando e fechar o
terminal, até mesmo sair da hoggar, e ele permanecerá rodando.
O comando nohup cria um arquivo chamado “nohup.out". Qualquer mensagem
que seria mostrada no terminal é, ao invés, escrita nele. Se o seu programa terminar
em erro, por exemplo, você poderá ver a mensagem de erro nele (por exemplo, com
“cat nohup.out").
Esse é o básico, bastante simples, de como rodar os programas. Para programas
ou linguagens específicos, veja o capítulo 6. No resto desse capítulo, veremos mais
algumas dicas gerais para rodar programas.
hoggar% quota -s
Ele irá dizer o espaço máximo disponível para você (em limit), e quanto espaço
você está ocupando (em space). É importantíssimo que vocẽ tome cuidado para não
salvar arquivos mais pesados do que a sua cota permite. Se um programa seu tentar
escrever um arquivo e você não tiver mais cota, o arquivo não será escrito, e o
programa continuará, de modo que você vai perder dados e pode demorar a perceber.
Por isso, recomenda-se 1 que você organize bem os arquivos e tome cuidado com a
sua cota.
Lembre-se que as servidoras têm acesso ao diretório “home/jobs/seuusuario", mas
não ao “/home/posgrad/seuusuario".
Além disso, para saber quanto espaço os arquivos seus arquivos ocupam, pode
ter uma ideia pelo comando clássico “ls", mas também pode usar “du -h <nomedo-
arquivo>". Se quiser saber o espaço de todos os arquivos num diretório, e nos seus
subdiretórios, pode usar “du -h". Se quiser estabelecer um threshold para que o co-
mando não imprima arquivos muito leves, use "”-t 1000M", para que apenas arquivos
com tamanho maior que 1000Mb sejam escolhidos. Se quiser saber a soma dos ta-
manho, use a flag “-s". Em resumo, para descobrir o tamanho ocupado num diretório
todo, use o comando
hoggar% du -sh
oggar.fisica.ufpr.br:/home/jobs/kalel /home/kalel/hoggar’
antes de executar qualquer comando, crie a pasta hoggar dentro de sua home de
usuário. Com o comando hoggar você acessa o gerenciador das máquinas de cálculo,
com mhoggar é montada a pasta /home/kalel/hoggar/ que espelha seus arquivos das
servidoras em seu computador, e por fim, unhoggar desmonta essa pasta.
Essas linhas podem ser adicionadas ao arquivo .bashrc (ou .zshrc, se você usa
zsh), que ficam geralmente no seu diretório "/home"(o alias ‘mhoggar’ é escrita em
uma única linha), simplesmente digitando ctrl+h (pois é um arquivo oculto). Se tiver
interesse em mais, pode contatar o Kalel Rossi em "kalelluizrossi@gmail.com", e ele
ficará feliz em passar outros, e explicar como todos eles salvam muito tempo.
Além de encurtar comandos, outra configuração bastante útil faz com que você
possa permanecer conectado à hoggar por wi-fi por mais tempo sem perder a cone-
xão. Para isso, siga os passos abaixo
2. Edite o arquivo ssh_config, com sudo gedit ssh_config (digite a sua senha
root).
Usando o lcpad
Esse trabalho foi parcialmente financiado pela FINEP através dos projetos CT-
INFRA/UFPR
e assim você será capaz de acessar facilmente os recursos do lcpad. Após esse co-
mando será solicitada a sua senha.
19
CAPÍTULO 5. USANDO O LCPAD 20
lcpad% carga
Ele irá retornar uma lista com (i) o nome de todas as servidoras (máquinas) exis-
tentes no lcpad; (ii) o número de jobs em cada máquina (i.e. de processos rodando lá);
(iii) a memória ram total em cada uma, em GB (iv) o clock dos processadores da má-
quinas (basicamente, a velocidade deles) e (v) o número de cores em cada processador
(de forma simplificada, quantos jobs a máquina pode rodar simultaneamente). Para
mais comando combinados ao carga, visite [2]. Assim como na hoggar, o comando
leva um tempinho para terminar, não se preocupe se demorar um pouco. A figura
5.1 mostra um exemplo do retorno desse comando.
Existem diversas máquinas adicionais (ver saída do comando normas) tais como
a01-a10, h01-h04, o01-o03 (dentre outras que estão ocultas). Se uma máquina estiver
inoperante, isso será dito no lugar do número de jobs (veja a máquina sgi-phi-1% da
Fig. 5.1).
Você pode acessar as máquinas com o comando
Isso fará com que o próprio terminal se torne o acesso à servidora (na hoggar
uma nova janela era criada). Agora, veremos como escolher qual dessas máquinas
você irá usar.
A lógica é a mesma: um programa simples rodando na máquina ocupa 1 job em
1 core. Se a máquina tiver cores desocupados, esse processo é simples: o programa
usa 100% do poder de processamento do core até terminar. Se, entretanto, os cores
já estiverem ocupados (i.e. se houver mais jobs do que número de cores), há um
processo de distribuição do tempo dos cores. Nesse caso, a distribuição de tempo de
CPU é feita de acordo com a prioridade de cada usuário.
Um ponto interessante é que não existe prioridade (ou proprietário) de tais máqui-
nas. Isso significa que você é livre para rodar em qualqur máquina os seus cálculos!
No entanto, recomendamos sempre o bom senso de escolher a servidora mais ‘va-
zia’ disponível, apesar de alguns usuários insistentemente lotarem máquinas que já
estão com o número de jobs igual ao de cores ocupados. Na seção seguinte, veremos
exatamente como rodar um programa na máquina.
lcpad% pwd
/home/users/fisica/aron
dentro dessa pasta você pode criar ou salvar qualquer arquivo. Como medida de
organização, crie pastas para guardar seus programas e resultados de interesse.
CAPÍTULO 5. USANDO O LCPAD 21
Essas linhas podem ser adicionadas ao arquivo .bashrc (ou .zshrc, se você usa zsh),
que ficam geralmente no seu diretório /home/aron/ (para achá-lo digite ctrl+h, pois
se trata de um arquivo oculto).
Para atualizar tais alterações no .bashrc, faça
CAPÍTULO 5. USANDO O LCPAD 23
Lembre-se de criar uma pasta com o nome lcpad na sua home, ou seja,
pronto! Com o comando lcpad você acessa o gerenciador das máquinas de cálculo,
com mlcpad é montada a pasta /home/aron/lcpad/ que espelha seus arquivos das
servidoras em seu computador, e por fim, unlcpad desmonta essa pasta.
Capítulo 6
Programas específicos
Lembrando que nosso exemplo vai ser para o Gaussian16, mas pode ser usado
para instalar o Gaussian09, onde estiver g16 você coloca g09.
Parte 1
Compactar o g16 para um arquivo rar que está no meu computador (zip não
funciona). Comando para compactar:
Abro meu terminal no local onde esta meu arquivo compactado g16.rar e entro na
hoggar pelo login sftp, para colocar o arquivo compactado na minha pasta. Exemplo:
$ cd ..
$ cd ../jobs/joaojp
Dentro da sua pasta na hoggar, você usa o comando abaixo para jogar o arquivo
do meu PC para dentro da hoggar:
$ put g16.rar
Abro outro terminal, mas com o login ssh para descompactar o arquivo g16.rar,
você pode usar o comando:
24
CAPÍTULO 6. PROGRAMAS ESPECÍFICOS 25
$ unrar x g16.rar
Após descompactar o arquivo você vai digitar os comandos abaixo para liberar
algumas licenças:
Parte 2
Dentro da hoggar pelo login ssh, eu vou chamar a maquina que desejo rodar meu
programa, como por exemplo a maquina pilat. (lembrando que os professores tem
suas maquinas que servem para o seu grupo de pesquisa e as universais que abrangem
todos os alunos.)
$ win pilat
Dentro da pilat eu preciso dar o comando bash e depois ir ate o local para criar
minha pasta. Segue os comandos abaixo.
$ bash
$ cd ..
$ cd ..
$ cd ..
Após esse comandos, você vai usar o comando ls para ver o que tem dentro deste
local onde você está.
$ ls
Apos este comando você vai ver que temos as pasta scratch ou tmp, você pode
criar sua pasta com seu nome em qualquer uma. No nosso exemplo vamos criar
nossa pasta na scratch. Segue o comando abaixo para entrar na pasta.
$ cd ../scratch
Dentro da pasta você cria uma pasta com o nome do seu login, como por exemplo.
$ mkdir joaojp
Após este comando eu fecho todos os terminais que estou na hoggar que o pro-
grama vai estar instalado. Lembrando que nosso exemplo foi para a maquina pilat,
mas quando for usar outra maquina você precisa repetir a parte 2 deste tutorial.
Parte 3
#!/bin/sh
g16root="/home/users/joaojp"
casa=‘hostname‘
GAUSS_SCRDIR="/scratch/joaojp"
export g16root GAUSS_SCRDIR
. $g16root/g16/bsd/g16.profile
g16 <$1.gjf > $1.$casa.out
Onde estiver o nome joaojp você muda para seu o login, veja que temos a linha
abaixo.
GAUSS_SCRDIR="/scratch/joaojp"
Você precisa colocar se esta usando a pasta scratch ou tmp. Se você estiver usando
uma maquina que sua pasta esteja dentro da pasta tmp, como por exemplo a cyre,
você precisa fazer um no arquivo sh mudando de scratch para tmp seguindo a parte
3 deste tutorial.
Em seguida no terminal ssh você vai dar o comando abaixo para tornar o ar-
quivo.sh em execultável.
$ chmod +x rodag16.sh
Parte 4
(repare que o arquivo não tem o complemento .gjf ou .com, que e gerado
pelo programa que desenha as moléculas)
[1] Richard L. Scheffel, Susan J. Wernet, et al., Natural Wonders of the World (Rea-
der’s Digest Association, United States of America, Inc. pp. 32–33. ISBN 0-89577-
087-3., 1980).
27