<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="pt-BR">
	<id>https://www.lcc.ufmg.br/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Admlccwiki</id>
	<title>Wiki LCC - Contribuições do(a) usuário(a) [pt-br]</title>
	<link rel="self" type="application/atom+xml" href="https://www.lcc.ufmg.br/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Admlccwiki"/>
	<link rel="alternate" type="text/html" href="https://www.lcc.ufmg.br/wiki/index.php/Especial:Contribui%C3%A7%C3%B5es/Admlccwiki"/>
	<updated>2026-05-13T12:24:24Z</updated>
	<subtitle>Contribuições do(a) usuário(a)</subtitle>
	<generator>MediaWiki 1.32.1</generator>
	<entry>
		<id>https://www.lcc.ufmg.br/wiki/index.php?title=Acesso_via_SSH_a_M%C3%A1quinas_Virtuais&amp;diff=303</id>
		<title>Acesso via SSH a Máquinas Virtuais</title>
		<link rel="alternate" type="text/html" href="https://www.lcc.ufmg.br/wiki/index.php?title=Acesso_via_SSH_a_M%C3%A1quinas_Virtuais&amp;diff=303"/>
		<updated>2025-08-27T14:33:04Z</updated>

		<summary type="html">&lt;p&gt;Admlccwiki: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt; '''Seção 1. Para Usuários Internos (com conta Minha UFMG)&lt;br /&gt;
'''&lt;br /&gt;
 '''Modelo de credencial: ssh usuariominhaufmg@nomemaquina.lcc.ufmg.br&lt;br /&gt;
'''&lt;br /&gt;
 ATENÇÃO:&lt;br /&gt;
 - É necessário que o usuário já possua o login minhaUFMG.&lt;br /&gt;
 - Caso  você  não  possua ou não saiba sua  senha, entre  em  contato  com  a  DTI  (Diretoria  de  Tecnologia da Informação):&lt;br /&gt;
  Telefone: (31) 3409-4009&lt;br /&gt;
  E-mail: suporte@dti.ufmg.br&lt;br /&gt;
&lt;br /&gt;
'''Passo a passo:&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
1. Abra um terminal.&lt;br /&gt;
&lt;br /&gt;
2. Digite substituindo com suas informações: '''ssh usuariominhaufmg@nomemaquina.lcc.ufmg.br'''&lt;br /&gt;
&lt;br /&gt;
3. Digite sua senha da minhaUFMG quando solicitado.&lt;br /&gt;
&lt;br /&gt;
 '''Exemplo:''' ssh joaosilva@vm001.lcc.ufmg.br&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
 '''Seção 2. Para Usuários Externos (sem conta minhaUFMG)&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
 ATENÇÃO: É necessário que o usuário aguarde o cadastro e retorno departamental para primeiro acesso.&lt;br /&gt;
&lt;br /&gt;
 '''Modelo de credencial:''' ssh cpf@nomemaquina.lcc.ufmg.br&lt;br /&gt;
 '''Senha padrão inicial:''' disponibiizada ao autor da conta.&lt;br /&gt;
&lt;br /&gt;
'''Passo a passo:&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
1. Abra um terminal.&lt;br /&gt;
&lt;br /&gt;
2. Digite substituindo com suas informações: '''ssh cpf@nomemaquina.lcc.ufmg.br'''&lt;br /&gt;
&lt;br /&gt;
 '''Exemplo:''' ssh 123456789@vm001.lcc.ufmg.br&lt;br /&gt;
 &lt;br /&gt;
3. Quando solicitado, insira a senha padrão, com seus dados como no modelo credencial:&lt;br /&gt;
 &lt;br /&gt;
'''Exemplo: 123456789********@****&lt;br /&gt;
'''&lt;br /&gt;
'''Nota''' - caracteres foram ocultados para fins de exibição.&lt;br /&gt;
&lt;br /&gt;
 '''DICAS GERAIS:'''&lt;br /&gt;
 - Ao incluir a senha padrão, você deverá registrar uma nova senha diferente da já inserida;&lt;br /&gt;
 - O nome da máquina ('''nomemaquina.lcc.ufmg.br''') será fornecido pela instituição;&lt;br /&gt;
 - Caso você receba a mensagem permission denied, verifique se você digitou corretamente a senha.&lt;br /&gt;
&lt;br /&gt;
- Elaborado por Pedro Artur Lourenço - Técnico de Tecnologia da Informação.&lt;br /&gt;
[[Categoria:Manuais]]&lt;/div&gt;</summary>
		<author><name>Admlccwiki</name></author>
		
	</entry>
	<entry>
		<id>https://www.lcc.ufmg.br/wiki/index.php?title=Acesso_via_SSH_a_M%C3%A1quinas_Virtuais&amp;diff=302</id>
		<title>Acesso via SSH a Máquinas Virtuais</title>
		<link rel="alternate" type="text/html" href="https://www.lcc.ufmg.br/wiki/index.php?title=Acesso_via_SSH_a_M%C3%A1quinas_Virtuais&amp;diff=302"/>
		<updated>2025-08-27T14:31:16Z</updated>

		<summary type="html">&lt;p&gt;Admlccwiki: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt; '''Seção 1. Para Usuários Internos (com conta Minha UFMG)&lt;br /&gt;
'''&lt;br /&gt;
 '''Modelo de credencial: ssh usuariominhaufmg@nomemaquina.lcc.ufmg.br&lt;br /&gt;
'''&lt;br /&gt;
 ATENÇÃO:&lt;br /&gt;
 - É necessário que o usuário já possua o login minhaUFMG.&lt;br /&gt;
 - Caso  você  não  possua ou não saiba sua  senha, entre  em  contato  com  a  DTI  (Diretoria  de  Tecnologia da Informação):&lt;br /&gt;
  Telefone: (31) 3409-4009&lt;br /&gt;
  E-mail: suporte@dti.ufmg.br&lt;br /&gt;
&lt;br /&gt;
'''Passo a passo:&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
1. Abra um terminal.&lt;br /&gt;
&lt;br /&gt;
2. Digite substituindo com suas informações: '''ssh usuariominhaufmg@nomemaquina.lcc.ufmg.br'''&lt;br /&gt;
&lt;br /&gt;
3. Digite sua senha da minhaUFMG quando solicitado.&lt;br /&gt;
&lt;br /&gt;
 '''Exemplo:''' ssh joaosilva@vm001.lcc.ufmg.br&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
 '''Seção 2. Para Usuários Externos (sem conta minhaUFMG)&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
 ATENÇÃO: É necessário que o usuário aguarde o cadastro e retorno departamental para primeiro acesso.&lt;br /&gt;
&lt;br /&gt;
 '''Modelo de credencial:''' ssh cpf@nomemaquina.lcc.ufmg.br&lt;br /&gt;
 '''Senha padrão inicial:''' disponibiizada ao autor da conta.&lt;br /&gt;
&lt;br /&gt;
'''Passo a passo:&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
1. Abra um terminal.&lt;br /&gt;
&lt;br /&gt;
2. Digite substituindo com suas informações: '''ssh cpf@nomemaquina.lcc.ufmg.br'''&lt;br /&gt;
&lt;br /&gt;
 '''Exemplo:''' ssh 123456789@vm001.lcc.ufmg.br&lt;br /&gt;
 &lt;br /&gt;
3. Quando solicitado, insira a senha padrão, com seus dados como no modelo credencial:&lt;br /&gt;
 &lt;br /&gt;
'''Exemplo: 123456789********@****&lt;br /&gt;
'''&lt;br /&gt;
'''Nota''' - caracteres foram ocultados para fins de exibição.&lt;br /&gt;
&lt;br /&gt;
 '''DICAS GERAIS:'''&lt;br /&gt;
 - Ao incluir a senha padrão, você deverá registrar uma nova senha diferente da já inserida;&lt;br /&gt;
 - O nome da máquina ('''nomemaquina.lcc.ufmg.br''') será fornecido pela instituição;&lt;br /&gt;
 - Caso você receba a mensagem permission denied, verifique se você digitou corretamente a senha.&lt;br /&gt;
&lt;br /&gt;
[[Categoria:Manuais]]&lt;/div&gt;</summary>
		<author><name>Admlccwiki</name></author>
		
	</entry>
	<entry>
		<id>https://www.lcc.ufmg.br/wiki/index.php?title=Acesso_via_SSH_a_M%C3%A1quinas_Virtuais&amp;diff=301</id>
		<title>Acesso via SSH a Máquinas Virtuais</title>
		<link rel="alternate" type="text/html" href="https://www.lcc.ufmg.br/wiki/index.php?title=Acesso_via_SSH_a_M%C3%A1quinas_Virtuais&amp;diff=301"/>
		<updated>2025-08-27T14:30:13Z</updated>

		<summary type="html">&lt;p&gt;Admlccwiki: Acesso ssh via máquinas projeto Proxmox Multi01 - Autor Pedro Artur Lourenço&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt; '''Seção 1. Para Usuários Internos (com conta Minha UFMG)&lt;br /&gt;
'''&lt;br /&gt;
 '''Modelo de credencial: ssh usuariominhaufmg@nomemaquina.lcc.ufmg.br&lt;br /&gt;
'''&lt;br /&gt;
 ATENÇÃO:&lt;br /&gt;
 - É necessário que o usuário já possua o login minhaUFMG.&lt;br /&gt;
 - Caso  você  não  possua ou não saiba sua  senha, entre  em  contato  com  a  DTI  (Diretoria  de  Tecnologia da Informação):&lt;br /&gt;
  Telefone: (31) 3409-4009&lt;br /&gt;
  E-mail: suporte@dti.ufmg.br&lt;br /&gt;
&lt;br /&gt;
'''Passo a passo:&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
1. Abra um terminal.&lt;br /&gt;
&lt;br /&gt;
2. Digite substituindo com suas informações: '''ssh usuariominhaufmg@nomemaquina.lcc.ufmg.br'''&lt;br /&gt;
&lt;br /&gt;
3. Digite sua senha da minhaUFMG quando solicitado.&lt;br /&gt;
&lt;br /&gt;
 '''Exemplo:''' ssh joaosilva@vm001.lcc.ufmg.br&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
 '''Seção 2. Para Usuários Externos (sem conta minhaUFMG)&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
 ATENÇÃO: É necessário que o usuário aguarde o cadastro e retorno departamental para primeiro acesso.&lt;br /&gt;
&lt;br /&gt;
 '''Modelo de credencial:''' ssh cpf@nomemaquina.lcc.ufmg.br&lt;br /&gt;
 '''Senha padrão inicial:''' disponibiizada ao autor da conta.&lt;br /&gt;
&lt;br /&gt;
'''Passo a passo:&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
1. Abra um terminal.&lt;br /&gt;
&lt;br /&gt;
2. Digite substituindo com suas informações: '''ssh cpf@nomemaquina.lcc.ufmg.br'''&lt;br /&gt;
&lt;br /&gt;
 '''Exemplo:''' ssh 123456789@vm001.lcc.ufmg.br&lt;br /&gt;
 &lt;br /&gt;
3. Quando solicitado, insira a senha padrão, com seus dados como no modelo credencial:&lt;br /&gt;
 &lt;br /&gt;
'''Exemplo: 123456789********@****&lt;br /&gt;
'''&lt;br /&gt;
'''Nota''' - caracteres foram ocultados para fins de exibição.&lt;br /&gt;
&lt;br /&gt;
 '''DICAS GERAIS:'''&lt;br /&gt;
 - Ao incluir a senha padrão, você deverá registrar uma nova senha diferente da já inserida;&lt;br /&gt;
 - O nome da máquina ('''nomemaquina.lcc.ufmg.br''') será fornecido pela instituição;&lt;br /&gt;
 - Caso você receba a mensagem permission denied, verifique se você digitou corretamente a senha.&lt;br /&gt;
&lt;br /&gt;
[[Categoria:Materiais]]&lt;/div&gt;</summary>
		<author><name>Admlccwiki</name></author>
		
	</entry>
	<entry>
		<id>https://www.lcc.ufmg.br/wiki/index.php?title=Slurm_-_Avicena&amp;diff=300</id>
		<title>Slurm - Avicena</title>
		<link rel="alternate" type="text/html" href="https://www.lcc.ufmg.br/wiki/index.php?title=Slurm_-_Avicena&amp;diff=300"/>
		<updated>2021-10-27T14:13:53Z</updated>

		<summary type="html">&lt;p&gt;Admlccwiki: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;O [https://slurm.schedmd.com/ '''''Slurm Workload Manager'''''] (anteriormente conhecido como ''Simple Linux Utility for Resource Management'' ou SLURM), ou Slurm, é num escalonador de tarefas gratuito e de código aberto para Linux e kernels similares ao Unix, usado por muitos dos supercomputadores e clusters de computadores do mundo. O Slurm Workload Manager possui três funções principais:&lt;br /&gt;
* alocar nós computacionais para acesso exclusivo e/ou não-exclusivo (compartilhado) aos usuários por um determinado período de tempo necessário para executar as tarefas computacionais submetidas (''jobs'').&lt;br /&gt;
* oferece um ambiente integrado que permite executar e monitorar em tempo real as tarefas lançadas nos nós computacionais alocados.&lt;br /&gt;
* gerencia a fila de submissão, arbitrando conflitos entre os pedidos de recursos computacionais.&lt;br /&gt;
&lt;br /&gt;
== Comandos do Slurm ==&lt;br /&gt;
Segue abaixo, uma lista de comandos úteis disponíveis para o Slurm que permite a interação dos usuários. A lista completa de comandos por ser encontrada na documentação oficial do Slurm através do link [https://slurm.schedmd.com/quickstart.html https://slurm.schedmd.com/quickstart.html]&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot; width=100%  border=1 cellpadding=35px  &lt;br /&gt;
!|Comando&lt;br /&gt;
!|Descrição do comando&lt;br /&gt;
|-&lt;br /&gt;
|'''SRUN'''&lt;br /&gt;
|Submete na linha de comando um job para execução.&lt;br /&gt;
|-&lt;br /&gt;
|'''SBATCH'''&lt;br /&gt;
|Submete scripts shell (eg. bash) para a fila de espera do SLURM.&lt;br /&gt;
|-&lt;br /&gt;
|'''SALLOC'''&lt;br /&gt;
|Reserva recursos do cluster (tempo de cpu, memória, quantidade de nós, etc) para a execução de uma tarefa computacional.&lt;br /&gt;
|-&lt;br /&gt;
|'''SBCAST'''&lt;br /&gt;
|Para transmissão de um arquivo para todos os nós que foram alocados para um determinado job.&lt;br /&gt;
|-&lt;br /&gt;
|'''SCANCEL'''&lt;br /&gt;
|Para cancelar um job que esteja sendo executado ou que ainda esteja na fila de espera.&lt;br /&gt;
|-&lt;br /&gt;
|'''SQUEUE'''&lt;br /&gt;
|Para monitorar o estado dos jobs nas diversas filas de espera do SLURM.&lt;br /&gt;
|-&lt;br /&gt;
|'''SINFO'''&lt;br /&gt;
|Para monitorar o estado global das partições configuradas (filas).&lt;br /&gt;
|-&lt;br /&gt;
|'''SVIEW'''&lt;br /&gt;
|Providencia a integração de toda a informação e disponibiliza-a através de uma interface gráfica.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
Uma mnemônica muito útil é lembrar que todos os comandos do SLURM começam pela letra s. Todos os comandos possuem manuais que podem ser acessados online via linha de comando, '''man &amp;lt;comando&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
Exemplo com o comando '''sbatch''' :&lt;br /&gt;
&amp;lt;pre class=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
[test3@masternode  ~]$ man sbatch&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Em geral a grande maioria dos usuários precisa familiarizar-se com três comandos básicos do SLURM: '''sbatch, squeue e scancel'''. Assim como no PBS Pro, a submissão de uma tarefa envolve a elaboração de um script shell (em geral em bash) que possui no seu preâmbulo diretrizes específicas do SLURM. Essas diretrizes começam com a palavra-chave '''#SBATCH''' (o análogo da palavra-chave '''#PBS''' para o PBS Pro). No corpo do script é então chamado o executável do programa com os seus respectivos parâmetros.&lt;br /&gt;
&lt;br /&gt;
== Submissão de tarefas computacionais ==&lt;br /&gt;
&lt;br /&gt;
=== Filas de submissão ===&lt;br /&gt;
No UNIVERSO do SLURM o conceito de '''filas''' envolve a noção de partição de nós computacionais em grupos. Esses grupos não são necessariamente disjuntos (nós podem participar de mais de uma partição) e podem ser solicitados de acordo com a especificação de recursos do sistema (tempo de cpu, memória, etc). Para respeitar a herança do PBS Pro iremos nos referir indistintamente aos termos '''filas''' e '''partições'''.&lt;br /&gt;
&lt;br /&gt;
O cluster Veredas possui no momento três filas de submissão definidas apenas pelo recurso '''walltime''':&lt;br /&gt;
* partição '''long''': nós '''nodes[003-006]''' máximo 3 dias..&lt;br /&gt;
* partição '''short''': nós '''nodes[001-002]''' máximo 1 hora.&lt;br /&gt;
&lt;br /&gt;
O usuário poderá listar a qualquer momento os recursos oferecidos por cada partição com o seguinte comando:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
[test3@masternode ~]$ scontrol show partitions&lt;br /&gt;
PartitionName=short&lt;br /&gt;
   AllowGroups=ALL AllowAccounts=ALL AllowQos=ALL&lt;br /&gt;
   AllocNodes=ALL Default=YES QoS=N/A&lt;br /&gt;
   DefaultTime=NONE DisableRootJobs=NO ExclusiveUser=NO GraceTime=0 Hidden=NO&lt;br /&gt;
   MaxNodes=UNLIMITED MaxTime=01:00:00 MinNodes=0 LLN=NO MaxCPUsPerNode=UNLIMITED&lt;br /&gt;
   Nodes=node[001-002]&lt;br /&gt;
   PriorityJobFactor=1 PriorityTier=1 RootOnly=NO ReqResv=NO OverSubscribe=NO&lt;br /&gt;
   OverTimeLimit=NONE PreemptMode=OFF&lt;br /&gt;
   State=UP TotalCPUs=24 TotalNodes=2 SelectTypeParameters=NONE&lt;br /&gt;
   JobDefaults=(null)&lt;br /&gt;
   DefMemPerNode=UNLIMITED MaxMemPerCPU=3000&lt;br /&gt;
&lt;br /&gt;
PartitionName=long&lt;br /&gt;
   AllowGroups=ALL AllowAccounts=ALL AllowQos=ALL&lt;br /&gt;
   AllocNodes=ALL Default=NO QoS=N/A&lt;br /&gt;
   DefaultTime=NONE DisableRootJobs=NO ExclusiveUser=NO GraceTime=0 Hidden=NO&lt;br /&gt;
   MaxNodes=UNLIMITED MaxTime=3-00:00:00 MinNodes=0 LLN=NO MaxCPUsPerNode=UNLIMITED&lt;br /&gt;
   Nodes=node[003-006]&lt;br /&gt;
   PriorityJobFactor=1 PriorityTier=1 RootOnly=NO ReqResv=NO OverSubscribe=NO&lt;br /&gt;
   OverTimeLimit=NONE PreemptMode=OFF&lt;br /&gt;
   State=UP TotalCPUs=52 TotalNodes=4 SelectTypeParameters=NONE&lt;br /&gt;
   JobDefaults=(null)&lt;br /&gt;
   DefMemPerNode=UNLIMITED MaxMemPerCPU=3000&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ou através do seguinte comando,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
[test3@masternode ~]$ sinfo&lt;br /&gt;
PARTITION AVAIL TIMELIMIT NODES STATE NODELIST&lt;br /&gt;
short* up 1:00:00      1 idle node[001-002]&lt;br /&gt;
long   up 3-00:00:00   4 idle node[003-006]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para racionalizar a utilização de recursos é conveniente que o usuário respeite a real demanda de sua tarefa e submeta seu script à partição mais apropriada, ou seja, ''jobs'' de curta duração (&amp;lt; 1 hora) na partição '''short'''. Caso contrário, pode correr o risco de a sua solicitação permanecer por muito tempo na fila de espera.&lt;br /&gt;
&lt;br /&gt;
O estado dos ''jobs'' submetidos ou em execução poderá também ser examinado no SLURM através do comando '''squeue''', tal como era feito no PBS Pro com o comando ''qstat'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
[test3@masternode ~]$ squeue&lt;br /&gt;
  JOBID PARTITION NAME USER ST TIME NODES NODELIST(REASON)&lt;br /&gt;
    977 long     test   root  R      0:10      1 node004&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;aviso&amp;quot;&amp;gt;&lt;br /&gt;
'''Aviso:''' Os exemplos de scripts de submissão que se seguem são para propósitos ilustrativos e representam ''templates'' que os usuários poderão adaptar conforme as suas necessidades específicas.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Tarefas sequenciais ===&lt;br /&gt;
Executar um ''job'' sequencial é bastante simples. Basta requisitar a duração necessária para executar a tarefa. Qualquer tarefa puramente seqüencial, que não utiliza MPI ou ''threads'', irá usar necessariamente '''um core apenas''' do nó computacional.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH --job-name=&amp;quot;TESTJOB&amp;quot;&lt;br /&gt;
#SBATCH --ntasks=1&lt;br /&gt;
#SBATCH --time=01:00:00&lt;br /&gt;
&lt;br /&gt;
./a.out &amp;gt; OUTFILE&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Por padrão o ''output'' do ''script'' acima será redirecionado para um arquivo do tipo ''slurm-'''XXXX'''.out'', onde '''XXXX''' é o número do job que foi atribuído pelo SLURM. Este arquivo de ''output'' estará localizado no diretório de onde foi feita a submissão. O interessante a notar, e a que nos referiremos mais adiante (ver), é de que este arquivo é criado no instante da execução do ''script'' e o seu conteúdo aumenta à medida que o programa vai sendo executado. Remover este arquivo antes da finalização do job acarreta portanto perda total do output da tarefa. Diferentemente no PBS Pro os arquivos de output só eram criados na área do usuário depois de o job finalizar. É possível especificar um nome para o arquivo de output fazendo uso da diretriz '''''#SBATCH --output=meu_job.out'''''. O mesmo vale para o arquivo de erro, '''''#SBATCH --error=meu_job.err'''''.&lt;br /&gt;
&lt;br /&gt;
=== Tarefas paralelas (MPI) ===&lt;br /&gt;
Solicite quatro núcleos no cluster por 10 minutos, usando 100 MB de RAM por núcleo. Assumindo que hello.mpi foi compilado com suporte a MPI, srun irá criar quatro instâncias dele, nos nós alocados pelo Slurm:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --job-name=test_mpi&lt;br /&gt;
#SBATCH --output=res_mpi.txt&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --ntasks=4&lt;br /&gt;
#SBATCH --time=10:00&lt;br /&gt;
#SBATCH --mem-per-cpu=5000&lt;br /&gt;
module load gnu-mpi/mpich/3.4&lt;br /&gt;
&lt;br /&gt;
srun hello.mpi&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Segue o resultado da execução deste script:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
[test3@masternode]# cat res_mpi.txt&lt;br /&gt;
---------------------------------------------------------------------------------------------------------------&lt;br /&gt;
We have 4 processes.&lt;br /&gt;
Process 1 reporting for duty.&lt;br /&gt;
Process 2 reporting for duty.&lt;br /&gt;
Process 3 reporting for duty.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Tarefas paralelas com ''threads'' (OpenMP) ===&lt;br /&gt;
O trabalho será executado em uma alocação em que quatro núcleos foram reservados no mesmo nó de computação:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --job-name=test_omp&lt;br /&gt;
#SBATCH --output=res_omp.txt&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --ntasks=1&lt;br /&gt;
#SBATCH --cpus-per-task=10&lt;br /&gt;
#SBATCH --time=10:00&lt;br /&gt;
#SBATCH --mem-per-cpu=100&lt;br /&gt;
export OMP_NUM_THREADS=$SLURM_CPUS_PER_TASK&lt;br /&gt;
&lt;br /&gt;
./hello.omp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Como saída o arquivo res_omp contém:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
Hello World from thread 0&lt;br /&gt;
Hello World from thread 3&lt;br /&gt;
Hello World from thread 1&lt;br /&gt;
Hello World from thread 2&lt;br /&gt;
There are 4 threads&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Tarefas paralelas com ''threads'' (OpenMP + MPI) ===&lt;br /&gt;
Você pode misturar multiprocessamento (MPI) e multi-threading (OpenMP) no mesmo trabalho, simplesmente assim:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot;&amp;gt;&lt;br /&gt;
#! / bin / bash &lt;br /&gt;
# &lt;br /&gt;
#SBATCH --ntasks = 8 &lt;br /&gt;
#SBATCH --cpus-per-task = &lt;br /&gt;
module load gnu-mpi/openmpi/4.1&lt;br /&gt;
export OMP_NUM_THREADS = $ SLURM_CPUS_PER_TASK &lt;br /&gt;
&lt;br /&gt;
srun ./myprog&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Variáveis de ambiente do Slurm ===&lt;br /&gt;
Quaisquer variáveis de ambiente que você define com o comando '''sbatch''' serão passadas para o seu ''job''. Por esse motivo, se o seu programa precisar que determinadas variáveis de ambiente , é melhor colocá-las no ''script'' do seu ''job''. Isso também facilita a reprodução dos resultados do ''job'' posteriormente, caso você necessite.&lt;br /&gt;
A tabela abaixo, contém informações sobre algumas das variáveis de ambiente de entrada e saída mais comuns quando se usa o comando '''sbatch''' no ''script shell''. Para informações adicionais, veja a página man do '''sbatch''' ou acesse a documentação online no site oficial do Slurm [https://slurm.schedmd.com/sbatch.html https://slurm.schedmd.com/sbatch.html].&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot; width=100%  border=1 cellpadding=35px  &lt;br /&gt;
!|Variáveis de ambiente&lt;br /&gt;
!|Definição&lt;br /&gt;
|-&lt;br /&gt;
|'''SLURM_JOB_ID (and SLURM_JOBID for backwards compatibility)'''&lt;br /&gt;
|''The ID of the job allocation.''&lt;br /&gt;
|-&lt;br /&gt;
|'''SLURM_JOB_NAME'''&lt;br /&gt;
|''Name of the job.''&lt;br /&gt;
|-&lt;br /&gt;
|'''SLURM_JOB_NODELIST (and SLURM_NODELIST for backwards compatibility)'''&lt;br /&gt;
|''List of nodes allocated to the job.''&lt;br /&gt;
|-&lt;br /&gt;
|'''SLURM_JOB_NUM_NODES (and SLURM_NNODES for backwards compatibility)'''&lt;br /&gt;
|''Total number of different nodes in the job's resource allocation.''&lt;br /&gt;
|-&lt;br /&gt;
|'''SLURM_ARRAY_TASK_COUNT'''&lt;br /&gt;
|''Total number of tasks in a job array.''&lt;br /&gt;
|-&lt;br /&gt;
|'''SLURM_ARRAY_TASK_ID'''&lt;br /&gt;
|''Job array ID (index) number.''&lt;br /&gt;
|-&lt;br /&gt;
|'''SLURM_ARRAY_TASK_MAX'''&lt;br /&gt;
|''Job array's maximum ID (index) number.''&lt;br /&gt;
|-&lt;br /&gt;
|'''SLURM_ARRAY_TASK_MIN'''&lt;br /&gt;
|''Job array's minimum ID (index) number.''&lt;br /&gt;
|-&lt;br /&gt;
|'''SLURM_ARRAY_TASK_STEP'''&lt;br /&gt;
|''Job array's index step size.''&lt;br /&gt;
|-&lt;br /&gt;
|'''SLURM_ARRAY_JOB_ID'''&lt;br /&gt;
|''Job array's master job ID number.''&lt;br /&gt;
|-&lt;br /&gt;
|'''SLURM_CLUSTER_NAME'''&lt;br /&gt;
|''Name of the cluster on which the job is executing.''&lt;br /&gt;
|-&lt;br /&gt;
|'''SLURM_CPUS_ON_NODE'''&lt;br /&gt;
|''Number of CPUS on the allocated node.''&lt;br /&gt;
|-&lt;br /&gt;
|'''SLURM_CPUS_PER_TASK'''&lt;br /&gt;
|''Number of cpus requested per task. Only set if the '''--cpus-per-task''' option is specified.''&lt;br /&gt;
|-&lt;br /&gt;
|'''SLURM_JOB_ACCOUNT'''&lt;br /&gt;
|''Account name associated of the job allocation.''&lt;br /&gt;
|-&lt;br /&gt;
|'''SLURM_JOB_CPUS_PER_NODE'''&lt;br /&gt;
|''Count of processors available to the job on this node.''&lt;br /&gt;
|-&lt;br /&gt;
|'''SLURM_JOB_DEPENDENCY'''&lt;br /&gt;
|''Set to value of the '''--dependency''' option.''&lt;br /&gt;
|-&lt;br /&gt;
|'''SLURM_MEM_PER_NODE'''&lt;br /&gt;
|''Same as '''--mem'''.''&lt;br /&gt;
|-&lt;br /&gt;
|'''SLURM_MEM_PER_CPU'''&lt;br /&gt;
|''Same as '''--mem-per-cpu'''.''&lt;br /&gt;
|-&lt;br /&gt;
|'''SLURM_NTASKS (and SLURM_NPROCS for backwards compatibility)'''&lt;br /&gt;
|''Same as '''-n, --ntasks'''''.&lt;br /&gt;
|-&lt;br /&gt;
|'''SLURM_NTASKS_PER_NODE'''&lt;br /&gt;
|''Number of tasks requested per node. Only set if the '''--ntasks-per-node''' option is specified.''&lt;br /&gt;
|-&lt;br /&gt;
|'''SLURM_NTASKS_PER_SOCKET'''&lt;br /&gt;
|''Number of tasks requested per socket. Only set if the '''--ntasks-per-socket''' option is specified.''&lt;br /&gt;
|-&lt;br /&gt;
|'''SLURM_SUBMIT_DIR'''&lt;br /&gt;
|''The directory from which '''sbatch''' was invoked.''&lt;br /&gt;
|-&lt;br /&gt;
|'''SLURM_SUBMIT_HOST'''&lt;br /&gt;
|''The hostname of the computer from which '''sbatch''' was invoked.''&lt;br /&gt;
|-&lt;br /&gt;
|'''SLURM_TASK_PID'''&lt;br /&gt;
|''The process ID of the task being started.''&lt;br /&gt;
|-&lt;br /&gt;
|'''SLURMD_NODENAME'''&lt;br /&gt;
|''Name of the node running the job script.''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Comparação entre o SLURM e o PBS Pro ==&lt;br /&gt;
Segue alguns comandos essenciais do SLURM e seus equivalentes no PBS Pro.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot; width=80%  border=1 cellpadding=35px  &lt;br /&gt;
!|Comando Slrum&lt;br /&gt;
!|Descrição do comando&lt;br /&gt;
!|Comando PBS Pro&lt;br /&gt;
|-&lt;br /&gt;
|'''srun'''&lt;br /&gt;
|submete um comando via SLURM no modo interativo.&lt;br /&gt;
|'''qsub -I'''&lt;br /&gt;
|-&lt;br /&gt;
|'''sbatch'''&lt;br /&gt;
|submete um ''script shell''.&lt;br /&gt;
|'''qsub'''&lt;br /&gt;
|-&lt;br /&gt;
|'''squeue'''&lt;br /&gt;
|lista todos os ''jobs'' (em execução ou no modo de espera) nas filas.&lt;br /&gt;
|'''qstat'''&lt;br /&gt;
|-&lt;br /&gt;
|'''scontrol'''&lt;br /&gt;
|modifica o estado de um ''job'' (maioria só é permitida ao ''root'').&lt;br /&gt;
|'''qalter'''&lt;br /&gt;
|-&lt;br /&gt;
|'''scancel'''&lt;br /&gt;
|cancela um ''job'', quer em execução ou na fila de espera.&lt;br /&gt;
|'''qdel'''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Variáveis de ambiente ===&lt;br /&gt;
Existem também algumas diferenças no tocante às variáveis de ambiente como ilustra a tabela abaixo:&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot; width=40%  border=1 cellpadding=35px  &lt;br /&gt;
!|Comando Slrum&lt;br /&gt;
!|Descrição do comando&lt;br /&gt;
|-&lt;br /&gt;
|$SLURM_JOB_ID&lt;br /&gt;
|$PBS_JOBID&lt;br /&gt;
|-&lt;br /&gt;
|$SLURM_JOB_NAME&lt;br /&gt;
|$PBS_JOBNAME&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
O SLURM não possui o equivalente à variável '''$PBS_NODEFILE''' que aponta para o arquivo que contém os nomes dos nós computacionais reservados para a execução do ''job''. Contudo, quando necessário, é possível criar manualmente esse tipo de arquivo com o comando '''srun''':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash -x&lt;br /&gt;
&lt;br /&gt;
HOSTFILE=/tmp/hosts.$SLURM_JOB_ID&lt;br /&gt;
&lt;br /&gt;
srun hostname -s &amp;gt; $HOSTFILE&lt;br /&gt;
&lt;br /&gt;
if [ -z &amp;quot;$SLURM_NPROCS&amp;quot; ] ; then&lt;br /&gt;
  if [ -z &amp;quot;$SLURM_NTASKS_PER_NODE&amp;quot; ] ; then&lt;br /&gt;
    SLURM_NTASKS_PER_NODE=1&lt;br /&gt;
  fi&lt;br /&gt;
    SLURM_NPROCS=$(( $SLURM_JOB_NUM_NODES * $SLURM_NTASKS_PER_NODE ))&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
/path/to/mpirun -machinefile $HOSTFILE -np $SLURM_NPROCS programa.x&lt;br /&gt;
&lt;br /&gt;
rm /tmp/hosts.$SLURM_JOB_ID&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Diretório de execução ===&lt;br /&gt;
Uma outra diferença importante que distingue o '''SLURM''' do '''PBS Pro''' é que enquanto no primeiro escalonador a tarefa batch é executada automáticamente no diretório de onde foi submetido o seu script, o segundo precisa explicitamente que seja introduzida a seguinte linha:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash -x&lt;br /&gt;
...&lt;br /&gt;
cd $PBS_O_WORKDIR&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As variáveis de ambiente que são definidas durante uma sessão shell do '''SLURM''' são automáticamente exportadas para o ''job batch'' em todos os nós computacionais no instante em que o script entra em execução. Já no '''PBS Pro''' é necessário garantir isso com a introdução da diretriz:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash -x&lt;br /&gt;
...&lt;br /&gt;
#PBS -V&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Output ===&lt;br /&gt;
O '''SLURM''' apresenta ainda uma vantagem considerável e muito útil para aqueles usuários que precisam inspecionar numéricamente e em tempo real a evolução do seu programa, como por exemplo, a convergência de uma determinada iteração: os arquivos de saída '''stdout''' e de erro, '''stderr''' (ver as flags do SLURM) , são criados automáticamnte no diretório de onde foi submetido o script e vão crescendo gradualmente de tamanho à medida que a simulação evolui no tempo. O '''PBS Pro''' mostra-se insuficiente neste quesito: somente no final da execução da tarefa é que os arquivos de saída são escritos no diretório destinado.&lt;br /&gt;
&lt;br /&gt;
=== Diretrizes de submissão ===&lt;br /&gt;
Finalmente com o intuito de auxiliar os usuários na migração dos seus scripts de submissão do '''PBS Pro''' para o '''SLURM''' apresentamos a seguinte tabela comparativa das diretrizes de submissão:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot; width=60%  border=1 cellpadding=35px  &lt;br /&gt;
!|PBS Pro&lt;br /&gt;
!|Slurm&lt;br /&gt;
|-&lt;br /&gt;
|#PBS -N job_name&lt;br /&gt;
|#SBATCH –job-name=”job_name” ou #SBATCH -J job_name&lt;br /&gt;
|-&lt;br /&gt;
|#PBS -l nodes=n&lt;br /&gt;
|#SBATCH –nodes=n&lt;br /&gt;
|-&lt;br /&gt;
|#PBS -l walltime=HH:MM:SS&lt;br /&gt;
|#SBATCH –time=HH:MM:SS&lt;br /&gt;
|-&lt;br /&gt;
|#PBS -l min_walltime=HH:MM:SS&lt;br /&gt;
|#SBATCH –time-min=HH:MM:SS&lt;br /&gt;
|-&lt;br /&gt;
|#PBS -q &amp;lt;queue&amp;gt;&lt;br /&gt;
|#SBATCH –partition=&amp;lt;queue&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|#PBS -l mppwidth=n&lt;br /&gt;
|#SBATCH –ntasks=n&lt;br /&gt;
|-&lt;br /&gt;
|#PBS -l mppnppn=N&lt;br /&gt;
|#SBATCH –ntasks-per-node=N&lt;br /&gt;
|-&lt;br /&gt;
|#PBS -l mppdepth=d&lt;br /&gt;
|#SBATCH –cpus-per-task=d&lt;br /&gt;
|-&lt;br /&gt;
|#PBS -l mppmem=mM&lt;br /&gt;
|#SBATCH –mem=m&lt;br /&gt;
|-&lt;br /&gt;
|#PBS -l mppnodes=&amp;lt;nid-list&amp;gt;&lt;br /&gt;
|#SBATCH –nodelist=&amp;lt;nid-list&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|#PBS -W group_list=a_group&lt;br /&gt;
|#SBATCH –account=a_group&lt;br /&gt;
|-&lt;br /&gt;
|#PBS -o /path/to/stdout&lt;br /&gt;
|#SBATCH –output=/path/to/stdout (pode ser usado %j para jobid)&lt;br /&gt;
|-&lt;br /&gt;
|#PBS -e /path/to/stderr&lt;br /&gt;
|#SBATCH –error=/path/to/stderr&lt;br /&gt;
|-&lt;br /&gt;
|#PBS -V&lt;br /&gt;
|não é necessário&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Devemos também ressaltar que as diretrizes do SLURM podem ser especificadas na linha de comando em vez de colocadas no ''script'':&lt;br /&gt;
&amp;lt;pre class=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
[test3@masternode ~]$ sbatch --job-name=&amp;quot;meu job&amp;quot; --ntasks=N ...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;aviso&amp;quot;&amp;gt;&lt;br /&gt;
'''Aviso:''' Para quem estiver interessado o [https://www.cscs.ch Swiss National Supercomputing Centre] disponibiza um video no qual são feitas várias demonstrações de como o usuário pode interagir com o '''SLURM'''.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Manuais]]&lt;br /&gt;
[[Category:Cluster Avicena]]&lt;br /&gt;
[[Category:Slurm]]&lt;br /&gt;
[[Category:Gerenciador de filas]]&lt;/div&gt;</summary>
		<author><name>Admlccwiki</name></author>
		
	</entry>
	<entry>
		<id>https://www.lcc.ufmg.br/wiki/index.php?title=MediaWiki:Sidebar&amp;diff=299</id>
		<title>MediaWiki:Sidebar</title>
		<link rel="alternate" type="text/html" href="https://www.lcc.ufmg.br/wiki/index.php?title=MediaWiki:Sidebar&amp;diff=299"/>
		<updated>2021-10-27T02:22:29Z</updated>

		<summary type="html">&lt;p&gt;Admlccwiki: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;**{{SERVER}}|icone&lt;br /&gt;
* navigation&lt;br /&gt;
** mainpage|mainpage-description&lt;br /&gt;
** recentchanges-url|recentchanges&lt;br /&gt;
** randompage-url|randompage&lt;br /&gt;
*Acesso rápido&lt;br /&gt;
** Guia_Prático_do_cluster_Avicena_LCC/CENAPAD-MG|Guia prático cluster Avicena&lt;br /&gt;
** Guia_Prático_do_cluster_Veredas_LCC/CENAPAD-MG|Guia prático cluster Veredas&lt;br /&gt;
** Slurm - Avicena|Slurm - Avicena&lt;br /&gt;
** Slurm - Veredas|Slurm - Veredas&lt;br /&gt;
** Acesso_remoto_para_usuários_Linux|Acesso remoto via Linux&lt;br /&gt;
** Acesso_remoto_para_usuários_Windows|Acesso remoto via Windows&lt;br /&gt;
** https://pt.wikipedia.org/wiki/Utilit%C3%A1rios_Unix|Comandos Linux&lt;br /&gt;
* Categorias&lt;br /&gt;
** Categoria:Manuais‏‎|Manuais&lt;br /&gt;
** Categoria:Cluster Avicena|Cluster Avicena‏‎&lt;br /&gt;
** Categoria:Cluster Veredas|Cluster Veredas&lt;br /&gt;
* SEARCH&lt;br /&gt;
* TOOLBOX&lt;br /&gt;
* LANGUAGES&lt;/div&gt;</summary>
		<author><name>Admlccwiki</name></author>
		
	</entry>
	<entry>
		<id>https://www.lcc.ufmg.br/wiki/index.php?title=Slurm_-_Veredas&amp;diff=298</id>
		<title>Slurm - Veredas</title>
		<link rel="alternate" type="text/html" href="https://www.lcc.ufmg.br/wiki/index.php?title=Slurm_-_Veredas&amp;diff=298"/>
		<updated>2021-10-27T02:20:07Z</updated>

		<summary type="html">&lt;p&gt;Admlccwiki: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;O [https://slurm.schedmd.com/ '''''Slurm Workload Manager'''''] (anteriormente conhecido como ''Simple Linux Utility for Resource Management'' ou SLURM), ou Slurm, é num escalonador de tarefas gratuito e de código aberto para Linux e kernels similares ao Unix, usado por muitos dos supercomputadores e clusters de computadores do mundo. O Slurm Workload Manager possui três funções principais:&lt;br /&gt;
* alocar nós computacionais para acesso exclusivo e/ou não-exclusivo (compartilhado) aos usuários por um determinado período de tempo necessário para executar as tarefas computacionais submetidas (''jobs'').&lt;br /&gt;
* oferece um ambiente integrado que permite executar e monitorar em tempo real as tarefas lançadas nos nós computacionais alocados.&lt;br /&gt;
* gerencia a fila de submissão, arbitrando conflitos entre os pedidos de recursos computacionais.&lt;br /&gt;
&lt;br /&gt;
== Comandos do Slurm ==&lt;br /&gt;
Segue abaixo, uma lista de comandos úteis disponíveis para o Slurm que permite a interação dos usuários. A lista completa de comandos por ser encontrada na documentação oficial do Slurm através do link [https://slurm.schedmd.com/quickstart.html https://slurm.schedmd.com/quickstart.html]&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot; width=100%  border=1 cellpadding=35px  &lt;br /&gt;
!|Comando&lt;br /&gt;
!|Descrição do comando&lt;br /&gt;
|-&lt;br /&gt;
|'''SRUN'''&lt;br /&gt;
|Submete na linha de comando um job para execução.&lt;br /&gt;
|-&lt;br /&gt;
|'''SBATCH'''&lt;br /&gt;
|Submete scripts shell (eg. bash) para a fila de espera do SLURM.&lt;br /&gt;
|-&lt;br /&gt;
|'''SALLOC'''&lt;br /&gt;
|Reserva recursos do cluster (tempo de cpu, memória, quantidade de nós, etc) para a execução de uma tarefa computacional.&lt;br /&gt;
|-&lt;br /&gt;
|'''SBCAST'''&lt;br /&gt;
|Para transmissão de um arquivo para todos os nós que foram alocados para um determinado job.&lt;br /&gt;
|-&lt;br /&gt;
|'''SCANCEL'''&lt;br /&gt;
|Para cancelar um job que esteja sendo executado ou que ainda esteja na fila de espera.&lt;br /&gt;
|-&lt;br /&gt;
|'''SQUEUE'''&lt;br /&gt;
|Para monitorar o estado dos jobs nas diversas filas de espera do SLURM.&lt;br /&gt;
|-&lt;br /&gt;
|'''SINFO'''&lt;br /&gt;
|Para monitorar o estado global das partições configuradas (filas).&lt;br /&gt;
|-&lt;br /&gt;
|'''SVIEW'''&lt;br /&gt;
|Providencia a integração de toda a informação e disponibiliza-a através de uma interface gráfica.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
Uma mnemônica muito útil é lembrar que todos os comandos do SLURM começam pela letra s. Todos os comandos possuem manuais que podem ser acessados online via linha de comando, '''man &amp;lt;comando&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
Exemplo com o comando '''sbatch''' :&lt;br /&gt;
&amp;lt;pre class=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
[test3@veredas0 ~]$ man sbatch&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Em geral a grande maioria dos usuários precisa familiarizar-se com três comandos básicos do SLURM: '''sbatch, squeue e scancel'''. Assim como no PBS Pro, a submissão de uma tarefa envolve a elaboração de um script shell (em geral em bash) que possui no seu preâmbulo diretrizes específicas do SLURM. Essas diretrizes começam com a palavra-chave '''#SBATCH''' (o análogo da palavra-chave '''#PBS''' para o PBS Pro). No corpo do script é então chamado o executável do programa com os seus respectivos parâmetros.&lt;br /&gt;
&lt;br /&gt;
== Submissão de tarefas computacionais ==&lt;br /&gt;
&lt;br /&gt;
=== Filas de submissão ===&lt;br /&gt;
No UNIVERSO do SLURM o conceito de '''filas''' envolve a noção de partição de nós computacionais em grupos. Esses grupos não são necessariamente disjuntos (nós podem participar de mais de uma partição) e podem ser solicitados de acordo com a especificação de recursos do sistema (tempo de cpu, memória, etc). Para respeitar a herança do PBS Pro iremos nos referir indistintamente aos termos '''filas''' e '''partições'''.&lt;br /&gt;
&lt;br /&gt;
O cluster Veredas possui no momento três filas de submissão definidas apenas pelo recurso '''walltime''':&lt;br /&gt;
* partição '''full''': nós '''veredas[12-107]''' sem restrição de tempo.&lt;br /&gt;
* partição '''short''': nós '''veredas[2-11]''' máximo 1 hora.&lt;br /&gt;
&lt;br /&gt;
O usuário poderá listar a qualquer momento os recursos oferecidos por cada partição com o seguinte comando:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
[test3@veredas0 ~]$ scontrol show partitions&lt;br /&gt;
PartitionName=full TotalNodes=96 TotalCPUs=768 RootOnly=NO&lt;br /&gt;
     Default=YES Shared=NO Priority=1 State=UP MaxTime=UNLIMITED Hidden=NO&lt;br /&gt;
     MinNodes=1 MaxNodes=UNLIMITED DisableRootJobs=NO AllowGroups=ALL&lt;br /&gt;
     AllocNodes=ALL&lt;br /&gt;
     Nodes=veredas[12-107] NodeIndices=10-105 DefaultTime=NONE&lt;br /&gt;
&lt;br /&gt;
PartitionName=short TotalNodes=10 TotalCPUs=80 RootOnly=NO&lt;br /&gt;
     Default=NO Shared=NO Priority=1 State=UP MaxTime=01:00:00 Hidden=NO&lt;br /&gt;
     MinNodes=1 MaxNodes=UNLIMITED DisableRootJobs=NO AllowGroups=ALL&lt;br /&gt;
     AllocNodes=ALL&lt;br /&gt;
     Nodes=veredas[2-11] NodeIndices=0-9 DefaultTime=NONE&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ou através do seguinte comando,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
[test3@veredas0 ~]$ sinfo&lt;br /&gt;
PARTITION AVAIL TIMELIMIT NODES STATE NODELIST&lt;br /&gt;
full* up infinite 96 idle veredas[12-107]&lt;br /&gt;
short up 1:00:00 9 idle veredas[2,4-11]&lt;br /&gt;
short up 1:00:00 1 down veredas3.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para racionalizar a utilização de recursos é conveniente que o usuário respeite a real demanda de sua tarefa e submeta seu script à partição mais apropriada, ou seja, ''jobs'' de curta duração (&amp;lt; 1 hora) na partição '''short'''. Caso contrário, pode correr o risco de a sua solicitação permanecer por muito tempo na fila de espera.&lt;br /&gt;
&lt;br /&gt;
O estado dos ''jobs'' submetidos ou em execução poderá também ser examinado no SLURM através do comando '''squeue''', tal como era feito no PBS Pro com o comando ''qstat'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
[test3@veredas0 ~]$ squeue&lt;br /&gt;
  JOBID PARTITION NAME USER ST TIME NODES NODELIST(REASON)&lt;br /&gt;
    179 short HelloWor test3 R 0:02 2 veredas[4-5]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;aviso&amp;quot;&amp;gt;&lt;br /&gt;
'''Aviso:''' Os exemplos de scripts de submissão que se seguem são para propósitos ilustrativos e representam ''templates'' que os usuários poderão adaptar conforme as suas necessidades específicas.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Tarefas sequenciais ===&lt;br /&gt;
Executar um ''job'' sequencial é bastante simples. Basta requisitar a duração necessária para executar a tarefa. Qualquer tarefa puramente seqüencial, que não utiliza MPI ou ''threads'', irá usar necessariamente '''um core apenas''' do nó computacional.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH --job-name=&amp;quot;TESTJOB&amp;quot;&lt;br /&gt;
#SBATCH --ntasks=1&lt;br /&gt;
#SBATCH --time=01:00:00&lt;br /&gt;
&lt;br /&gt;
./a.out &amp;gt; OUTFILE&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Por padrão o ''output'' do ''script'' acima será redirecionado para um arquivo do tipo ''slurm-'''XXXX'''.out'', onde '''XXXX''' é o número do job que foi atribuído pelo SLURM. Este arquivo de ''output'' estará localizado no diretório de onde foi feita a submissão. O interessante a notar, e a que nos referiremos mais adiante (ver), é de que este arquivo é criado no instante da execução do ''script'' e o seu conteúdo aumenta à medida que o programa vai sendo executado. Remover este arquivo antes da finalização do job acarreta portanto perda total do output da tarefa. Diferentemente no PBS Pro os arquivos de output só eram criados na área do usuário depois de o job finalizar. É possível especificar um nome para o arquivo de output fazendo uso da diretriz '''''#SBATCH --output=meu_job.out'''''. O mesmo vale para o arquivo de erro, '''''#SBATCH --error=meu_job.err'''''.&lt;br /&gt;
&lt;br /&gt;
=== Tarefas paralelas (MPI) ===&lt;br /&gt;
O exemplo seguinte representa a submissão de um ''job'' paralelo MPI que foi compilado com o compilador proprietário da BULL (MPI BULL): '''mpicc -DALIGNED -c hello.c -o hello.o'''; '''mpicc hello.o -o hello.x'''. Nesta situação permitimos que o SLURM se gerencie não só da alocação dos recursos, mas também da execução do programa e da inicialização das comunicações na '''''Infiniband''''' através do comando '''srun'''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -J HelloWorld&lt;br /&gt;
#SBATCH --ntasks 16&lt;br /&gt;
#SBATCH --time 00:30:00&lt;br /&gt;
#SBATCH --partition short&lt;br /&gt;
source /opt/mpi/mpibull2-1.3.9-18.s/share/mpibull2.sh&lt;br /&gt;
mpibull2_devices -d=ibmr_gen2&lt;br /&gt;
echo ’------------------------------------------’&lt;br /&gt;
ldd ./hello.x&lt;br /&gt;
echo ’------------------------------------------’&lt;br /&gt;
sleep 15&lt;br /&gt;
&lt;br /&gt;
srun hostname | sort&lt;br /&gt;
&lt;br /&gt;
srun ./hello.x&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Segue o resultado da execução deste script:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
[test3@veredas0 SLURM]$ cat slurm-188.out&lt;br /&gt;
------------------------------------------&lt;br /&gt;
     libmpi.so =&amp;gt; /opt/mpi/mpibull2-1.3.9-18.s/lib/libmpi.so (0x00002b1b48343000)&lt;br /&gt;
     librt.so.1 =&amp;gt; /lib64/librt.so.1 (0x00000038d1a00000)&lt;br /&gt;
     libdl.so.2 =&amp;gt; /lib64/libdl.so.2 (0x00000038d0e00000)&lt;br /&gt;
     libpmi.so =&amp;gt; /usr/lib64/libpmi.so (0x00002b1b486a0000)&lt;br /&gt;
     libpthread.so.0 =&amp;gt; /lib64/libpthread.so.0 (0x00000038d1200000)&lt;br /&gt;
     libuuid.so.1 =&amp;gt; /lib64/libuuid.so.1 (0x00000038e1800000)&lt;br /&gt;
     libm.so.6 =&amp;gt; /lib64/libm.so.6 (0x00000038d0a00000)&lt;br /&gt;
     libgcc_s.so.1 =&amp;gt; /lib64/libgcc_s.so.1 (0x00000038dba00000)&lt;br /&gt;
     libc.so.6 =&amp;gt; /lib64/libc.so.6 (0x00000038d0600000)&lt;br /&gt;
     libmpidev.so =&amp;gt; /opt/mpi/mpibull2-1.3.9-18.s/lib/drivers/ibmr_gen2/libmpidev.so (0x00002b1b488a7000)&lt;br /&gt;
     /lib64/ld-linux-x86-64.so.2 (0x00000038d0200000)&lt;br /&gt;
     libslurm.so.20 =&amp;gt; /usr/lib64/libslurm.so.20 (0x00002b1b48ba6000)&lt;br /&gt;
     libibverbs.so.1 =&amp;gt; /usr/lib64/libibverbs.so.1 (0x00002b1b48e66000)&lt;br /&gt;
     libsvml.so =&amp;gt; /opt/intel/Compiler/11.1/069/lib/intel64/libsvml.so (0x00002b1b49074000)&lt;br /&gt;
------------------------------------------&lt;br /&gt;
veredas4&lt;br /&gt;
veredas4&lt;br /&gt;
veredas4&lt;br /&gt;
veredas4&lt;br /&gt;
veredas4&lt;br /&gt;
veredas4&lt;br /&gt;
veredas4&lt;br /&gt;
veredas4&lt;br /&gt;
veredas5&lt;br /&gt;
veredas5&lt;br /&gt;
veredas5&lt;br /&gt;
veredas5&lt;br /&gt;
veredas5&lt;br /&gt;
veredas5&lt;br /&gt;
veredas5&lt;br /&gt;
veredas5&lt;br /&gt;
Hello MPI: processor 5 of 16 on veredas4&lt;br /&gt;
Hello MPI: processor 15 of 16 on veredas5&lt;br /&gt;
MPIBull2 1.3.9-s (Astlik) 20091113-1606 MPI_THREAD_FUNNELED (job 188) (device gen2)&lt;br /&gt;
Hello MPI: processor 0 of 16 on veredas4&lt;br /&gt;
Hello MPI: processor 1 of 16 on veredas4&lt;br /&gt;
Hello MPI: processor 2 of 16 on veredas4&lt;br /&gt;
Hello MPI: processor 3 of 16 on veredas4&lt;br /&gt;
Hello MPI: processor 4 of 16 on veredas4&lt;br /&gt;
Hello MPI: processor 7 of 16 on veredas4&lt;br /&gt;
Hello MPI: processor 8 of 16 on veredas5&lt;br /&gt;
Hello MPI: processor 6 of 16 on veredas4&lt;br /&gt;
Hello MPI: processor 9 of 16 on veredas5&lt;br /&gt;
Hello MPI: processor 10 of 16 on veredas5&lt;br /&gt;
Hello MPI: processor 11 of 16 on veredas5&lt;br /&gt;
Hello MPI: processor 12 of 16 on veredas5&lt;br /&gt;
Hello MPI: processor 13 of 16 on veredas5&lt;br /&gt;
Hello MPI: processor 14 of 16 on veredas5&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== Tarefas paralelas com ''threads'' (MPI+OpenMP) ===&lt;br /&gt;
Cada nó computacional do cluster Veredas da UFMG possui '''2 quad-cores''' totalizando '''8 ''cores'''''. Mostramos a seguir um exemplo de submissão de uma tarefa paralela (MPI+OpenMP) que utiliza a Infiniband, cujo executável foi compilado com o '''Intel MPI''' e que requisita '''8 processos''', sendo que cada processo é um conjunto de '''4 ''threads'''''.&lt;br /&gt;
&lt;br /&gt;
Repare que propositalmente, e contráriamente ao caso anterior, a ferramenta '''[https://docs.par-tec.com/html/psmpi-userguide/rn01re01.html mpiexec]''' foi utilizada em vez do '''srun''' para lançar os processos MPI. O SLURM foi então utilizado apenas para reservar os recursos necessários.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -J HelloWorld&lt;br /&gt;
#SBATCH --partition short&lt;br /&gt;
#SBATCH --nodes 4&lt;br /&gt;
#SBATCH --ntasks 8&lt;br /&gt;
#SBATCH --cpus-per-task 4&lt;br /&gt;
#SBATCH --time 00:30:00&lt;br /&gt;
&lt;br /&gt;
source /opt/intel/impi/4.0.0/bin64/mpivars.sh&lt;br /&gt;
&lt;br /&gt;
export OMP_NUM_THREADS=4&lt;br /&gt;
export I_MPI_PMI_LIBRARY=/usr/lib64/libpmi.so&lt;br /&gt;
export I_MPI_FABRICS=dapl&lt;br /&gt;
&lt;br /&gt;
sleep 20&lt;br /&gt;
&lt;br /&gt;
echo ’------------------------------------’&lt;br /&gt;
ldd ./hello&lt;br /&gt;
echo ’------------------------------------’&lt;br /&gt;
srun hostname -s | sort -u &amp;gt;slurm.hosts&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
mpdboot -n $SLURM_NNODES -f slurm.hosts -r ssh&lt;br /&gt;
mpiexec -perhost 2 -np 8 ./hello&lt;br /&gt;
mpdallexit&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
O diagrama abaixo,Figura 1, procura ilustrar a forma como os processos MPI e seus respetivos ''threads'' foram distribuídos nos '''32 cores''' dos quatro nós requisitados. A descrição detalhada de cada diretriz '''#SBATCH''' poderá ser consultada online através do comando man sbatch. A descrição de cada flag do mpiexec também pode ser obtida através de '''/opt/intel/impi/4.0.0/bin64/mpiexec -help'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[image:DiagramaTheadsMPI ClusterVeredas.png|frame|center|'''Figura 1''' - Diagrama com processos MPI e distribuição das '''''threads''''' em dois nós computacionais e 32 cores]]&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Variáveis de ambiente do Slurm ===&lt;br /&gt;
Quaisquer variáveis de ambiente que você define com o comando '''sbatch''' serão passadas para o seu ''job''. Por esse motivo, se o seu programa precisar que determinadas variáveis de ambiente , é melhor colocá-las no ''script'' do seu ''job''. Isso também facilita a reprodução dos resultados do ''job'' posteriormente, caso você necessite.&lt;br /&gt;
A tabela abaixo, contém informações sobre algumas das variáveis de ambiente de entrada e saída mais comuns quando se usa o comando '''sbatch''' no ''script shell''. Para informações adicionais, veja a página man do '''sbatch''' ou acesse a documentação online no site oficial do Slurm [https://slurm.schedmd.com/sbatch.html https://slurm.schedmd.com/sbatch.html].&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot; width=100%  border=1 cellpadding=35px  &lt;br /&gt;
!|Variáveis de ambiente&lt;br /&gt;
!|Definição&lt;br /&gt;
|-&lt;br /&gt;
|'''SLURM_JOB_ID (and SLURM_JOBID for backwards compatibility)'''&lt;br /&gt;
|''The ID of the job allocation.''&lt;br /&gt;
|-&lt;br /&gt;
|'''SLURM_JOB_NAME'''&lt;br /&gt;
|''Name of the job.''&lt;br /&gt;
|-&lt;br /&gt;
|'''SLURM_JOB_NODELIST (and SLURM_NODELIST for backwards compatibility)'''&lt;br /&gt;
|''List of nodes allocated to the job.''&lt;br /&gt;
|-&lt;br /&gt;
|'''SLURM_JOB_NUM_NODES (and SLURM_NNODES for backwards compatibility)'''&lt;br /&gt;
|''Total number of different nodes in the job's resource allocation.''&lt;br /&gt;
|-&lt;br /&gt;
|'''SLURM_ARRAY_TASK_COUNT'''&lt;br /&gt;
|''Total number of tasks in a job array.''&lt;br /&gt;
|-&lt;br /&gt;
|'''SLURM_ARRAY_TASK_ID'''&lt;br /&gt;
|''Job array ID (index) number.''&lt;br /&gt;
|-&lt;br /&gt;
|'''SLURM_ARRAY_TASK_MAX'''&lt;br /&gt;
|''Job array's maximum ID (index) number.''&lt;br /&gt;
|-&lt;br /&gt;
|'''SLURM_ARRAY_TASK_MIN'''&lt;br /&gt;
|''Job array's minimum ID (index) number.''&lt;br /&gt;
|-&lt;br /&gt;
|'''SLURM_ARRAY_TASK_STEP'''&lt;br /&gt;
|''Job array's index step size.''&lt;br /&gt;
|-&lt;br /&gt;
|'''SLURM_ARRAY_JOB_ID'''&lt;br /&gt;
|''Job array's master job ID number.''&lt;br /&gt;
|-&lt;br /&gt;
|'''SLURM_CLUSTER_NAME'''&lt;br /&gt;
|''Name of the cluster on which the job is executing.''&lt;br /&gt;
|-&lt;br /&gt;
|'''SLURM_CPUS_ON_NODE'''&lt;br /&gt;
|''Number of CPUS on the allocated node.''&lt;br /&gt;
|-&lt;br /&gt;
|'''SLURM_CPUS_PER_TASK'''&lt;br /&gt;
|''Number of cpus requested per task. Only set if the '''--cpus-per-task''' option is specified.''&lt;br /&gt;
|-&lt;br /&gt;
|'''SLURM_JOB_ACCOUNT'''&lt;br /&gt;
|''Account name associated of the job allocation.''&lt;br /&gt;
|-&lt;br /&gt;
|'''SLURM_JOB_CPUS_PER_NODE'''&lt;br /&gt;
|''Count of processors available to the job on this node.''&lt;br /&gt;
|-&lt;br /&gt;
|'''SLURM_JOB_DEPENDENCY'''&lt;br /&gt;
|''Set to value of the '''--dependency''' option.''&lt;br /&gt;
|-&lt;br /&gt;
|'''SLURM_MEM_PER_NODE'''&lt;br /&gt;
|''Same as '''--mem'''.''&lt;br /&gt;
|-&lt;br /&gt;
|'''SLURM_MEM_PER_CPU'''&lt;br /&gt;
|''Same as '''--mem-per-cpu'''.''&lt;br /&gt;
|-&lt;br /&gt;
|'''SLURM_NTASKS (and SLURM_NPROCS for backwards compatibility)'''&lt;br /&gt;
|''Same as '''-n, --ntasks'''''.&lt;br /&gt;
|-&lt;br /&gt;
|'''SLURM_NTASKS_PER_NODE'''&lt;br /&gt;
|''Number of tasks requested per node. Only set if the '''--ntasks-per-node''' option is specified.''&lt;br /&gt;
|-&lt;br /&gt;
|'''SLURM_NTASKS_PER_SOCKET'''&lt;br /&gt;
|''Number of tasks requested per socket. Only set if the '''--ntasks-per-socket''' option is specified.''&lt;br /&gt;
|-&lt;br /&gt;
|'''SLURM_SUBMIT_DIR'''&lt;br /&gt;
|''The directory from which '''sbatch''' was invoked.''&lt;br /&gt;
|-&lt;br /&gt;
|'''SLURM_SUBMIT_HOST'''&lt;br /&gt;
|''The hostname of the computer from which '''sbatch''' was invoked.''&lt;br /&gt;
|-&lt;br /&gt;
|'''SLURM_TASK_PID'''&lt;br /&gt;
|''The process ID of the task being started.''&lt;br /&gt;
|-&lt;br /&gt;
|'''SLURMD_NODENAME'''&lt;br /&gt;
|''Name of the node running the job script.''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Comparação entre o SLURM e o PBS Pro ==&lt;br /&gt;
Segue alguns comandos essenciais do SLURM e seus equivalentes no PBS Pro.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot; width=80%  border=1 cellpadding=35px  &lt;br /&gt;
!|Comando Slrum&lt;br /&gt;
!|Descrição do comando&lt;br /&gt;
!|Comando PBS Pro&lt;br /&gt;
|-&lt;br /&gt;
|'''srun'''&lt;br /&gt;
|submete um comando via SLURM no modo interativo.&lt;br /&gt;
|'''qsub -I'''&lt;br /&gt;
|-&lt;br /&gt;
|'''sbatch'''&lt;br /&gt;
|submete um ''script shell''.&lt;br /&gt;
|'''qsub'''&lt;br /&gt;
|-&lt;br /&gt;
|'''squeue'''&lt;br /&gt;
|lista todos os ''jobs'' (em execução ou no modo de espera) nas filas.&lt;br /&gt;
|'''qstat'''&lt;br /&gt;
|-&lt;br /&gt;
|'''scontrol'''&lt;br /&gt;
|modifica o estado de um ''job'' (maioria só é permitida ao ''root'').&lt;br /&gt;
|'''qalter'''&lt;br /&gt;
|-&lt;br /&gt;
|'''scancel'''&lt;br /&gt;
|cancela um ''job'', quer em execução ou na fila de espera.&lt;br /&gt;
|'''qdel'''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Variáveis de ambiente ===&lt;br /&gt;
Existem também algumas diferenças no tocante às variáveis de ambiente como ilustra a tabela abaixo:&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot; width=40%  border=1 cellpadding=35px  &lt;br /&gt;
!|Comando Slrum&lt;br /&gt;
!|Descrição do comando&lt;br /&gt;
|-&lt;br /&gt;
|$SLURM_JOB_ID&lt;br /&gt;
|$PBS_JOBID&lt;br /&gt;
|-&lt;br /&gt;
|$SLURM_JOB_NAME&lt;br /&gt;
|$PBS_JOBNAME&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
O SLURM não possui o equivalente à variável '''$PBS_NODEFILE''' que aponta para o arquivo que contém os nomes dos nós computacionais reservados para a execução do ''job''. Contudo, quando necessário, é possível criar manualmente esse tipo de arquivo com o comando '''srun''':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash -x&lt;br /&gt;
&lt;br /&gt;
HOSTFILE=/tmp/hosts.$SLURM_JOB_ID&lt;br /&gt;
&lt;br /&gt;
srun hostname -s &amp;gt; $HOSTFILE&lt;br /&gt;
&lt;br /&gt;
if [ -z &amp;quot;$SLURM_NPROCS&amp;quot; ] ; then&lt;br /&gt;
  if [ -z &amp;quot;$SLURM_NTASKS_PER_NODE&amp;quot; ] ; then&lt;br /&gt;
    SLURM_NTASKS_PER_NODE=1&lt;br /&gt;
  fi&lt;br /&gt;
    SLURM_NPROCS=$(( $SLURM_JOB_NUM_NODES * $SLURM_NTASKS_PER_NODE ))&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
/path/to/mpirun -machinefile $HOSTFILE -np $SLURM_NPROCS programa.x&lt;br /&gt;
&lt;br /&gt;
rm /tmp/hosts.$SLURM_JOB_ID&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Diretório de execução ===&lt;br /&gt;
Uma outra diferença importante que distingue o '''SLURM''' do '''PBS Pro''' é que enquanto no primeiro escalonador a tarefa batch é executada automáticamente no diretório de onde foi submetido o seu script, o segundo precisa explicitamente que seja introduzida a seguinte linha:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash -x&lt;br /&gt;
...&lt;br /&gt;
cd $PBS_O_WORKDIR&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As variáveis de ambiente que são definidas durante uma sessão shell do '''SLURM''' são automáticamente exportadas para o ''job batch'' em todos os nós computacionais no instante em que o script entra em execução. Já no '''PBS Pro''' é necessário garantir isso com a introdução da diretriz:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash -x&lt;br /&gt;
...&lt;br /&gt;
#PBS -V&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Output ===&lt;br /&gt;
O '''SLURM''' apresenta ainda uma vantagem considerável e muito útil para aqueles usuários que precisam inspecionar numéricamente e em tempo real a evolução do seu programa, como por exemplo, a convergência de uma determinada iteração: os arquivos de saída '''stdout''' e de erro, '''stderr''' (ver as flags do SLURM) , são criados automáticamnte no diretório de onde foi submetido o script e vão crescendo gradualmente de tamanho à medida que a simulação evolui no tempo. O '''PBS Pro''' mostra-se insuficiente neste quesito: somente no final da execução da tarefa é que os arquivos de saída são escritos no diretório destinado.&lt;br /&gt;
&lt;br /&gt;
=== Diretrizes de submissão ===&lt;br /&gt;
Finalmente com o intuito de auxiliar os usuários na migração dos seus scripts de submissão do '''PBS Pro''' para o '''SLURM''' apresentamos a seguinte tabela comparativa das diretrizes de submissão:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot; width=60%  border=1 cellpadding=35px  &lt;br /&gt;
!|PBS Pro&lt;br /&gt;
!|Slurm&lt;br /&gt;
|-&lt;br /&gt;
|#PBS -N job_name&lt;br /&gt;
|#SBATCH –job-name=”job_name” ou #SBATCH -J job_name&lt;br /&gt;
|-&lt;br /&gt;
|#PBS -l nodes=n&lt;br /&gt;
|#SBATCH –nodes=n&lt;br /&gt;
|-&lt;br /&gt;
|#PBS -l walltime=HH:MM:SS&lt;br /&gt;
|#SBATCH –time=HH:MM:SS&lt;br /&gt;
|-&lt;br /&gt;
|#PBS -l min_walltime=HH:MM:SS&lt;br /&gt;
|#SBATCH –time-min=HH:MM:SS&lt;br /&gt;
|-&lt;br /&gt;
|#PBS -q &amp;lt;queue&amp;gt;&lt;br /&gt;
|#SBATCH –partition=&amp;lt;queue&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|#PBS -l mppwidth=n&lt;br /&gt;
|#SBATCH –ntasks=n&lt;br /&gt;
|-&lt;br /&gt;
|#PBS -l mppnppn=N&lt;br /&gt;
|#SBATCH –ntasks-per-node=N&lt;br /&gt;
|-&lt;br /&gt;
|#PBS -l mppdepth=d&lt;br /&gt;
|#SBATCH –cpus-per-task=d&lt;br /&gt;
|-&lt;br /&gt;
|#PBS -l mppmem=mM&lt;br /&gt;
|#SBATCH –mem=m&lt;br /&gt;
|-&lt;br /&gt;
|#PBS -l mppnodes=&amp;lt;nid-list&amp;gt;&lt;br /&gt;
|#SBATCH –nodelist=&amp;lt;nid-list&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|#PBS -W group_list=a_group&lt;br /&gt;
|#SBATCH –account=a_group&lt;br /&gt;
|-&lt;br /&gt;
|#PBS -o /path/to/stdout&lt;br /&gt;
|#SBATCH –output=/path/to/stdout (pode ser usado %j para jobid)&lt;br /&gt;
|-&lt;br /&gt;
|#PBS -e /path/to/stderr&lt;br /&gt;
|#SBATCH –error=/path/to/stderr&lt;br /&gt;
|-&lt;br /&gt;
|#PBS -V&lt;br /&gt;
|não é necessário&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Devemos também ressaltar que as diretrizes do SLURM podem ser especificadas na linha de comando em vez de colocadas no ''script'':&lt;br /&gt;
&amp;lt;pre class=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
[test3@veredas0 ~]$ sbatch --job-name=&amp;quot;meu job&amp;quot; --ntasks=N ...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;aviso&amp;quot;&amp;gt;&lt;br /&gt;
'''Aviso:''' Para uma informação mais detalhada sobre o escalonador '''SLURM''' o usuário poderá baixar e consultar o arquivo [https://www.lcc.ufmg.br/sites/default/files/manuais/BullXClusterSuite-UserGuide.pdf Bullx cluster suite: User’s Guide]. Para quem estiver interessado o [https://www.cscs.ch Swiss National Supercomputing Centre] disponibiza um video no qual são feitas várias demonstrações de como o usuário pode interagir com o '''SLURM'''.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Manuais]]&lt;br /&gt;
[[Category:Cluster Veredas]]&lt;br /&gt;
[[Category:Slurm]]&lt;br /&gt;
[[Category:Gerenciador de filas]]&lt;/div&gt;</summary>
		<author><name>Admlccwiki</name></author>
		
	</entry>
	<entry>
		<id>https://www.lcc.ufmg.br/wiki/index.php?title=Slurm_-_Avicena&amp;diff=297</id>
		<title>Slurm - Avicena</title>
		<link rel="alternate" type="text/html" href="https://www.lcc.ufmg.br/wiki/index.php?title=Slurm_-_Avicena&amp;diff=297"/>
		<updated>2021-10-27T02:19:22Z</updated>

		<summary type="html">&lt;p&gt;Admlccwiki: Criou página com 'O [https://slurm.schedmd.com/ '''''Slurm Workload Manager'''''] (anteriormente conhecido como ''Simple Linux Utility for Resource Management'' ou SLURM), ou Slurm, é num esca...'&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;O [https://slurm.schedmd.com/ '''''Slurm Workload Manager'''''] (anteriormente conhecido como ''Simple Linux Utility for Resource Management'' ou SLURM), ou Slurm, é num escalonador de tarefas gratuito e de código aberto para Linux e kernels similares ao Unix, usado por muitos dos supercomputadores e clusters de computadores do mundo. O Slurm Workload Manager possui três funções principais:&lt;br /&gt;
* alocar nós computacionais para acesso exclusivo e/ou não-exclusivo (compartilhado) aos usuários por um determinado período de tempo necessário para executar as tarefas computacionais submetidas (''jobs'').&lt;br /&gt;
* oferece um ambiente integrado que permite executar e monitorar em tempo real as tarefas lançadas nos nós computacionais alocados.&lt;br /&gt;
* gerencia a fila de submissão, arbitrando conflitos entre os pedidos de recursos computacionais.&lt;br /&gt;
&lt;br /&gt;
== Comandos do Slurm ==&lt;br /&gt;
Segue abaixo, uma lista de comandos úteis disponíveis para o Slurm que permite a interação dos usuários. A lista completa de comandos por ser encontrada na documentação oficial do Slurm através do link [https://slurm.schedmd.com/quickstart.html https://slurm.schedmd.com/quickstart.html]&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot; width=100%  border=1 cellpadding=35px  &lt;br /&gt;
!|Comando&lt;br /&gt;
!|Descrição do comando&lt;br /&gt;
|-&lt;br /&gt;
|'''SRUN'''&lt;br /&gt;
|Submete na linha de comando um job para execução.&lt;br /&gt;
|-&lt;br /&gt;
|'''SBATCH'''&lt;br /&gt;
|Submete scripts shell (eg. bash) para a fila de espera do SLURM.&lt;br /&gt;
|-&lt;br /&gt;
|'''SALLOC'''&lt;br /&gt;
|Reserva recursos do cluster (tempo de cpu, memória, quantidade de nós, etc) para a execução de uma tarefa computacional.&lt;br /&gt;
|-&lt;br /&gt;
|'''SBCAST'''&lt;br /&gt;
|Para transmissão de um arquivo para todos os nós que foram alocados para um determinado job.&lt;br /&gt;
|-&lt;br /&gt;
|'''SCANCEL'''&lt;br /&gt;
|Para cancelar um job que esteja sendo executado ou que ainda esteja na fila de espera.&lt;br /&gt;
|-&lt;br /&gt;
|'''SQUEUE'''&lt;br /&gt;
|Para monitorar o estado dos jobs nas diversas filas de espera do SLURM.&lt;br /&gt;
|-&lt;br /&gt;
|'''SINFO'''&lt;br /&gt;
|Para monitorar o estado global das partições configuradas (filas).&lt;br /&gt;
|-&lt;br /&gt;
|'''SVIEW'''&lt;br /&gt;
|Providencia a integração de toda a informação e disponibiliza-a através de uma interface gráfica.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
Uma mnemônica muito útil é lembrar que todos os comandos do SLURM começam pela letra s. Todos os comandos possuem manuais que podem ser acessados online via linha de comando, '''man &amp;lt;comando&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
Exemplo com o comando '''sbatch''' :&lt;br /&gt;
&amp;lt;pre class=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
[test3@masternode  ~]$ man sbatch&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Em geral a grande maioria dos usuários precisa familiarizar-se com três comandos básicos do SLURM: '''sbatch, squeue e scancel'''. Assim como no PBS Pro, a submissão de uma tarefa envolve a elaboração de um script shell (em geral em bash) que possui no seu preâmbulo diretrizes específicas do SLURM. Essas diretrizes começam com a palavra-chave '''#SBATCH''' (o análogo da palavra-chave '''#PBS''' para o PBS Pro). No corpo do script é então chamado o executável do programa com os seus respectivos parâmetros.&lt;br /&gt;
&lt;br /&gt;
== Submissão de tarefas computacionais ==&lt;br /&gt;
&lt;br /&gt;
=== Filas de submissão ===&lt;br /&gt;
No UNIVERSO do SLURM o conceito de '''filas''' envolve a noção de partição de nós computacionais em grupos. Esses grupos não são necessariamente disjuntos (nós podem participar de mais de uma partição) e podem ser solicitados de acordo com a especificação de recursos do sistema (tempo de cpu, memória, etc). Para respeitar a herança do PBS Pro iremos nos referir indistintamente aos termos '''filas''' e '''partições'''.&lt;br /&gt;
&lt;br /&gt;
O cluster Veredas possui no momento três filas de submissão definidas apenas pelo recurso '''walltime''':&lt;br /&gt;
* partição '''long''': nós '''nodes[003-006]''' máximo 3 dias..&lt;br /&gt;
* partição '''short''': nós '''nodes[001-002]''' máximo 1 hora.&lt;br /&gt;
&lt;br /&gt;
O usuário poderá listar a qualquer momento os recursos oferecidos por cada partição com o seguinte comando:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
[test3@masternode ~]$ scontrol show partitions&lt;br /&gt;
PartitionName=short&lt;br /&gt;
   AllowGroups=ALL AllowAccounts=ALL AllowQos=ALL&lt;br /&gt;
   AllocNodes=ALL Default=YES QoS=N/A&lt;br /&gt;
   DefaultTime=NONE DisableRootJobs=NO ExclusiveUser=NO GraceTime=0 Hidden=NO&lt;br /&gt;
   MaxNodes=UNLIMITED MaxTime=01:00:00 MinNodes=0 LLN=NO MaxCPUsPerNode=UNLIMITED&lt;br /&gt;
   Nodes=node[001-002]&lt;br /&gt;
   PriorityJobFactor=1 PriorityTier=1 RootOnly=NO ReqResv=NO OverSubscribe=NO&lt;br /&gt;
   OverTimeLimit=NONE PreemptMode=OFF&lt;br /&gt;
   State=UP TotalCPUs=24 TotalNodes=2 SelectTypeParameters=NONE&lt;br /&gt;
   JobDefaults=(null)&lt;br /&gt;
   DefMemPerNode=UNLIMITED MaxMemPerCPU=3000&lt;br /&gt;
&lt;br /&gt;
PartitionName=long&lt;br /&gt;
   AllowGroups=ALL AllowAccounts=ALL AllowQos=ALL&lt;br /&gt;
   AllocNodes=ALL Default=NO QoS=N/A&lt;br /&gt;
   DefaultTime=NONE DisableRootJobs=NO ExclusiveUser=NO GraceTime=0 Hidden=NO&lt;br /&gt;
   MaxNodes=UNLIMITED MaxTime=3-00:00:00 MinNodes=0 LLN=NO MaxCPUsPerNode=UNLIMITED&lt;br /&gt;
   Nodes=node[003-006]&lt;br /&gt;
   PriorityJobFactor=1 PriorityTier=1 RootOnly=NO ReqResv=NO OverSubscribe=NO&lt;br /&gt;
   OverTimeLimit=NONE PreemptMode=OFF&lt;br /&gt;
   State=UP TotalCPUs=52 TotalNodes=4 SelectTypeParameters=NONE&lt;br /&gt;
   JobDefaults=(null)&lt;br /&gt;
   DefMemPerNode=UNLIMITED MaxMemPerCPU=3000&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ou através do seguinte comando,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
[test3@masternode ~]$ sinfo&lt;br /&gt;
PARTITION AVAIL TIMELIMIT NODES STATE NODELIST&lt;br /&gt;
short* up 1:00:00      1 idle node[001-002]&lt;br /&gt;
long   up 3-00:00:00   4 idle node[003-006]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para racionalizar a utilização de recursos é conveniente que o usuário respeite a real demanda de sua tarefa e submeta seu script à partição mais apropriada, ou seja, ''jobs'' de curta duração (&amp;lt; 1 hora) na partição '''short'''. Caso contrário, pode correr o risco de a sua solicitação permanecer por muito tempo na fila de espera.&lt;br /&gt;
&lt;br /&gt;
O estado dos ''jobs'' submetidos ou em execução poderá também ser examinado no SLURM através do comando '''squeue''', tal como era feito no PBS Pro com o comando ''qstat'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
[test3@masternode ~]$ squeue&lt;br /&gt;
  JOBID PARTITION NAME USER ST TIME NODES NODELIST(REASON)&lt;br /&gt;
    977 long     test   root  R      0:10      1 node004&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;aviso&amp;quot;&amp;gt;&lt;br /&gt;
'''Aviso:''' Os exemplos de scripts de submissão que se seguem são para propósitos ilustrativos e representam ''templates'' que os usuários poderão adaptar conforme as suas necessidades específicas.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Tarefas sequenciais ===&lt;br /&gt;
Executar um ''job'' sequencial é bastante simples. Basta requisitar a duração necessária para executar a tarefa. Qualquer tarefa puramente seqüencial, que não utiliza MPI ou ''threads'', irá usar necessariamente '''um core apenas''' do nó computacional.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH --job-name=&amp;quot;TESTJOB&amp;quot;&lt;br /&gt;
#SBATCH --ntasks=1&lt;br /&gt;
#SBATCH --time=01:00:00&lt;br /&gt;
&lt;br /&gt;
./a.out &amp;gt; OUTFILE&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Por padrão o ''output'' do ''script'' acima será redirecionado para um arquivo do tipo ''slurm-'''XXXX'''.out'', onde '''XXXX''' é o número do job que foi atribuído pelo SLURM. Este arquivo de ''output'' estará localizado no diretório de onde foi feita a submissão. O interessante a notar, e a que nos referiremos mais adiante (ver), é de que este arquivo é criado no instante da execução do ''script'' e o seu conteúdo aumenta à medida que o programa vai sendo executado. Remover este arquivo antes da finalização do job acarreta portanto perda total do output da tarefa. Diferentemente no PBS Pro os arquivos de output só eram criados na área do usuário depois de o job finalizar. É possível especificar um nome para o arquivo de output fazendo uso da diretriz '''''#SBATCH --output=meu_job.out'''''. O mesmo vale para o arquivo de erro, '''''#SBATCH --error=meu_job.err'''''.&lt;br /&gt;
&lt;br /&gt;
=== Tarefas paralelas (MPI) ===&lt;br /&gt;
Solicite quatro núcleos no cluster por 10 minutos, usando 100 MB de RAM por núcleo. Assumindo que hello.mpi foi compilado com suporte a MPI, srun irá criar quatro instâncias dele, nos nós alocados pelo Slurm:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --job-name=test_mpi&lt;br /&gt;
#SBATCH --output=res_mpi.txt&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --ntasks=4&lt;br /&gt;
#SBATCH --time=10:00&lt;br /&gt;
#SBATCH --mem-per-cpu=5000&lt;br /&gt;
module load gnu-mpi/mpich/3.4&lt;br /&gt;
&lt;br /&gt;
srun hello.mpi&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Segue o resultado da execução deste script:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
[test3@masternode]# cat res_mpi.txt&lt;br /&gt;
---------------------------------------------------------------------------------------------------------------&lt;br /&gt;
We have 4 processes.&lt;br /&gt;
Process 1 reporting for duty.&lt;br /&gt;
Process 2 reporting for duty.&lt;br /&gt;
Process 3 reporting for duty.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Tarefas paralelas com ''threads'' (OpenMP) ===&lt;br /&gt;
O trabalho será executado em uma alocação em que quatro núcleos foram reservados no mesmo nó de computação:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --job-name=test_omp&lt;br /&gt;
#SBATCH --output=res_omp.txt&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --ntasks=1&lt;br /&gt;
#SBATCH --cpus-per-task=10&lt;br /&gt;
#SBATCH --time=10:00&lt;br /&gt;
#SBATCH --mem-per-cpu=100&lt;br /&gt;
export OMP_NUM_THREADS=$SLURM_CPUS_PER_TASK&lt;br /&gt;
&lt;br /&gt;
./hello.omp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Como saída o arquivo res_omp contém:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
Hello World from thread 0&lt;br /&gt;
Hello World from thread 3&lt;br /&gt;
Hello World from thread 1&lt;br /&gt;
Hello World from thread 2&lt;br /&gt;
There are 4 threads&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Tarefas paralelas com ''threads'' (OpenMP + MPI) ===&lt;br /&gt;
Você pode misturar multiprocessamento (MPI) e multi-threading (OpenMP) no mesmo trabalho, simplesmente assim:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot;&amp;gt;&lt;br /&gt;
#! / bin / bash &lt;br /&gt;
# &lt;br /&gt;
#SBATCH --ntasks = 8 &lt;br /&gt;
#SBATCH --cpus-per-task = &lt;br /&gt;
module load gnu-mpi/openmpi/4.1&lt;br /&gt;
export OMP_NUM_THREADS = $ SLURM_CPUS_PER_TASK &lt;br /&gt;
&lt;br /&gt;
srun ./myprog&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Variáveis de ambiente do Slurm ===&lt;br /&gt;
Quaisquer variáveis de ambiente que você define com o comando '''sbatch''' serão passadas para o seu ''job''. Por esse motivo, se o seu programa precisar que determinadas variáveis de ambiente , é melhor colocá-las no ''script'' do seu ''job''. Isso também facilita a reprodução dos resultados do ''job'' posteriormente, caso você necessite.&lt;br /&gt;
A tabela abaixo, contém informações sobre algumas das variáveis de ambiente de entrada e saída mais comuns quando se usa o comando '''sbatch''' no ''script shell''. Para informações adicionais, veja a página man do '''sbatch''' ou acesse a documentação online no site oficial do Slurm [https://slurm.schedmd.com/sbatch.html https://slurm.schedmd.com/sbatch.html].&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot; width=100%  border=1 cellpadding=35px  &lt;br /&gt;
!|Variáveis de ambiente&lt;br /&gt;
!|Definição&lt;br /&gt;
|-&lt;br /&gt;
|'''SLURM_JOB_ID (and SLURM_JOBID for backwards compatibility)'''&lt;br /&gt;
|''The ID of the job allocation.''&lt;br /&gt;
|-&lt;br /&gt;
|'''SLURM_JOB_NAME'''&lt;br /&gt;
|''Name of the job.''&lt;br /&gt;
|-&lt;br /&gt;
|'''SLURM_JOB_NODELIST (and SLURM_NODELIST for backwards compatibility)'''&lt;br /&gt;
|''List of nodes allocated to the job.''&lt;br /&gt;
|-&lt;br /&gt;
|'''SLURM_JOB_NUM_NODES (and SLURM_NNODES for backwards compatibility)'''&lt;br /&gt;
|''Total number of different nodes in the job's resource allocation.''&lt;br /&gt;
|-&lt;br /&gt;
|'''SLURM_ARRAY_TASK_COUNT'''&lt;br /&gt;
|''Total number of tasks in a job array.''&lt;br /&gt;
|-&lt;br /&gt;
|'''SLURM_ARRAY_TASK_ID'''&lt;br /&gt;
|''Job array ID (index) number.''&lt;br /&gt;
|-&lt;br /&gt;
|'''SLURM_ARRAY_TASK_MAX'''&lt;br /&gt;
|''Job array's maximum ID (index) number.''&lt;br /&gt;
|-&lt;br /&gt;
|'''SLURM_ARRAY_TASK_MIN'''&lt;br /&gt;
|''Job array's minimum ID (index) number.''&lt;br /&gt;
|-&lt;br /&gt;
|'''SLURM_ARRAY_TASK_STEP'''&lt;br /&gt;
|''Job array's index step size.''&lt;br /&gt;
|-&lt;br /&gt;
|'''SLURM_ARRAY_JOB_ID'''&lt;br /&gt;
|''Job array's master job ID number.''&lt;br /&gt;
|-&lt;br /&gt;
|'''SLURM_CLUSTER_NAME'''&lt;br /&gt;
|''Name of the cluster on which the job is executing.''&lt;br /&gt;
|-&lt;br /&gt;
|'''SLURM_CPUS_ON_NODE'''&lt;br /&gt;
|''Number of CPUS on the allocated node.''&lt;br /&gt;
|-&lt;br /&gt;
|'''SLURM_CPUS_PER_TASK'''&lt;br /&gt;
|''Number of cpus requested per task. Only set if the '''--cpus-per-task''' option is specified.''&lt;br /&gt;
|-&lt;br /&gt;
|'''SLURM_JOB_ACCOUNT'''&lt;br /&gt;
|''Account name associated of the job allocation.''&lt;br /&gt;
|-&lt;br /&gt;
|'''SLURM_JOB_CPUS_PER_NODE'''&lt;br /&gt;
|''Count of processors available to the job on this node.''&lt;br /&gt;
|-&lt;br /&gt;
|'''SLURM_JOB_DEPENDENCY'''&lt;br /&gt;
|''Set to value of the '''--dependency''' option.''&lt;br /&gt;
|-&lt;br /&gt;
|'''SLURM_MEM_PER_NODE'''&lt;br /&gt;
|''Same as '''--mem'''.''&lt;br /&gt;
|-&lt;br /&gt;
|'''SLURM_MEM_PER_CPU'''&lt;br /&gt;
|''Same as '''--mem-per-cpu'''.''&lt;br /&gt;
|-&lt;br /&gt;
|'''SLURM_NTASKS (and SLURM_NPROCS for backwards compatibility)'''&lt;br /&gt;
|''Same as '''-n, --ntasks'''''.&lt;br /&gt;
|-&lt;br /&gt;
|'''SLURM_NTASKS_PER_NODE'''&lt;br /&gt;
|''Number of tasks requested per node. Only set if the '''--ntasks-per-node''' option is specified.''&lt;br /&gt;
|-&lt;br /&gt;
|'''SLURM_NTASKS_PER_SOCKET'''&lt;br /&gt;
|''Number of tasks requested per socket. Only set if the '''--ntasks-per-socket''' option is specified.''&lt;br /&gt;
|-&lt;br /&gt;
|'''SLURM_SUBMIT_DIR'''&lt;br /&gt;
|''The directory from which '''sbatch''' was invoked.''&lt;br /&gt;
|-&lt;br /&gt;
|'''SLURM_SUBMIT_HOST'''&lt;br /&gt;
|''The hostname of the computer from which '''sbatch''' was invoked.''&lt;br /&gt;
|-&lt;br /&gt;
|'''SLURM_TASK_PID'''&lt;br /&gt;
|''The process ID of the task being started.''&lt;br /&gt;
|-&lt;br /&gt;
|'''SLURMD_NODENAME'''&lt;br /&gt;
|''Name of the node running the job script.''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Comparação entre o SLURM e o PBS Pro ==&lt;br /&gt;
Segue alguns comandos essenciais do SLURM e seus equivalentes no PBS Pro.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot; width=80%  border=1 cellpadding=35px  &lt;br /&gt;
!|Comando Slrum&lt;br /&gt;
!|Descrição do comando&lt;br /&gt;
!|Comando PBS Pro&lt;br /&gt;
|-&lt;br /&gt;
|'''srun'''&lt;br /&gt;
|submete um comando via SLURM no modo interativo.&lt;br /&gt;
|'''qsub -I'''&lt;br /&gt;
|-&lt;br /&gt;
|'''sbatch'''&lt;br /&gt;
|submete um ''script shell''.&lt;br /&gt;
|'''qsub'''&lt;br /&gt;
|-&lt;br /&gt;
|'''squeue'''&lt;br /&gt;
|lista todos os ''jobs'' (em execução ou no modo de espera) nas filas.&lt;br /&gt;
|'''qstat'''&lt;br /&gt;
|-&lt;br /&gt;
|'''scontrol'''&lt;br /&gt;
|modifica o estado de um ''job'' (maioria só é permitida ao ''root'').&lt;br /&gt;
|'''qalter'''&lt;br /&gt;
|-&lt;br /&gt;
|'''scancel'''&lt;br /&gt;
|cancela um ''job'', quer em execução ou na fila de espera.&lt;br /&gt;
|'''qdel'''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Variáveis de ambiente ===&lt;br /&gt;
Existem também algumas diferenças no tocante às variáveis de ambiente como ilustra a tabela abaixo:&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot; width=40%  border=1 cellpadding=35px  &lt;br /&gt;
!|Comando Slrum&lt;br /&gt;
!|Descrição do comando&lt;br /&gt;
|-&lt;br /&gt;
|$SLURM_JOB_ID&lt;br /&gt;
|$PBS_JOBID&lt;br /&gt;
|-&lt;br /&gt;
|$SLURM_JOB_NAME&lt;br /&gt;
|$PBS_JOBNAME&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
O SLURM não possui o equivalente à variável '''$PBS_NODEFILE''' que aponta para o arquivo que contém os nomes dos nós computacionais reservados para a execução do ''job''. Contudo, quando necessário, é possível criar manualmente esse tipo de arquivo com o comando '''srun''':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash -x&lt;br /&gt;
&lt;br /&gt;
HOSTFILE=/tmp/hosts.$SLURM_JOB_ID&lt;br /&gt;
&lt;br /&gt;
srun hostname -s &amp;gt; $HOSTFILE&lt;br /&gt;
&lt;br /&gt;
if [ -z &amp;quot;$SLURM_NPROCS&amp;quot; ] ; then&lt;br /&gt;
  if [ -z &amp;quot;$SLURM_NTASKS_PER_NODE&amp;quot; ] ; then&lt;br /&gt;
    SLURM_NTASKS_PER_NODE=1&lt;br /&gt;
  fi&lt;br /&gt;
    SLURM_NPROCS=$(( $SLURM_JOB_NUM_NODES * $SLURM_NTASKS_PER_NODE ))&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
/path/to/mpirun -machinefile $HOSTFILE -np $SLURM_NPROCS programa.x&lt;br /&gt;
&lt;br /&gt;
rm /tmp/hosts.$SLURM_JOB_ID&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Diretório de execução ===&lt;br /&gt;
Uma outra diferença importante que distingue o '''SLURM''' do '''PBS Pro''' é que enquanto no primeiro escalonador a tarefa batch é executada automáticamente no diretório de onde foi submetido o seu script, o segundo precisa explicitamente que seja introduzida a seguinte linha:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash -x&lt;br /&gt;
...&lt;br /&gt;
cd $PBS_O_WORKDIR&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As variáveis de ambiente que são definidas durante uma sessão shell do '''SLURM''' são automáticamente exportadas para o ''job batch'' em todos os nós computacionais no instante em que o script entra em execução. Já no '''PBS Pro''' é necessário garantir isso com a introdução da diretriz:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash -x&lt;br /&gt;
...&lt;br /&gt;
#PBS -V&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Output ===&lt;br /&gt;
O '''SLURM''' apresenta ainda uma vantagem considerável e muito útil para aqueles usuários que precisam inspecionar numéricamente e em tempo real a evolução do seu programa, como por exemplo, a convergência de uma determinada iteração: os arquivos de saída '''stdout''' e de erro, '''stderr''' (ver as flags do SLURM) , são criados automáticamnte no diretório de onde foi submetido o script e vão crescendo gradualmente de tamanho à medida que a simulação evolui no tempo. O '''PBS Pro''' mostra-se insuficiente neste quesito: somente no final da execução da tarefa é que os arquivos de saída são escritos no diretório destinado.&lt;br /&gt;
&lt;br /&gt;
=== Diretrizes de submissão ===&lt;br /&gt;
Finalmente com o intuito de auxiliar os usuários na migração dos seus scripts de submissão do '''PBS Pro''' para o '''SLURM''' apresentamos a seguinte tabela comparativa das diretrizes de submissão:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot; width=60%  border=1 cellpadding=35px  &lt;br /&gt;
!|PBS Pro&lt;br /&gt;
!|Slurm&lt;br /&gt;
|-&lt;br /&gt;
|#PBS -N job_name&lt;br /&gt;
|#SBATCH –job-name=”job_name” ou #SBATCH -J job_name&lt;br /&gt;
|-&lt;br /&gt;
|#PBS -l nodes=n&lt;br /&gt;
|#SBATCH –nodes=n&lt;br /&gt;
|-&lt;br /&gt;
|#PBS -l walltime=HH:MM:SS&lt;br /&gt;
|#SBATCH –time=HH:MM:SS&lt;br /&gt;
|-&lt;br /&gt;
|#PBS -l min_walltime=HH:MM:SS&lt;br /&gt;
|#SBATCH –time-min=HH:MM:SS&lt;br /&gt;
|-&lt;br /&gt;
|#PBS -q &amp;lt;queue&amp;gt;&lt;br /&gt;
|#SBATCH –partition=&amp;lt;queue&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|#PBS -l mppwidth=n&lt;br /&gt;
|#SBATCH –ntasks=n&lt;br /&gt;
|-&lt;br /&gt;
|#PBS -l mppnppn=N&lt;br /&gt;
|#SBATCH –ntasks-per-node=N&lt;br /&gt;
|-&lt;br /&gt;
|#PBS -l mppdepth=d&lt;br /&gt;
|#SBATCH –cpus-per-task=d&lt;br /&gt;
|-&lt;br /&gt;
|#PBS -l mppmem=mM&lt;br /&gt;
|#SBATCH –mem=m&lt;br /&gt;
|-&lt;br /&gt;
|#PBS -l mppnodes=&amp;lt;nid-list&amp;gt;&lt;br /&gt;
|#SBATCH –nodelist=&amp;lt;nid-list&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|#PBS -W group_list=a_group&lt;br /&gt;
|#SBATCH –account=a_group&lt;br /&gt;
|-&lt;br /&gt;
|#PBS -o /path/to/stdout&lt;br /&gt;
|#SBATCH –output=/path/to/stdout (pode ser usado %j para jobid)&lt;br /&gt;
|-&lt;br /&gt;
|#PBS -e /path/to/stderr&lt;br /&gt;
|#SBATCH –error=/path/to/stderr&lt;br /&gt;
|-&lt;br /&gt;
|#PBS -V&lt;br /&gt;
|não é necessário&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Devemos também ressaltar que as diretrizes do SLURM podem ser especificadas na linha de comando em vez de colocadas no ''script'':&lt;br /&gt;
&amp;lt;pre class=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
[test3@masternode ~]$ sbatch --job-name=&amp;quot;meu job&amp;quot; --ntasks=N ...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;aviso&amp;quot;&amp;gt;&lt;br /&gt;
'''Aviso:''' Para uma informação mais detalhada sobre o escalonador '''SLURM''' o usuário poderá baixar e consultar o arquivo [https://www.lcc.ufmg.br/sites/default/files/manuais/BullXClusterSuite-UserGuide.pdf Bullx cluster suite: User’s Guide]. Para quem estiver interessado o [https://www.cscs.ch Swiss National Supercomputing Centre] disponibiza um video no qual são feitas várias demonstrações de como o usuário pode interagir com o '''SLURM'''.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Manuais]]&lt;br /&gt;
[[Category:Cluster Avicena]]&lt;br /&gt;
[[Category:Slurm]]&lt;br /&gt;
[[Category:Gerenciador de filas]]&lt;/div&gt;</summary>
		<author><name>Admlccwiki</name></author>
		
	</entry>
	<entry>
		<id>https://www.lcc.ufmg.br/wiki/index.php?title=MediaWiki:Sidebar&amp;diff=296</id>
		<title>MediaWiki:Sidebar</title>
		<link rel="alternate" type="text/html" href="https://www.lcc.ufmg.br/wiki/index.php?title=MediaWiki:Sidebar&amp;diff=296"/>
		<updated>2021-10-27T01:34:15Z</updated>

		<summary type="html">&lt;p&gt;Admlccwiki: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;**{{SERVER}}|icone&lt;br /&gt;
* navigation&lt;br /&gt;
** mainpage|mainpage-description&lt;br /&gt;
** recentchanges-url|recentchanges&lt;br /&gt;
** randompage-url|randompage&lt;br /&gt;
*Acesso rápido&lt;br /&gt;
** Guia_Prático_do_cluster_Avicena_LCC/CENAPAD-MG|Guia prático cluster Avicena&lt;br /&gt;
** Guia_Prático_do_cluster_Veredas_LCC/CENAPAD-MG|Guia prático cluster Veredas&lt;br /&gt;
** Slurm - Veredas|Slurm - Veredas&lt;br /&gt;
** Acesso_remoto_para_usuários_Linux|Acesso remoto via Linux&lt;br /&gt;
** Acesso_remoto_para_usuários_Windows|Acesso remoto via Windows&lt;br /&gt;
** https://pt.wikipedia.org/wiki/Utilit%C3%A1rios_Unix|Comandos Linux&lt;br /&gt;
* Categorias&lt;br /&gt;
** Categoria:Manuais‏‎|Manuais&lt;br /&gt;
** Categoria:Cluster Avicena|Cluster Avicena‏‎&lt;br /&gt;
** Categoria:Cluster Veredas|Cluster Veredas&lt;br /&gt;
* SEARCH&lt;br /&gt;
* TOOLBOX&lt;br /&gt;
* LANGUAGES&lt;/div&gt;</summary>
		<author><name>Admlccwiki</name></author>
		
	</entry>
	<entry>
		<id>https://www.lcc.ufmg.br/wiki/index.php?title=Slurm&amp;diff=295</id>
		<title>Slurm</title>
		<link rel="alternate" type="text/html" href="https://www.lcc.ufmg.br/wiki/index.php?title=Slurm&amp;diff=295"/>
		<updated>2021-10-27T01:27:09Z</updated>

		<summary type="html">&lt;p&gt;Admlccwiki: Admlccwiki moveu Slurm para Slurm - Veredas&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECIONAMENTO [[Slurm - Veredas]]&lt;/div&gt;</summary>
		<author><name>Admlccwiki</name></author>
		
	</entry>
	<entry>
		<id>https://www.lcc.ufmg.br/wiki/index.php?title=Slurm_-_Veredas&amp;diff=294</id>
		<title>Slurm - Veredas</title>
		<link rel="alternate" type="text/html" href="https://www.lcc.ufmg.br/wiki/index.php?title=Slurm_-_Veredas&amp;diff=294"/>
		<updated>2021-10-27T01:27:09Z</updated>

		<summary type="html">&lt;p&gt;Admlccwiki: Admlccwiki moveu Slurm para Slurm - Veredas&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;O [https://slurm.schedmd.com/ '''''Slurm Workload Manager'''''] (anteriormente conhecido como ''Simple Linux Utility for Resource Management'' ou SLURM), ou Slurm, é num escalonador de tarefas gratuito e de código aberto para Linux e kernels similares ao Unix, usado por muitos dos supercomputadores e clusters de computadores do mundo. O Slurm Workload Manager possui três funções principais:&lt;br /&gt;
* alocar nós computacionais para acesso exclusivo e/ou não-exclusivo (compartilhado) aos usuários por um determinado período de tempo necessário para executar as tarefas computacionais submetidas (''jobs'').&lt;br /&gt;
* oferece um ambiente integrado que permite executar e monitorar em tempo real as tarefas lançadas nos nós computacionais alocados.&lt;br /&gt;
* gerencia a fila de submissão, arbitrando conflitos entre os pedidos de recursos computacionais.&lt;br /&gt;
&lt;br /&gt;
== Comandos do Slurm ==&lt;br /&gt;
Segue abaixo, uma lista de comandos úteis disponíveis para o Slurm que permite a interação dos usuários. A lista completa de comandos por ser encontrada na documentação oficial do Slurm através do link [https://slurm.schedmd.com/quickstart.html https://slurm.schedmd.com/quickstart.html]&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot; width=100%  border=1 cellpadding=35px  &lt;br /&gt;
!|Comando&lt;br /&gt;
!|Descrição do comando&lt;br /&gt;
|-&lt;br /&gt;
|'''SRUN'''&lt;br /&gt;
|Submete na linha de comando um job para execução.&lt;br /&gt;
|-&lt;br /&gt;
|'''SBATCH'''&lt;br /&gt;
|Submete scripts shell (eg. bash) para a fila de espera do SLURM.&lt;br /&gt;
|-&lt;br /&gt;
|'''SALLOC'''&lt;br /&gt;
|Reserva recursos do cluster (tempo de cpu, memória, quantidade de nós, etc) para a execução de uma tarefa computacional.&lt;br /&gt;
|-&lt;br /&gt;
|'''SBCAST'''&lt;br /&gt;
|Para transmissão de um arquivo para todos os nós que foram alocados para um determinado job.&lt;br /&gt;
|-&lt;br /&gt;
|'''SCANCEL'''&lt;br /&gt;
|Para cancelar um job que esteja sendo executado ou que ainda esteja na fila de espera.&lt;br /&gt;
|-&lt;br /&gt;
|'''SQUEUE'''&lt;br /&gt;
|Para monitorar o estado dos jobs nas diversas filas de espera do SLURM.&lt;br /&gt;
|-&lt;br /&gt;
|'''SINFO'''&lt;br /&gt;
|Para monitorar o estado global das partições configuradas (filas).&lt;br /&gt;
|-&lt;br /&gt;
|'''SVIEW'''&lt;br /&gt;
|Providencia a integração de toda a informação e disponibiliza-a através de uma interface gráfica.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
Uma mnemônica muito útil é lembrar que todos os comandos do SLURM começam pela letra s. Todos os comandos possuem manuais que podem ser acessados online via linha de comando, '''man &amp;lt;comando&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
Exemplo com o comando '''sbatch''' :&lt;br /&gt;
&amp;lt;pre class=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
[test3@veredas0 ~]$ man sbatch&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Em geral a grande maioria dos usuários precisa familiarizar-se com três comandos básicos do SLURM: '''sbatch, squeue e scancel'''. Assim como no PBS Pro, a submissão de uma tarefa envolve a elaboração de um script shell (em geral em bash) que possui no seu preâmbulo diretrizes específicas do SLURM. Essas diretrizes começam com a palavra-chave '''#SBATCH''' (o análogo da palavra-chave '''#PBS''' para o PBS Pro). No corpo do script é então chamado o executável do programa com os seus respectivos parâmetros.&lt;br /&gt;
&lt;br /&gt;
== Submissão de tarefas computacionais ==&lt;br /&gt;
&lt;br /&gt;
=== Filas de submissão ===&lt;br /&gt;
No UNIVERSO do SLURM o conceito de '''filas''' envolve a noção de partição de nós computacionais em grupos. Esses grupos não são necessariamente disjuntos (nós podem participar de mais de uma partição) e podem ser solicitados de acordo com a especificação de recursos do sistema (tempo de cpu, memória, etc). Para respeitar a herança do PBS Pro iremos nos referir indistintamente aos termos '''filas''' e '''partições'''.&lt;br /&gt;
&lt;br /&gt;
O cluster Veredas possui no momento três filas de submissão definidas apenas pelo recurso '''walltime''':&lt;br /&gt;
* partição '''full''': nós '''veredas[12-107]''' sem restrição de tempo.&lt;br /&gt;
* partição '''short''': nós '''veredas[2-11]''' máximo 1 hora.&lt;br /&gt;
&lt;br /&gt;
O usuário poderá listar a qualquer momento os recursos oferecidos por cada partição com o seguinte comando:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
[test3@veredas0 ~]$ scontrol show partitions&lt;br /&gt;
PartitionName=full TotalNodes=96 TotalCPUs=768 RootOnly=NO&lt;br /&gt;
     Default=YES Shared=NO Priority=1 State=UP MaxTime=UNLIMITED Hidden=NO&lt;br /&gt;
     MinNodes=1 MaxNodes=UNLIMITED DisableRootJobs=NO AllowGroups=ALL&lt;br /&gt;
     AllocNodes=ALL&lt;br /&gt;
     Nodes=veredas[12-107] NodeIndices=10-105 DefaultTime=NONE&lt;br /&gt;
&lt;br /&gt;
PartitionName=short TotalNodes=10 TotalCPUs=80 RootOnly=NO&lt;br /&gt;
     Default=NO Shared=NO Priority=1 State=UP MaxTime=01:00:00 Hidden=NO&lt;br /&gt;
     MinNodes=1 MaxNodes=UNLIMITED DisableRootJobs=NO AllowGroups=ALL&lt;br /&gt;
     AllocNodes=ALL&lt;br /&gt;
     Nodes=veredas[2-11] NodeIndices=0-9 DefaultTime=NONE&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ou através do seguinte comando,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
[test3@veredas0 ~]$ sinfo&lt;br /&gt;
PARTITION AVAIL TIMELIMIT NODES STATE NODELIST&lt;br /&gt;
full* up infinite 96 idle veredas[12-107]&lt;br /&gt;
short up 1:00:00 9 idle veredas[2,4-11]&lt;br /&gt;
short up 1:00:00 1 down veredas3.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para racionalizar a utilização de recursos é conveniente que o usuário respeite a real demanda de sua tarefa e submeta seu script à partição mais apropriada, ou seja, ''jobs'' de curta duração (&amp;lt; 1 hora) na partição '''short'''. Caso contrário, pode correr o risco de a sua solicitação permanecer por muito tempo na fila de espera.&lt;br /&gt;
&lt;br /&gt;
O estado dos ''jobs'' submetidos ou em execução poderá também ser examinado no SLURM através do comando '''squeue''', tal como era feito no PBS Pro com o comando ''qstat'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
[test3@veredas0 ~]$ squeue&lt;br /&gt;
  JOBID PARTITION NAME USER ST TIME NODES NODELIST(REASON)&lt;br /&gt;
    179 short HelloWor test3 R 0:02 2 veredas[4-5]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;aviso&amp;quot;&amp;gt;&lt;br /&gt;
'''Aviso:''' Os exemplos de scripts de submissão que se seguem são para propósitos ilustrativos e representam ''templates'' que os usuários poderão adaptar conforme as suas necessidades específicas.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Tarefas sequenciais ===&lt;br /&gt;
Executar um ''job'' sequencial é bastante simples. Basta requisitar a duração necessária para executar a tarefa. Qualquer tarefa puramente seqüencial, que não utiliza MPI ou ''threads'', irá usar necessariamente '''um core apenas''' do nó computacional.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH --job-name=&amp;quot;TESTJOB&amp;quot;&lt;br /&gt;
#SBATCH --ntasks=1&lt;br /&gt;
#SBATCH --time=01:00:00&lt;br /&gt;
&lt;br /&gt;
./a.out &amp;gt; OUTFILE&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Por padrão o ''output'' do ''script'' acima será redirecionado para um arquivo do tipo ''slurm-'''XXXX'''.out'', onde '''XXXX''' é o número do job que foi atribuído pelo SLURM. Este arquivo de ''output'' estará localizado no diretório de onde foi feita a submissão. O interessante a notar, e a que nos referiremos mais adiante (ver), é de que este arquivo é criado no instante da execução do ''script'' e o seu conteúdo aumenta à medida que o programa vai sendo executado. Remover este arquivo antes da finalização do job acarreta portanto perda total do output da tarefa. Diferentemente no PBS Pro os arquivos de output só eram criados na área do usuário depois de o job finalizar. É possível especificar um nome para o arquivo de output fazendo uso da diretriz '''''#SBATCH --output=meu_job.out'''''. O mesmo vale para o arquivo de erro, '''''#SBATCH --error=meu_job.err'''''.&lt;br /&gt;
&lt;br /&gt;
=== Tarefas paralelas (MPI) ===&lt;br /&gt;
O exemplo seguinte representa a submissão de um ''job'' paralelo MPI que foi compilado com o compilador proprietário da BULL (MPI BULL): '''mpicc -DALIGNED -c hello.c -o hello.o'''; '''mpicc hello.o -o hello.x'''. Nesta situação permitimos que o SLURM se gerencie não só da alocação dos recursos, mas também da execução do programa e da inicialização das comunicações na '''''Infiniband''''' através do comando '''srun'''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -J HelloWorld&lt;br /&gt;
#SBATCH --ntasks 16&lt;br /&gt;
#SBATCH --time 00:30:00&lt;br /&gt;
#SBATCH --partition short&lt;br /&gt;
source /opt/mpi/mpibull2-1.3.9-18.s/share/mpibull2.sh&lt;br /&gt;
mpibull2_devices -d=ibmr_gen2&lt;br /&gt;
echo ’------------------------------------------’&lt;br /&gt;
ldd ./hello.x&lt;br /&gt;
echo ’------------------------------------------’&lt;br /&gt;
sleep 15&lt;br /&gt;
&lt;br /&gt;
srun hostname | sort&lt;br /&gt;
&lt;br /&gt;
srun ./hello.x&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Segue o resultado da execução deste script:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
[test3@veredas0 SLURM]$ cat slurm-188.out&lt;br /&gt;
------------------------------------------&lt;br /&gt;
     libmpi.so =&amp;gt; /opt/mpi/mpibull2-1.3.9-18.s/lib/libmpi.so (0x00002b1b48343000)&lt;br /&gt;
     librt.so.1 =&amp;gt; /lib64/librt.so.1 (0x00000038d1a00000)&lt;br /&gt;
     libdl.so.2 =&amp;gt; /lib64/libdl.so.2 (0x00000038d0e00000)&lt;br /&gt;
     libpmi.so =&amp;gt; /usr/lib64/libpmi.so (0x00002b1b486a0000)&lt;br /&gt;
     libpthread.so.0 =&amp;gt; /lib64/libpthread.so.0 (0x00000038d1200000)&lt;br /&gt;
     libuuid.so.1 =&amp;gt; /lib64/libuuid.so.1 (0x00000038e1800000)&lt;br /&gt;
     libm.so.6 =&amp;gt; /lib64/libm.so.6 (0x00000038d0a00000)&lt;br /&gt;
     libgcc_s.so.1 =&amp;gt; /lib64/libgcc_s.so.1 (0x00000038dba00000)&lt;br /&gt;
     libc.so.6 =&amp;gt; /lib64/libc.so.6 (0x00000038d0600000)&lt;br /&gt;
     libmpidev.so =&amp;gt; /opt/mpi/mpibull2-1.3.9-18.s/lib/drivers/ibmr_gen2/libmpidev.so (0x00002b1b488a7000)&lt;br /&gt;
     /lib64/ld-linux-x86-64.so.2 (0x00000038d0200000)&lt;br /&gt;
     libslurm.so.20 =&amp;gt; /usr/lib64/libslurm.so.20 (0x00002b1b48ba6000)&lt;br /&gt;
     libibverbs.so.1 =&amp;gt; /usr/lib64/libibverbs.so.1 (0x00002b1b48e66000)&lt;br /&gt;
     libsvml.so =&amp;gt; /opt/intel/Compiler/11.1/069/lib/intel64/libsvml.so (0x00002b1b49074000)&lt;br /&gt;
------------------------------------------&lt;br /&gt;
veredas4&lt;br /&gt;
veredas4&lt;br /&gt;
veredas4&lt;br /&gt;
veredas4&lt;br /&gt;
veredas4&lt;br /&gt;
veredas4&lt;br /&gt;
veredas4&lt;br /&gt;
veredas4&lt;br /&gt;
veredas5&lt;br /&gt;
veredas5&lt;br /&gt;
veredas5&lt;br /&gt;
veredas5&lt;br /&gt;
veredas5&lt;br /&gt;
veredas5&lt;br /&gt;
veredas5&lt;br /&gt;
veredas5&lt;br /&gt;
Hello MPI: processor 5 of 16 on veredas4&lt;br /&gt;
Hello MPI: processor 15 of 16 on veredas5&lt;br /&gt;
MPIBull2 1.3.9-s (Astlik) 20091113-1606 MPI_THREAD_FUNNELED (job 188) (device gen2)&lt;br /&gt;
Hello MPI: processor 0 of 16 on veredas4&lt;br /&gt;
Hello MPI: processor 1 of 16 on veredas4&lt;br /&gt;
Hello MPI: processor 2 of 16 on veredas4&lt;br /&gt;
Hello MPI: processor 3 of 16 on veredas4&lt;br /&gt;
Hello MPI: processor 4 of 16 on veredas4&lt;br /&gt;
Hello MPI: processor 7 of 16 on veredas4&lt;br /&gt;
Hello MPI: processor 8 of 16 on veredas5&lt;br /&gt;
Hello MPI: processor 6 of 16 on veredas4&lt;br /&gt;
Hello MPI: processor 9 of 16 on veredas5&lt;br /&gt;
Hello MPI: processor 10 of 16 on veredas5&lt;br /&gt;
Hello MPI: processor 11 of 16 on veredas5&lt;br /&gt;
Hello MPI: processor 12 of 16 on veredas5&lt;br /&gt;
Hello MPI: processor 13 of 16 on veredas5&lt;br /&gt;
Hello MPI: processor 14 of 16 on veredas5&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== Tarefas paralelas com ''threads'' (MPI+OpenMP) ===&lt;br /&gt;
Cada nó computacional do cluster Veredas da UFMG possui '''2 quad-cores''' totalizando '''8 ''cores'''''. Mostramos a seguir um exemplo de submissão de uma tarefa paralela (MPI+OpenMP) que utiliza a Infiniband, cujo executável foi compilado com o '''Intel MPI''' e que requisita '''8 processos''', sendo que cada processo é um conjunto de '''4 ''threads'''''.&lt;br /&gt;
&lt;br /&gt;
Repare que propositalmente, e contráriamente ao caso anterior, a ferramenta '''[https://docs.par-tec.com/html/psmpi-userguide/rn01re01.html mpiexec]''' foi utilizada em vez do '''srun''' para lançar os processos MPI. O SLURM foi então utilizado apenas para reservar os recursos necessários.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -J HelloWorld&lt;br /&gt;
#SBATCH --partition short&lt;br /&gt;
#SBATCH --nodes 4&lt;br /&gt;
#SBATCH --ntasks 8&lt;br /&gt;
#SBATCH --cpus-per-task 4&lt;br /&gt;
#SBATCH --time 00:30:00&lt;br /&gt;
&lt;br /&gt;
source /opt/intel/impi/4.0.0/bin64/mpivars.sh&lt;br /&gt;
&lt;br /&gt;
export OMP_NUM_THREADS=4&lt;br /&gt;
export I_MPI_PMI_LIBRARY=/usr/lib64/libpmi.so&lt;br /&gt;
export I_MPI_FABRICS=dapl&lt;br /&gt;
&lt;br /&gt;
sleep 20&lt;br /&gt;
&lt;br /&gt;
echo ’------------------------------------’&lt;br /&gt;
ldd ./hello&lt;br /&gt;
echo ’------------------------------------’&lt;br /&gt;
srun hostname -s | sort -u &amp;gt;slurm.hosts&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
mpdboot -n $SLURM_NNODES -f slurm.hosts -r ssh&lt;br /&gt;
mpiexec -perhost 2 -np 8 ./hello&lt;br /&gt;
mpdallexit&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
O diagrama abaixo,Figura 1, procura ilustrar a forma como os processos MPI e seus respetivos ''threads'' foram distribuídos nos '''32 cores''' dos quatro nós requisitados. A descrição detalhada de cada diretriz '''#SBATCH''' poderá ser consultada online através do comando man sbatch. A descrição de cada flag do mpiexec também pode ser obtida através de '''/opt/intel/impi/4.0.0/bin64/mpiexec -help'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[image:DiagramaTheadsMPI ClusterVeredas.png|frame|center|'''Figura 1''' - Diagrama com processos MPI e distribuição das '''''threads''''' em dois nós computacionais e 32 cores]]&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Variáveis de ambiente do Slurm ===&lt;br /&gt;
Quaisquer variáveis de ambiente que você define com o comando '''sbatch''' serão passadas para o seu ''job''. Por esse motivo, se o seu programa precisar que determinadas variáveis de ambiente , é melhor colocá-las no ''script'' do seu ''job''. Isso também facilita a reprodução dos resultados do ''job'' posteriormente, caso você necessite.&lt;br /&gt;
A tabela abaixo, contém informações sobre algumas das variáveis de ambiente de entrada e saída mais comuns quando se usa o comando '''sbatch''' no ''script shell''. Para informações adicionais, veja a página man do '''sbatch''' ou acesse a documentação online no site oficial do Slurm [https://slurm.schedmd.com/sbatch.html https://slurm.schedmd.com/sbatch.html].&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot; width=100%  border=1 cellpadding=35px  &lt;br /&gt;
!|Variáveis de ambiente&lt;br /&gt;
!|Definição&lt;br /&gt;
|-&lt;br /&gt;
|'''SLURM_JOB_ID (and SLURM_JOBID for backwards compatibility)'''&lt;br /&gt;
|''The ID of the job allocation.''&lt;br /&gt;
|-&lt;br /&gt;
|'''SLURM_JOB_NAME'''&lt;br /&gt;
|''Name of the job.''&lt;br /&gt;
|-&lt;br /&gt;
|'''SLURM_JOB_NODELIST (and SLURM_NODELIST for backwards compatibility)'''&lt;br /&gt;
|''List of nodes allocated to the job.''&lt;br /&gt;
|-&lt;br /&gt;
|'''SLURM_JOB_NUM_NODES (and SLURM_NNODES for backwards compatibility)'''&lt;br /&gt;
|''Total number of different nodes in the job's resource allocation.''&lt;br /&gt;
|-&lt;br /&gt;
|'''SLURM_ARRAY_TASK_COUNT'''&lt;br /&gt;
|''Total number of tasks in a job array.''&lt;br /&gt;
|-&lt;br /&gt;
|'''SLURM_ARRAY_TASK_ID'''&lt;br /&gt;
|''Job array ID (index) number.''&lt;br /&gt;
|-&lt;br /&gt;
|'''SLURM_ARRAY_TASK_MAX'''&lt;br /&gt;
|''Job array's maximum ID (index) number.''&lt;br /&gt;
|-&lt;br /&gt;
|'''SLURM_ARRAY_TASK_MIN'''&lt;br /&gt;
|''Job array's minimum ID (index) number.''&lt;br /&gt;
|-&lt;br /&gt;
|'''SLURM_ARRAY_TASK_STEP'''&lt;br /&gt;
|''Job array's index step size.''&lt;br /&gt;
|-&lt;br /&gt;
|'''SLURM_ARRAY_JOB_ID'''&lt;br /&gt;
|''Job array's master job ID number.''&lt;br /&gt;
|-&lt;br /&gt;
|'''SLURM_CLUSTER_NAME'''&lt;br /&gt;
|''Name of the cluster on which the job is executing.''&lt;br /&gt;
|-&lt;br /&gt;
|'''SLURM_CPUS_ON_NODE'''&lt;br /&gt;
|''Number of CPUS on the allocated node.''&lt;br /&gt;
|-&lt;br /&gt;
|'''SLURM_CPUS_PER_TASK'''&lt;br /&gt;
|''Number of cpus requested per task. Only set if the '''--cpus-per-task''' option is specified.''&lt;br /&gt;
|-&lt;br /&gt;
|'''SLURM_JOB_ACCOUNT'''&lt;br /&gt;
|''Account name associated of the job allocation.''&lt;br /&gt;
|-&lt;br /&gt;
|'''SLURM_JOB_CPUS_PER_NODE'''&lt;br /&gt;
|''Count of processors available to the job on this node.''&lt;br /&gt;
|-&lt;br /&gt;
|'''SLURM_JOB_DEPENDENCY'''&lt;br /&gt;
|''Set to value of the '''--dependency''' option.''&lt;br /&gt;
|-&lt;br /&gt;
|'''SLURM_MEM_PER_NODE'''&lt;br /&gt;
|''Same as '''--mem'''.''&lt;br /&gt;
|-&lt;br /&gt;
|'''SLURM_MEM_PER_CPU'''&lt;br /&gt;
|''Same as '''--mem-per-cpu'''.''&lt;br /&gt;
|-&lt;br /&gt;
|'''SLURM_NTASKS (and SLURM_NPROCS for backwards compatibility)'''&lt;br /&gt;
|''Same as '''-n, --ntasks'''''.&lt;br /&gt;
|-&lt;br /&gt;
|'''SLURM_NTASKS_PER_NODE'''&lt;br /&gt;
|''Number of tasks requested per node. Only set if the '''--ntasks-per-node''' option is specified.''&lt;br /&gt;
|-&lt;br /&gt;
|'''SLURM_NTASKS_PER_SOCKET'''&lt;br /&gt;
|''Number of tasks requested per socket. Only set if the '''--ntasks-per-socket''' option is specified.''&lt;br /&gt;
|-&lt;br /&gt;
|'''SLURM_SUBMIT_DIR'''&lt;br /&gt;
|''The directory from which '''sbatch''' was invoked.''&lt;br /&gt;
|-&lt;br /&gt;
|'''SLURM_SUBMIT_HOST'''&lt;br /&gt;
|''The hostname of the computer from which '''sbatch''' was invoked.''&lt;br /&gt;
|-&lt;br /&gt;
|'''SLURM_TASK_PID'''&lt;br /&gt;
|''The process ID of the task being started.''&lt;br /&gt;
|-&lt;br /&gt;
|'''SLURMD_NODENAME'''&lt;br /&gt;
|''Name of the node running the job script.''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Comparação entre o SLURM e o PBS Pro ==&lt;br /&gt;
Segue alguns comandos essenciais do SLURM e seus equivalentes no PBS Pro.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot; width=80%  border=1 cellpadding=35px  &lt;br /&gt;
!|Comando Slrum&lt;br /&gt;
!|Descrição do comando&lt;br /&gt;
!|Comando PBS Pro&lt;br /&gt;
|-&lt;br /&gt;
|'''srun'''&lt;br /&gt;
|submete um comando via SLURM no modo interativo.&lt;br /&gt;
|'''qsub -I'''&lt;br /&gt;
|-&lt;br /&gt;
|'''sbatch'''&lt;br /&gt;
|submete um ''script shell''.&lt;br /&gt;
|'''qsub'''&lt;br /&gt;
|-&lt;br /&gt;
|'''squeue'''&lt;br /&gt;
|lista todos os ''jobs'' (em execução ou no modo de espera) nas filas.&lt;br /&gt;
|'''qstat'''&lt;br /&gt;
|-&lt;br /&gt;
|'''scontrol'''&lt;br /&gt;
|modifica o estado de um ''job'' (maioria só é permitida ao ''root'').&lt;br /&gt;
|'''qalter'''&lt;br /&gt;
|-&lt;br /&gt;
|'''scancel'''&lt;br /&gt;
|cancela um ''job'', quer em execução ou na fila de espera.&lt;br /&gt;
|'''qdel'''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Variáveis de ambiente ===&lt;br /&gt;
Existem também algumas diferenças no tocante às variáveis de ambiente como ilustra a tabela abaixo:&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot; width=40%  border=1 cellpadding=35px  &lt;br /&gt;
!|Comando Slrum&lt;br /&gt;
!|Descrição do comando&lt;br /&gt;
|-&lt;br /&gt;
|$SLURM_JOB_ID&lt;br /&gt;
|$PBS_JOBID&lt;br /&gt;
|-&lt;br /&gt;
|$SLURM_JOB_NAME&lt;br /&gt;
|$PBS_JOBNAME&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
O SLURM não possui o equivalente à variável '''$PBS_NODEFILE''' que aponta para o arquivo que contém os nomes dos nós computacionais reservados para a execução do ''job''. Contudo, quando necessário, é possível criar manualmente esse tipo de arquivo com o comando '''srun''':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash -x&lt;br /&gt;
&lt;br /&gt;
HOSTFILE=/tmp/hosts.$SLURM_JOB_ID&lt;br /&gt;
&lt;br /&gt;
srun hostname -s &amp;gt; $HOSTFILE&lt;br /&gt;
&lt;br /&gt;
if [ -z &amp;quot;$SLURM_NPROCS&amp;quot; ] ; then&lt;br /&gt;
  if [ -z &amp;quot;$SLURM_NTASKS_PER_NODE&amp;quot; ] ; then&lt;br /&gt;
    SLURM_NTASKS_PER_NODE=1&lt;br /&gt;
  fi&lt;br /&gt;
    SLURM_NPROCS=$(( $SLURM_JOB_NUM_NODES * $SLURM_NTASKS_PER_NODE ))&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
/path/to/mpirun -machinefile $HOSTFILE -np $SLURM_NPROCS programa.x&lt;br /&gt;
&lt;br /&gt;
rm /tmp/hosts.$SLURM_JOB_ID&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Diretório de execução ===&lt;br /&gt;
Uma outra diferença importante que distingue o '''SLURM''' do '''PBS Pro''' é que enquanto no primeiro escalonador a tarefa batch é executada automáticamente no diretório de onde foi submetido o seu script, o segundo precisa explicitamente que seja introduzida a seguinte linha:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash -x&lt;br /&gt;
...&lt;br /&gt;
cd $PBS_O_WORKDIR&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As variáveis de ambiente que são definidas durante uma sessão shell do '''SLURM''' são automáticamente exportadas para o ''job batch'' em todos os nós computacionais no instante em que o script entra em execução. Já no '''PBS Pro''' é necessário garantir isso com a introdução da diretriz:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash -x&lt;br /&gt;
...&lt;br /&gt;
#PBS -V&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Output ===&lt;br /&gt;
O '''SLURM''' apresenta ainda uma vantagem considerável e muito útil para aqueles usuários que precisam inspecionar numéricamente e em tempo real a evolução do seu programa, como por exemplo, a convergência de uma determinada iteração: os arquivos de saída '''stdout''' e de erro, '''stderr''' (ver as flags do SLURM) , são criados automáticamnte no diretório de onde foi submetido o script e vão crescendo gradualmente de tamanho à medida que a simulação evolui no tempo. O '''PBS Pro''' mostra-se insuficiente neste quesito: somente no final da execução da tarefa é que os arquivos de saída são escritos no diretório destinado.&lt;br /&gt;
&lt;br /&gt;
=== Diretrizes de submissão ===&lt;br /&gt;
Finalmente com o intuito de auxiliar os usuários na migração dos seus scripts de submissão do '''PBS Pro''' para o '''SLURM''' apresentamos a seguinte tabela comparativa das diretrizes de submissão:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot; width=60%  border=1 cellpadding=35px  &lt;br /&gt;
!|PBS Pro&lt;br /&gt;
!|Slurm&lt;br /&gt;
|-&lt;br /&gt;
|#PBS -N job_name&lt;br /&gt;
|#SBATCH –job-name=”job_name” ou #SBATCH -J job_name&lt;br /&gt;
|-&lt;br /&gt;
|#PBS -l nodes=n&lt;br /&gt;
|#SBATCH –nodes=n&lt;br /&gt;
|-&lt;br /&gt;
|#PBS -l walltime=HH:MM:SS&lt;br /&gt;
|#SBATCH –time=HH:MM:SS&lt;br /&gt;
|-&lt;br /&gt;
|#PBS -l min_walltime=HH:MM:SS&lt;br /&gt;
|#SBATCH –time-min=HH:MM:SS&lt;br /&gt;
|-&lt;br /&gt;
|#PBS -q &amp;lt;queue&amp;gt;&lt;br /&gt;
|#SBATCH –partition=&amp;lt;queue&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|#PBS -l mppwidth=n&lt;br /&gt;
|#SBATCH –ntasks=n&lt;br /&gt;
|-&lt;br /&gt;
|#PBS -l mppnppn=N&lt;br /&gt;
|#SBATCH –ntasks-per-node=N&lt;br /&gt;
|-&lt;br /&gt;
|#PBS -l mppdepth=d&lt;br /&gt;
|#SBATCH –cpus-per-task=d&lt;br /&gt;
|-&lt;br /&gt;
|#PBS -l mppmem=mM&lt;br /&gt;
|#SBATCH –mem=m&lt;br /&gt;
|-&lt;br /&gt;
|#PBS -l mppnodes=&amp;lt;nid-list&amp;gt;&lt;br /&gt;
|#SBATCH –nodelist=&amp;lt;nid-list&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|#PBS -W group_list=a_group&lt;br /&gt;
|#SBATCH –account=a_group&lt;br /&gt;
|-&lt;br /&gt;
|#PBS -o /path/to/stdout&lt;br /&gt;
|#SBATCH –output=/path/to/stdout (pode ser usado %j para jobid)&lt;br /&gt;
|-&lt;br /&gt;
|#PBS -e /path/to/stderr&lt;br /&gt;
|#SBATCH –error=/path/to/stderr&lt;br /&gt;
|-&lt;br /&gt;
|#PBS -V&lt;br /&gt;
|não é necessário&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Devemos também ressaltar que as diretrizes do SLURM podem ser especificadas na linha de comando em vez de colocadas no ''script'':&lt;br /&gt;
&amp;lt;pre class=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
[test3@veredas0 ~]$ sbatch --job-name=&amp;quot;meu job&amp;quot; --ntasks=N ...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;aviso&amp;quot;&amp;gt;&lt;br /&gt;
'''Aviso:''' Para uma informação mais detalhada sobre o escalonador '''SLURM''' o usuário poderá baixar e consultar o arquivo [https://www.lcc.ufmg.br/sites/default/files/manuais/BullXClusterSuite-UserGuide.pdf Bullx cluster suite: User’s Guide]. Para quem estiver interessado o [https://www.cscs.ch Swiss National Supercomputing Centre] disponibiza um video no qual são feitas várias demonstrações de como o usuário pode interagir com o '''SLURM'''.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Manuais]]&lt;br /&gt;
[[Category:Cluster Avicena]]&lt;br /&gt;
[[Category:Cluster Veredas]]&lt;br /&gt;
[[Category:Slurm]]&lt;br /&gt;
[[Category:Gerenciador de filas]]&lt;/div&gt;</summary>
		<author><name>Admlccwiki</name></author>
		
	</entry>
	<entry>
		<id>https://www.lcc.ufmg.br/wiki/index.php?title=Instalar_cliente_OpenSSH_no_Windows&amp;diff=292</id>
		<title>Instalar cliente OpenSSH no Windows</title>
		<link rel="alternate" type="text/html" href="https://www.lcc.ufmg.br/wiki/index.php?title=Instalar_cliente_OpenSSH_no_Windows&amp;diff=292"/>
		<updated>2021-09-25T00:14:50Z</updated>

		<summary type="html">&lt;p&gt;Admlccwiki: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;O sistema operacional Windows 10 tem agora disponível um cliente SSH nativo para conectar remotamente a máquinas Linux. O processo para ter o cliente OpenSSH do Windows 10 instalado é simples e rápido. Siga os passos abaixo:&lt;br /&gt;
&lt;br /&gt;
# Acesse as '''Configurações do Windows''' e clique em '''Aplicativos'''(destacado em vermelho), Figura 1.&lt;br /&gt;
#: [[image:Tela configurações do Windows10.png|700x500px|thumb|center|'''Figura 1''' - Tela de Configurações do Windows]] &amp;lt;br/&amp;gt;&lt;br /&gt;
# Na tela '''Aplicativos e Recursos''' clique em '''Gerenciar recursos opcionais'''(destacado em vermelho), Figura 2.&lt;br /&gt;
#: [[image:Tela Aplicativos e Recursos.png|700x500px|thumb|center|'''Figura 2''' - Tela Aplicativos e Recursos]] &amp;lt;br/&amp;gt;&lt;br /&gt;
# Na tela '''Gerenciar recursos opcionais''' examine a lista de recursos instalados em seu computador para ver se o cliente OpenSSH já está incluso nela.&lt;br /&gt;
#:* No caso do exemplo abaixo, Figura 3, o '''Cliente OpenSSH'''(destacado em vermelho) já está instalado.&lt;br /&gt;
#:* Caso não apareça nessa lista, na parte superior da página clique em '''Adicionar um recurso'''(destacado em preto), e uma lista de recursos opcionais disponíveis para instalar será mostrada. Procure o '''Cliente OpenSSH''', encontrando-o clique sobre ele e depois clique em '''Instalar'''. Depois de concluir a instalação, retorne à tela '''Gerenciar recursos opcionais''', Figura 3, e você deverá ver o componente do OpenSSH listado.&lt;br /&gt;
#: [[image:Tela Gerenciar recursos opcionais.png|700x500px|thumb|center|'''Figura 3''' - Tela Aplicativos e Recursos]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Manuais‏‎]]&lt;br /&gt;
[[Category:Instalar cliente OpenSSH no Windows‏‎]]&lt;/div&gt;</summary>
		<author><name>Admlccwiki</name></author>
		
	</entry>
	<entry>
		<id>https://www.lcc.ufmg.br/wiki/index.php?title=Slurm_-_Veredas&amp;diff=291</id>
		<title>Slurm - Veredas</title>
		<link rel="alternate" type="text/html" href="https://www.lcc.ufmg.br/wiki/index.php?title=Slurm_-_Veredas&amp;diff=291"/>
		<updated>2021-09-25T00:11:34Z</updated>

		<summary type="html">&lt;p&gt;Admlccwiki: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;O [https://slurm.schedmd.com/ '''''Slurm Workload Manager'''''] (anteriormente conhecido como ''Simple Linux Utility for Resource Management'' ou SLURM), ou Slurm, é num escalonador de tarefas gratuito e de código aberto para Linux e kernels similares ao Unix, usado por muitos dos supercomputadores e clusters de computadores do mundo. O Slurm Workload Manager possui três funções principais:&lt;br /&gt;
* alocar nós computacionais para acesso exclusivo e/ou não-exclusivo (compartilhado) aos usuários por um determinado período de tempo necessário para executar as tarefas computacionais submetidas (''jobs'').&lt;br /&gt;
* oferece um ambiente integrado que permite executar e monitorar em tempo real as tarefas lançadas nos nós computacionais alocados.&lt;br /&gt;
* gerencia a fila de submissão, arbitrando conflitos entre os pedidos de recursos computacionais.&lt;br /&gt;
&lt;br /&gt;
== Comandos do Slurm ==&lt;br /&gt;
Segue abaixo, uma lista de comandos úteis disponíveis para o Slurm que permite a interação dos usuários. A lista completa de comandos por ser encontrada na documentação oficial do Slurm através do link [https://slurm.schedmd.com/quickstart.html https://slurm.schedmd.com/quickstart.html]&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot; width=100%  border=1 cellpadding=35px  &lt;br /&gt;
!|Comando&lt;br /&gt;
!|Descrição do comando&lt;br /&gt;
|-&lt;br /&gt;
|'''SRUN'''&lt;br /&gt;
|Submete na linha de comando um job para execução.&lt;br /&gt;
|-&lt;br /&gt;
|'''SBATCH'''&lt;br /&gt;
|Submete scripts shell (eg. bash) para a fila de espera do SLURM.&lt;br /&gt;
|-&lt;br /&gt;
|'''SALLOC'''&lt;br /&gt;
|Reserva recursos do cluster (tempo de cpu, memória, quantidade de nós, etc) para a execução de uma tarefa computacional.&lt;br /&gt;
|-&lt;br /&gt;
|'''SBCAST'''&lt;br /&gt;
|Para transmissão de um arquivo para todos os nós que foram alocados para um determinado job.&lt;br /&gt;
|-&lt;br /&gt;
|'''SCANCEL'''&lt;br /&gt;
|Para cancelar um job que esteja sendo executado ou que ainda esteja na fila de espera.&lt;br /&gt;
|-&lt;br /&gt;
|'''SQUEUE'''&lt;br /&gt;
|Para monitorar o estado dos jobs nas diversas filas de espera do SLURM.&lt;br /&gt;
|-&lt;br /&gt;
|'''SINFO'''&lt;br /&gt;
|Para monitorar o estado global das partições configuradas (filas).&lt;br /&gt;
|-&lt;br /&gt;
|'''SVIEW'''&lt;br /&gt;
|Providencia a integração de toda a informação e disponibiliza-a através de uma interface gráfica.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
Uma mnemônica muito útil é lembrar que todos os comandos do SLURM começam pela letra s. Todos os comandos possuem manuais que podem ser acessados online via linha de comando, '''man &amp;lt;comando&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
Exemplo com o comando '''sbatch''' :&lt;br /&gt;
&amp;lt;pre class=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
[test3@veredas0 ~]$ man sbatch&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Em geral a grande maioria dos usuários precisa familiarizar-se com três comandos básicos do SLURM: '''sbatch, squeue e scancel'''. Assim como no PBS Pro, a submissão de uma tarefa envolve a elaboração de um script shell (em geral em bash) que possui no seu preâmbulo diretrizes específicas do SLURM. Essas diretrizes começam com a palavra-chave '''#SBATCH''' (o análogo da palavra-chave '''#PBS''' para o PBS Pro). No corpo do script é então chamado o executável do programa com os seus respectivos parâmetros.&lt;br /&gt;
&lt;br /&gt;
== Submissão de tarefas computacionais ==&lt;br /&gt;
&lt;br /&gt;
=== Filas de submissão ===&lt;br /&gt;
No UNIVERSO do SLURM o conceito de '''filas''' envolve a noção de partição de nós computacionais em grupos. Esses grupos não são necessariamente disjuntos (nós podem participar de mais de uma partição) e podem ser solicitados de acordo com a especificação de recursos do sistema (tempo de cpu, memória, etc). Para respeitar a herança do PBS Pro iremos nos referir indistintamente aos termos '''filas''' e '''partições'''.&lt;br /&gt;
&lt;br /&gt;
O cluster Veredas possui no momento três filas de submissão definidas apenas pelo recurso '''walltime''':&lt;br /&gt;
* partição '''full''': nós '''veredas[12-107]''' sem restrição de tempo.&lt;br /&gt;
* partição '''short''': nós '''veredas[2-11]''' máximo 1 hora.&lt;br /&gt;
&lt;br /&gt;
O usuário poderá listar a qualquer momento os recursos oferecidos por cada partição com o seguinte comando:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
[test3@veredas0 ~]$ scontrol show partitions&lt;br /&gt;
PartitionName=full TotalNodes=96 TotalCPUs=768 RootOnly=NO&lt;br /&gt;
     Default=YES Shared=NO Priority=1 State=UP MaxTime=UNLIMITED Hidden=NO&lt;br /&gt;
     MinNodes=1 MaxNodes=UNLIMITED DisableRootJobs=NO AllowGroups=ALL&lt;br /&gt;
     AllocNodes=ALL&lt;br /&gt;
     Nodes=veredas[12-107] NodeIndices=10-105 DefaultTime=NONE&lt;br /&gt;
&lt;br /&gt;
PartitionName=short TotalNodes=10 TotalCPUs=80 RootOnly=NO&lt;br /&gt;
     Default=NO Shared=NO Priority=1 State=UP MaxTime=01:00:00 Hidden=NO&lt;br /&gt;
     MinNodes=1 MaxNodes=UNLIMITED DisableRootJobs=NO AllowGroups=ALL&lt;br /&gt;
     AllocNodes=ALL&lt;br /&gt;
     Nodes=veredas[2-11] NodeIndices=0-9 DefaultTime=NONE&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ou através do seguinte comando,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
[test3@veredas0 ~]$ sinfo&lt;br /&gt;
PARTITION AVAIL TIMELIMIT NODES STATE NODELIST&lt;br /&gt;
full* up infinite 96 idle veredas[12-107]&lt;br /&gt;
short up 1:00:00 9 idle veredas[2,4-11]&lt;br /&gt;
short up 1:00:00 1 down veredas3.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para racionalizar a utilização de recursos é conveniente que o usuário respeite a real demanda de sua tarefa e submeta seu script à partição mais apropriada, ou seja, ''jobs'' de curta duração (&amp;lt; 1 hora) na partição '''short'''. Caso contrário, pode correr o risco de a sua solicitação permanecer por muito tempo na fila de espera.&lt;br /&gt;
&lt;br /&gt;
O estado dos ''jobs'' submetidos ou em execução poderá também ser examinado no SLURM através do comando '''squeue''', tal como era feito no PBS Pro com o comando ''qstat'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
[test3@veredas0 ~]$ squeue&lt;br /&gt;
  JOBID PARTITION NAME USER ST TIME NODES NODELIST(REASON)&lt;br /&gt;
    179 short HelloWor test3 R 0:02 2 veredas[4-5]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;aviso&amp;quot;&amp;gt;&lt;br /&gt;
'''Aviso:''' Os exemplos de scripts de submissão que se seguem são para propósitos ilustrativos e representam ''templates'' que os usuários poderão adaptar conforme as suas necessidades específicas.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Tarefas sequenciais ===&lt;br /&gt;
Executar um ''job'' sequencial é bastante simples. Basta requisitar a duração necessária para executar a tarefa. Qualquer tarefa puramente seqüencial, que não utiliza MPI ou ''threads'', irá usar necessariamente '''um core apenas''' do nó computacional.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH --job-name=&amp;quot;TESTJOB&amp;quot;&lt;br /&gt;
#SBATCH --ntasks=1&lt;br /&gt;
#SBATCH --time=01:00:00&lt;br /&gt;
&lt;br /&gt;
./a.out &amp;gt; OUTFILE&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Por padrão o ''output'' do ''script'' acima será redirecionado para um arquivo do tipo ''slurm-'''XXXX'''.out'', onde '''XXXX''' é o número do job que foi atribuído pelo SLURM. Este arquivo de ''output'' estará localizado no diretório de onde foi feita a submissão. O interessante a notar, e a que nos referiremos mais adiante (ver), é de que este arquivo é criado no instante da execução do ''script'' e o seu conteúdo aumenta à medida que o programa vai sendo executado. Remover este arquivo antes da finalização do job acarreta portanto perda total do output da tarefa. Diferentemente no PBS Pro os arquivos de output só eram criados na área do usuário depois de o job finalizar. É possível especificar um nome para o arquivo de output fazendo uso da diretriz '''''#SBATCH --output=meu_job.out'''''. O mesmo vale para o arquivo de erro, '''''#SBATCH --error=meu_job.err'''''.&lt;br /&gt;
&lt;br /&gt;
=== Tarefas paralelas (MPI) ===&lt;br /&gt;
O exemplo seguinte representa a submissão de um ''job'' paralelo MPI que foi compilado com o compilador proprietário da BULL (MPI BULL): '''mpicc -DALIGNED -c hello.c -o hello.o'''; '''mpicc hello.o -o hello.x'''. Nesta situação permitimos que o SLURM se gerencie não só da alocação dos recursos, mas também da execução do programa e da inicialização das comunicações na '''''Infiniband''''' através do comando '''srun'''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -J HelloWorld&lt;br /&gt;
#SBATCH --ntasks 16&lt;br /&gt;
#SBATCH --time 00:30:00&lt;br /&gt;
#SBATCH --partition short&lt;br /&gt;
source /opt/mpi/mpibull2-1.3.9-18.s/share/mpibull2.sh&lt;br /&gt;
mpibull2_devices -d=ibmr_gen2&lt;br /&gt;
echo ’------------------------------------------’&lt;br /&gt;
ldd ./hello.x&lt;br /&gt;
echo ’------------------------------------------’&lt;br /&gt;
sleep 15&lt;br /&gt;
&lt;br /&gt;
srun hostname | sort&lt;br /&gt;
&lt;br /&gt;
srun ./hello.x&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Segue o resultado da execução deste script:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
[test3@veredas0 SLURM]$ cat slurm-188.out&lt;br /&gt;
------------------------------------------&lt;br /&gt;
     libmpi.so =&amp;gt; /opt/mpi/mpibull2-1.3.9-18.s/lib/libmpi.so (0x00002b1b48343000)&lt;br /&gt;
     librt.so.1 =&amp;gt; /lib64/librt.so.1 (0x00000038d1a00000)&lt;br /&gt;
     libdl.so.2 =&amp;gt; /lib64/libdl.so.2 (0x00000038d0e00000)&lt;br /&gt;
     libpmi.so =&amp;gt; /usr/lib64/libpmi.so (0x00002b1b486a0000)&lt;br /&gt;
     libpthread.so.0 =&amp;gt; /lib64/libpthread.so.0 (0x00000038d1200000)&lt;br /&gt;
     libuuid.so.1 =&amp;gt; /lib64/libuuid.so.1 (0x00000038e1800000)&lt;br /&gt;
     libm.so.6 =&amp;gt; /lib64/libm.so.6 (0x00000038d0a00000)&lt;br /&gt;
     libgcc_s.so.1 =&amp;gt; /lib64/libgcc_s.so.1 (0x00000038dba00000)&lt;br /&gt;
     libc.so.6 =&amp;gt; /lib64/libc.so.6 (0x00000038d0600000)&lt;br /&gt;
     libmpidev.so =&amp;gt; /opt/mpi/mpibull2-1.3.9-18.s/lib/drivers/ibmr_gen2/libmpidev.so (0x00002b1b488a7000)&lt;br /&gt;
     /lib64/ld-linux-x86-64.so.2 (0x00000038d0200000)&lt;br /&gt;
     libslurm.so.20 =&amp;gt; /usr/lib64/libslurm.so.20 (0x00002b1b48ba6000)&lt;br /&gt;
     libibverbs.so.1 =&amp;gt; /usr/lib64/libibverbs.so.1 (0x00002b1b48e66000)&lt;br /&gt;
     libsvml.so =&amp;gt; /opt/intel/Compiler/11.1/069/lib/intel64/libsvml.so (0x00002b1b49074000)&lt;br /&gt;
------------------------------------------&lt;br /&gt;
veredas4&lt;br /&gt;
veredas4&lt;br /&gt;
veredas4&lt;br /&gt;
veredas4&lt;br /&gt;
veredas4&lt;br /&gt;
veredas4&lt;br /&gt;
veredas4&lt;br /&gt;
veredas4&lt;br /&gt;
veredas5&lt;br /&gt;
veredas5&lt;br /&gt;
veredas5&lt;br /&gt;
veredas5&lt;br /&gt;
veredas5&lt;br /&gt;
veredas5&lt;br /&gt;
veredas5&lt;br /&gt;
veredas5&lt;br /&gt;
Hello MPI: processor 5 of 16 on veredas4&lt;br /&gt;
Hello MPI: processor 15 of 16 on veredas5&lt;br /&gt;
MPIBull2 1.3.9-s (Astlik) 20091113-1606 MPI_THREAD_FUNNELED (job 188) (device gen2)&lt;br /&gt;
Hello MPI: processor 0 of 16 on veredas4&lt;br /&gt;
Hello MPI: processor 1 of 16 on veredas4&lt;br /&gt;
Hello MPI: processor 2 of 16 on veredas4&lt;br /&gt;
Hello MPI: processor 3 of 16 on veredas4&lt;br /&gt;
Hello MPI: processor 4 of 16 on veredas4&lt;br /&gt;
Hello MPI: processor 7 of 16 on veredas4&lt;br /&gt;
Hello MPI: processor 8 of 16 on veredas5&lt;br /&gt;
Hello MPI: processor 6 of 16 on veredas4&lt;br /&gt;
Hello MPI: processor 9 of 16 on veredas5&lt;br /&gt;
Hello MPI: processor 10 of 16 on veredas5&lt;br /&gt;
Hello MPI: processor 11 of 16 on veredas5&lt;br /&gt;
Hello MPI: processor 12 of 16 on veredas5&lt;br /&gt;
Hello MPI: processor 13 of 16 on veredas5&lt;br /&gt;
Hello MPI: processor 14 of 16 on veredas5&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== Tarefas paralelas com ''threads'' (MPI+OpenMP) ===&lt;br /&gt;
Cada nó computacional do cluster Veredas da UFMG possui '''2 quad-cores''' totalizando '''8 ''cores'''''. Mostramos a seguir um exemplo de submissão de uma tarefa paralela (MPI+OpenMP) que utiliza a Infiniband, cujo executável foi compilado com o '''Intel MPI''' e que requisita '''8 processos''', sendo que cada processo é um conjunto de '''4 ''threads'''''.&lt;br /&gt;
&lt;br /&gt;
Repare que propositalmente, e contráriamente ao caso anterior, a ferramenta '''[https://docs.par-tec.com/html/psmpi-userguide/rn01re01.html mpiexec]''' foi utilizada em vez do '''srun''' para lançar os processos MPI. O SLURM foi então utilizado apenas para reservar os recursos necessários.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -J HelloWorld&lt;br /&gt;
#SBATCH --partition short&lt;br /&gt;
#SBATCH --nodes 4&lt;br /&gt;
#SBATCH --ntasks 8&lt;br /&gt;
#SBATCH --cpus-per-task 4&lt;br /&gt;
#SBATCH --time 00:30:00&lt;br /&gt;
&lt;br /&gt;
source /opt/intel/impi/4.0.0/bin64/mpivars.sh&lt;br /&gt;
&lt;br /&gt;
export OMP_NUM_THREADS=4&lt;br /&gt;
export I_MPI_PMI_LIBRARY=/usr/lib64/libpmi.so&lt;br /&gt;
export I_MPI_FABRICS=dapl&lt;br /&gt;
&lt;br /&gt;
sleep 20&lt;br /&gt;
&lt;br /&gt;
echo ’------------------------------------’&lt;br /&gt;
ldd ./hello&lt;br /&gt;
echo ’------------------------------------’&lt;br /&gt;
srun hostname -s | sort -u &amp;gt;slurm.hosts&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
mpdboot -n $SLURM_NNODES -f slurm.hosts -r ssh&lt;br /&gt;
mpiexec -perhost 2 -np 8 ./hello&lt;br /&gt;
mpdallexit&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
O diagrama abaixo,Figura 1, procura ilustrar a forma como os processos MPI e seus respetivos ''threads'' foram distribuídos nos '''32 cores''' dos quatro nós requisitados. A descrição detalhada de cada diretriz '''#SBATCH''' poderá ser consultada online através do comando man sbatch. A descrição de cada flag do mpiexec também pode ser obtida através de '''/opt/intel/impi/4.0.0/bin64/mpiexec -help'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[image:DiagramaTheadsMPI ClusterVeredas.png|frame|center|'''Figura 1''' - Diagrama com processos MPI e distribuição das '''''threads''''' em dois nós computacionais e 32 cores]]&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Variáveis de ambiente do Slurm ===&lt;br /&gt;
Quaisquer variáveis de ambiente que você define com o comando '''sbatch''' serão passadas para o seu ''job''. Por esse motivo, se o seu programa precisar que determinadas variáveis de ambiente , é melhor colocá-las no ''script'' do seu ''job''. Isso também facilita a reprodução dos resultados do ''job'' posteriormente, caso você necessite.&lt;br /&gt;
A tabela abaixo, contém informações sobre algumas das variáveis de ambiente de entrada e saída mais comuns quando se usa o comando '''sbatch''' no ''script shell''. Para informações adicionais, veja a página man do '''sbatch''' ou acesse a documentação online no site oficial do Slurm [https://slurm.schedmd.com/sbatch.html https://slurm.schedmd.com/sbatch.html].&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot; width=100%  border=1 cellpadding=35px  &lt;br /&gt;
!|Variáveis de ambiente&lt;br /&gt;
!|Definição&lt;br /&gt;
|-&lt;br /&gt;
|'''SLURM_JOB_ID (and SLURM_JOBID for backwards compatibility)'''&lt;br /&gt;
|''The ID of the job allocation.''&lt;br /&gt;
|-&lt;br /&gt;
|'''SLURM_JOB_NAME'''&lt;br /&gt;
|''Name of the job.''&lt;br /&gt;
|-&lt;br /&gt;
|'''SLURM_JOB_NODELIST (and SLURM_NODELIST for backwards compatibility)'''&lt;br /&gt;
|''List of nodes allocated to the job.''&lt;br /&gt;
|-&lt;br /&gt;
|'''SLURM_JOB_NUM_NODES (and SLURM_NNODES for backwards compatibility)'''&lt;br /&gt;
|''Total number of different nodes in the job's resource allocation.''&lt;br /&gt;
|-&lt;br /&gt;
|'''SLURM_ARRAY_TASK_COUNT'''&lt;br /&gt;
|''Total number of tasks in a job array.''&lt;br /&gt;
|-&lt;br /&gt;
|'''SLURM_ARRAY_TASK_ID'''&lt;br /&gt;
|''Job array ID (index) number.''&lt;br /&gt;
|-&lt;br /&gt;
|'''SLURM_ARRAY_TASK_MAX'''&lt;br /&gt;
|''Job array's maximum ID (index) number.''&lt;br /&gt;
|-&lt;br /&gt;
|'''SLURM_ARRAY_TASK_MIN'''&lt;br /&gt;
|''Job array's minimum ID (index) number.''&lt;br /&gt;
|-&lt;br /&gt;
|'''SLURM_ARRAY_TASK_STEP'''&lt;br /&gt;
|''Job array's index step size.''&lt;br /&gt;
|-&lt;br /&gt;
|'''SLURM_ARRAY_JOB_ID'''&lt;br /&gt;
|''Job array's master job ID number.''&lt;br /&gt;
|-&lt;br /&gt;
|'''SLURM_CLUSTER_NAME'''&lt;br /&gt;
|''Name of the cluster on which the job is executing.''&lt;br /&gt;
|-&lt;br /&gt;
|'''SLURM_CPUS_ON_NODE'''&lt;br /&gt;
|''Number of CPUS on the allocated node.''&lt;br /&gt;
|-&lt;br /&gt;
|'''SLURM_CPUS_PER_TASK'''&lt;br /&gt;
|''Number of cpus requested per task. Only set if the '''--cpus-per-task''' option is specified.''&lt;br /&gt;
|-&lt;br /&gt;
|'''SLURM_JOB_ACCOUNT'''&lt;br /&gt;
|''Account name associated of the job allocation.''&lt;br /&gt;
|-&lt;br /&gt;
|'''SLURM_JOB_CPUS_PER_NODE'''&lt;br /&gt;
|''Count of processors available to the job on this node.''&lt;br /&gt;
|-&lt;br /&gt;
|'''SLURM_JOB_DEPENDENCY'''&lt;br /&gt;
|''Set to value of the '''--dependency''' option.''&lt;br /&gt;
|-&lt;br /&gt;
|'''SLURM_MEM_PER_NODE'''&lt;br /&gt;
|''Same as '''--mem'''.''&lt;br /&gt;
|-&lt;br /&gt;
|'''SLURM_MEM_PER_CPU'''&lt;br /&gt;
|''Same as '''--mem-per-cpu'''.''&lt;br /&gt;
|-&lt;br /&gt;
|'''SLURM_NTASKS (and SLURM_NPROCS for backwards compatibility)'''&lt;br /&gt;
|''Same as '''-n, --ntasks'''''.&lt;br /&gt;
|-&lt;br /&gt;
|'''SLURM_NTASKS_PER_NODE'''&lt;br /&gt;
|''Number of tasks requested per node. Only set if the '''--ntasks-per-node''' option is specified.''&lt;br /&gt;
|-&lt;br /&gt;
|'''SLURM_NTASKS_PER_SOCKET'''&lt;br /&gt;
|''Number of tasks requested per socket. Only set if the '''--ntasks-per-socket''' option is specified.''&lt;br /&gt;
|-&lt;br /&gt;
|'''SLURM_SUBMIT_DIR'''&lt;br /&gt;
|''The directory from which '''sbatch''' was invoked.''&lt;br /&gt;
|-&lt;br /&gt;
|'''SLURM_SUBMIT_HOST'''&lt;br /&gt;
|''The hostname of the computer from which '''sbatch''' was invoked.''&lt;br /&gt;
|-&lt;br /&gt;
|'''SLURM_TASK_PID'''&lt;br /&gt;
|''The process ID of the task being started.''&lt;br /&gt;
|-&lt;br /&gt;
|'''SLURMD_NODENAME'''&lt;br /&gt;
|''Name of the node running the job script.''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Comparação entre o SLURM e o PBS Pro ==&lt;br /&gt;
Segue alguns comandos essenciais do SLURM e seus equivalentes no PBS Pro.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot; width=80%  border=1 cellpadding=35px  &lt;br /&gt;
!|Comando Slrum&lt;br /&gt;
!|Descrição do comando&lt;br /&gt;
!|Comando PBS Pro&lt;br /&gt;
|-&lt;br /&gt;
|'''srun'''&lt;br /&gt;
|submete um comando via SLURM no modo interativo.&lt;br /&gt;
|'''qsub -I'''&lt;br /&gt;
|-&lt;br /&gt;
|'''sbatch'''&lt;br /&gt;
|submete um ''script shell''.&lt;br /&gt;
|'''qsub'''&lt;br /&gt;
|-&lt;br /&gt;
|'''squeue'''&lt;br /&gt;
|lista todos os ''jobs'' (em execução ou no modo de espera) nas filas.&lt;br /&gt;
|'''qstat'''&lt;br /&gt;
|-&lt;br /&gt;
|'''scontrol'''&lt;br /&gt;
|modifica o estado de um ''job'' (maioria só é permitida ao ''root'').&lt;br /&gt;
|'''qalter'''&lt;br /&gt;
|-&lt;br /&gt;
|'''scancel'''&lt;br /&gt;
|cancela um ''job'', quer em execução ou na fila de espera.&lt;br /&gt;
|'''qdel'''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Variáveis de ambiente ===&lt;br /&gt;
Existem também algumas diferenças no tocante às variáveis de ambiente como ilustra a tabela abaixo:&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot; width=40%  border=1 cellpadding=35px  &lt;br /&gt;
!|Comando Slrum&lt;br /&gt;
!|Descrição do comando&lt;br /&gt;
|-&lt;br /&gt;
|$SLURM_JOB_ID&lt;br /&gt;
|$PBS_JOBID&lt;br /&gt;
|-&lt;br /&gt;
|$SLURM_JOB_NAME&lt;br /&gt;
|$PBS_JOBNAME&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
O SLURM não possui o equivalente à variável '''$PBS_NODEFILE''' que aponta para o arquivo que contém os nomes dos nós computacionais reservados para a execução do ''job''. Contudo, quando necessário, é possível criar manualmente esse tipo de arquivo com o comando '''srun''':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash -x&lt;br /&gt;
&lt;br /&gt;
HOSTFILE=/tmp/hosts.$SLURM_JOB_ID&lt;br /&gt;
&lt;br /&gt;
srun hostname -s &amp;gt; $HOSTFILE&lt;br /&gt;
&lt;br /&gt;
if [ -z &amp;quot;$SLURM_NPROCS&amp;quot; ] ; then&lt;br /&gt;
  if [ -z &amp;quot;$SLURM_NTASKS_PER_NODE&amp;quot; ] ; then&lt;br /&gt;
    SLURM_NTASKS_PER_NODE=1&lt;br /&gt;
  fi&lt;br /&gt;
    SLURM_NPROCS=$(( $SLURM_JOB_NUM_NODES * $SLURM_NTASKS_PER_NODE ))&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
/path/to/mpirun -machinefile $HOSTFILE -np $SLURM_NPROCS programa.x&lt;br /&gt;
&lt;br /&gt;
rm /tmp/hosts.$SLURM_JOB_ID&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Diretório de execução ===&lt;br /&gt;
Uma outra diferença importante que distingue o '''SLURM''' do '''PBS Pro''' é que enquanto no primeiro escalonador a tarefa batch é executada automáticamente no diretório de onde foi submetido o seu script, o segundo precisa explicitamente que seja introduzida a seguinte linha:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash -x&lt;br /&gt;
...&lt;br /&gt;
cd $PBS_O_WORKDIR&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As variáveis de ambiente que são definidas durante uma sessão shell do '''SLURM''' são automáticamente exportadas para o ''job batch'' em todos os nós computacionais no instante em que o script entra em execução. Já no '''PBS Pro''' é necessário garantir isso com a introdução da diretriz:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash -x&lt;br /&gt;
...&lt;br /&gt;
#PBS -V&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Output ===&lt;br /&gt;
O '''SLURM''' apresenta ainda uma vantagem considerável e muito útil para aqueles usuários que precisam inspecionar numéricamente e em tempo real a evolução do seu programa, como por exemplo, a convergência de uma determinada iteração: os arquivos de saída '''stdout''' e de erro, '''stderr''' (ver as flags do SLURM) , são criados automáticamnte no diretório de onde foi submetido o script e vão crescendo gradualmente de tamanho à medida que a simulação evolui no tempo. O '''PBS Pro''' mostra-se insuficiente neste quesito: somente no final da execução da tarefa é que os arquivos de saída são escritos no diretório destinado.&lt;br /&gt;
&lt;br /&gt;
=== Diretrizes de submissão ===&lt;br /&gt;
Finalmente com o intuito de auxiliar os usuários na migração dos seus scripts de submissão do '''PBS Pro''' para o '''SLURM''' apresentamos a seguinte tabela comparativa das diretrizes de submissão:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot; width=60%  border=1 cellpadding=35px  &lt;br /&gt;
!|PBS Pro&lt;br /&gt;
!|Slurm&lt;br /&gt;
|-&lt;br /&gt;
|#PBS -N job_name&lt;br /&gt;
|#SBATCH –job-name=”job_name” ou #SBATCH -J job_name&lt;br /&gt;
|-&lt;br /&gt;
|#PBS -l nodes=n&lt;br /&gt;
|#SBATCH –nodes=n&lt;br /&gt;
|-&lt;br /&gt;
|#PBS -l walltime=HH:MM:SS&lt;br /&gt;
|#SBATCH –time=HH:MM:SS&lt;br /&gt;
|-&lt;br /&gt;
|#PBS -l min_walltime=HH:MM:SS&lt;br /&gt;
|#SBATCH –time-min=HH:MM:SS&lt;br /&gt;
|-&lt;br /&gt;
|#PBS -q &amp;lt;queue&amp;gt;&lt;br /&gt;
|#SBATCH –partition=&amp;lt;queue&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|#PBS -l mppwidth=n&lt;br /&gt;
|#SBATCH –ntasks=n&lt;br /&gt;
|-&lt;br /&gt;
|#PBS -l mppnppn=N&lt;br /&gt;
|#SBATCH –ntasks-per-node=N&lt;br /&gt;
|-&lt;br /&gt;
|#PBS -l mppdepth=d&lt;br /&gt;
|#SBATCH –cpus-per-task=d&lt;br /&gt;
|-&lt;br /&gt;
|#PBS -l mppmem=mM&lt;br /&gt;
|#SBATCH –mem=m&lt;br /&gt;
|-&lt;br /&gt;
|#PBS -l mppnodes=&amp;lt;nid-list&amp;gt;&lt;br /&gt;
|#SBATCH –nodelist=&amp;lt;nid-list&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|#PBS -W group_list=a_group&lt;br /&gt;
|#SBATCH –account=a_group&lt;br /&gt;
|-&lt;br /&gt;
|#PBS -o /path/to/stdout&lt;br /&gt;
|#SBATCH –output=/path/to/stdout (pode ser usado %j para jobid)&lt;br /&gt;
|-&lt;br /&gt;
|#PBS -e /path/to/stderr&lt;br /&gt;
|#SBATCH –error=/path/to/stderr&lt;br /&gt;
|-&lt;br /&gt;
|#PBS -V&lt;br /&gt;
|não é necessário&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Devemos também ressaltar que as diretrizes do SLURM podem ser especificadas na linha de comando em vez de colocadas no ''script'':&lt;br /&gt;
&amp;lt;pre class=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
[test3@veredas0 ~]$ sbatch --job-name=&amp;quot;meu job&amp;quot; --ntasks=N ...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;aviso&amp;quot;&amp;gt;&lt;br /&gt;
'''Aviso:''' Para uma informação mais detalhada sobre o escalonador '''SLURM''' o usuário poderá baixar e consultar o arquivo [https://www.lcc.ufmg.br/sites/default/files/manuais/BullXClusterSuite-UserGuide.pdf Bullx cluster suite: User’s Guide]. Para quem estiver interessado o [https://www.cscs.ch Swiss National Supercomputing Centre] disponibiza um video no qual são feitas várias demonstrações de como o usuário pode interagir com o '''SLURM'''.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Manuais]]&lt;br /&gt;
[[Category:Cluster Avicena]]&lt;br /&gt;
[[Category:Cluster Veredas]]&lt;br /&gt;
[[Category:Slurm]]&lt;br /&gt;
[[Category:Gerenciador de filas]]&lt;/div&gt;</summary>
		<author><name>Admlccwiki</name></author>
		
	</entry>
	<entry>
		<id>https://www.lcc.ufmg.br/wiki/index.php?title=Guia_Pr%C3%A1tico_do_cluster_Veredas_LCC/CENAPAD-MG&amp;diff=290</id>
		<title>Guia Prático do cluster Veredas LCC/CENAPAD-MG</title>
		<link rel="alternate" type="text/html" href="https://www.lcc.ufmg.br/wiki/index.php?title=Guia_Pr%C3%A1tico_do_cluster_Veredas_LCC/CENAPAD-MG&amp;diff=290"/>
		<updated>2021-09-25T00:10:30Z</updated>

		<summary type="html">&lt;p&gt;Admlccwiki: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Abertura de conta ==&lt;br /&gt;
Após o usuário preencher o [https://www.lcc.ufmg.br/abertura-de-conta formulário eletrônico de abertura de conta] e enviar para o LCC/CENAPAD-MG, caso aprovada pela equipe do LCC/CENAPAD-MG, a conta será aberta e este poderá utlizar o Cluster Veredas LCC/CENAPAD-MG. O usuário receberá os dados de acesso através do email cadastrado no ato da aberto de conta.&lt;br /&gt;
&lt;br /&gt;
A abertura de cada conta estará vinculada a um projeto para fins de contabilidade de uso. No cluster o projeto será identificado pelo grupo unix '''CODIGO_DO_PROJETO''' (código que você receberá por email) e as áreas de trabalho concedidas são:&lt;br /&gt;
&lt;br /&gt;
*áreas privativas dos usuários: /home_cluster/'''CODIGO_DO_PROJETO'''/'''SEU_LOGIN'''&lt;br /&gt;
*área para software do grupo: /projetos/'''CODIGO_DO_PROJETO'''&lt;br /&gt;
*storage para dados computacionais: /storage/'''CODIGO_DO_PROJETO'''&lt;br /&gt;
&lt;br /&gt;
Somente os usuários do grupo '''CODIGO_DO_PROJETO''' têm permissões de leitura, escrita e execução nos diretórios /projetos/'''CODIGO_DO_PROJETO''' e /storage/'''CODIGO_DO_PROJETO'''. A organização interna dos diretórios fica a critério dos membros do grupo. O responsável pelas atividades e ações do grupo será o seu pesquisador principal (principal investigator, PI), ou seja, o professor com vínculo empregatício à sua universidade de origem ou um PostDoc. Em geral será o pesquisador principal que solicitará a abertura de projeto e a inclusão de seus colaboradores de pesquisa. Qualquer usuário poderá solicitar à equipe de manutenção a sua inclusão em mais de um projeto diferente, sujeito à aprovação do seu respetivo PI.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;aviso&amp;quot;&amp;gt;&lt;br /&gt;
'''Atenção!'''&amp;lt;br/&amp;gt;&lt;br /&gt;
Para a comunicação das senhas será utilizado o serviço [https://pwpush.com Password Pusher]. Trata-se de um serviço de anotações online no qual o destinatário tem um tempo limite para ler a anotação até que esta se auto-destrua. Os links de acesso ao '''Password Pusher''' serão enviados posteriormente para cada email cadastrado. No momento em que o link for ‘clicado’, a página será carregada com uma janela contendo uma string de 16 caracteres alfanuméricos. Essa string é a senha gerada pelo LCC/CENAPAD-MG para o usuário logar no cluster. Copie essa string, porque o link será destruído. A senha que enviamos tem entropia suficiente para ser muito difícil a sua descoberta através de métodos de força bruta. Caso pretenda trocar a senha enviada sugerimos que utilize o website [https://www.ssh.com/iam/password/generator Password Generator] para gerar a nova senha e depois cadastrar no cluster através do comando unix '''passwd'''. Lembre-se também da importância de guardar as senhas de forma segura. Utilize por exemplo o serviço [https://www.lastpass.com LastPass]. Concluindo, todos os estudos corroboram que a principal razão por detrás da grande maioria dos incidentes de segurança digital é a utilização de senhas fracas, a utilização da mesma senha para vários locais e o seu furto em servidores e websites inseguros.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Acesso Remoto ==&lt;br /&gt;
O acesso ao Cluster Veredas LCC/CENAPAD-MG é feito via ssh através do endereço: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ssh SEU_LOGIN@veredas.cenapad.ufmg.br&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* substitua a palavra '''SEU_LOGIN''' pelo login que você recebeu após a abertura da conta. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Caso necessite de mais detalhes, acesso os link abaixo:&lt;br /&gt;
&lt;br /&gt;
*[[Acesso remoto para usuários Linux|Acesso remoto para usuários Linux]]&lt;br /&gt;
&lt;br /&gt;
*[[Acesso remoto para usuários Windows|Acesso remoto para usuários Windows]]&lt;br /&gt;
&lt;br /&gt;
== O Cluster Veredas LCC/CENAPAD-MG ==&lt;br /&gt;
&lt;br /&gt;
O Cluster Veredas LCC/CENAPAD-­MG possui 109 nós computacionais distribuídos físicamente em 4 racks, Figura 1, cada nó com 2 processadores quadcore e 16 Gigabytes de memória principal, agregando um total de 848 núcleos de processamento (cores) e aproximadamente 1.7 Terabytes de memória distribuída pela máquina. O potencial de desempenho teórico do cluster traduzem em 9 Teraflops (nove trilhões de operações elementares por segundo). O Cluster é interligado através de um ''switch'' lógico de alto desempenho segundo a arquitetura de rede [https://en.wikipedia.org/wiki/InfiniBand '''INFINIBAND'''] o que permite a execução rápida de programas paralelos (distribuidos) que usam a rede para troca de dados. O cluster conta também com um storage interno com uma capacidade de armazenamento nominal de 45 TB para dados e backup.&lt;br /&gt;
&lt;br /&gt;
[[Arquivo:FiguraClusterBull LCC-CENAPAD-MG.png|450px|thumb|center|'''Figura 1 -''' Figura que descreve a estrutura do Cluster Veredas LCC/CENAPAD-MG]]&lt;br /&gt;
&lt;br /&gt;
=== Hardware ===&lt;br /&gt;
Os servidores que compõem o cluster de alto desempenho do LCC/CENAPAD-MG estão organizados da seguinte forma:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot; width=50%  border=1 cellpadding=35px  &lt;br /&gt;
!|Quantidade&lt;br /&gt;
!|Descrição&lt;br /&gt;
!|Hardware&lt;br /&gt;
!|Hostnames&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Servidor login (frontend)&amp;lt;br/&amp;gt; Modelo: Bull R460&lt;br /&gt;
|2x Quad Xeon 5130 2GHz - 1333FSB &amp;lt;br/&amp;gt; 8GB DDR3 RAM &amp;lt;br/&amp;gt; 147GB 15K RPM SAS disk&lt;br /&gt;
|veredas0&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Servidor de I/O (NFS)&amp;lt;br/&amp;gt; Modelo: Bull R460&lt;br /&gt;
|2x Quad Xeon 5130 2 GHz - 1333 FSB &amp;lt;br/&amp;gt; 8GB DDR3 RAM &amp;lt;br/&amp;gt; 147GB 15K RPM SAS disk&lt;br /&gt;
|veredas1&lt;br /&gt;
|-&lt;br /&gt;
|107&lt;br /&gt;
|Nodos computacionais&amp;lt;br/&amp;gt; Modelo: R422-E1&lt;br /&gt;
|2x Quad Xeon 5355 2.6 Ghz - 1600 FSB &amp;lt;br/&amp;gt; 16 GB DDR3 RAM &amp;lt;br/&amp;gt; 160GB 7200 RPM SATA3 disk&lt;br /&gt;
|veredas[2,…,107]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Todo o trabalho de desenvolvimento de programas científicos bem como a preparação das tarefas computacionais devem ser realizados no servidor de login '''veredas0'''. O workflow que rege um determinado cálculo deve ser expresso num arquivo de ''script'' em linguagem bash e submetido ao [[Slurm|gerenciador de recursos '''Slurm''']].&lt;br /&gt;
&lt;br /&gt;
Extensa fonte de informação sobre o [https://www.schedmd.com/ '''Slurm'''] encontra-se no site dos seus criadores, onde é mantida uma mailing-list para usuários [https://lists.schedmd.com/cgi-bin/mailman/listinfo/slurm-users '''slurm-users''']. Praticamente todos os grandes centros de HPC no mundo apresentam também exemplos de submissão de jobs para códigos específicos das diversas áreas.&lt;br /&gt;
&lt;br /&gt;
=== Software ===&lt;br /&gt;
==== Compiladores ====&lt;br /&gt;
O cluster está equipado com vários compiladores e ferramentas de análise de desempenho, de depuração e de desenvolvimento. Para além dos compiladores integrados que acompanham a distribuição '''Redhat Enterprise Linux 5.3''', tais como o '''''gcc, gfortran, dbg, openmpi, mpich2''''', etc, sob a licença da [http://www.gnu.org/licenses/gpl-3.0.html '''GNU'''], existem também os suítes proprietários da '''Intel''' e da '''BULL''':&lt;br /&gt;
&lt;br /&gt;
* '''Intel(R) Fortran Compiler 11.1 for IA-32 / Intel(R) 64'''&lt;br /&gt;
:* Diretório raiz:&lt;br /&gt;
::: /opt/intel/Compiler/11.1/073&lt;br /&gt;
:* Documentação online:&lt;br /&gt;
::: /opt/intel/Compiler/11.1/069/Documentation/en_US/documentation_f.htm&lt;br /&gt;
::: /opt/intel/Compiler/11.1/069/Documentation/en_US/getting_started_f.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Intel(R) C/C++ Compiler 11.1 for IA-32 / Intel(R) 64'''&lt;br /&gt;
:* Diretório raiz:&lt;br /&gt;
::: /opt/intel/Compiler/11.1/073&lt;br /&gt;
:* Documentação online:&lt;br /&gt;
::: /opt/intel/Compiler/11.1/069/Documentation/en_US/documentation_c.htm&lt;br /&gt;
::: /opt/intel/Compiler/11.1/069/Documentation/en_US/getting_started_c.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Intel(R) MPI Library, Development Kit for Linux OS'''&lt;br /&gt;
:* Diretório raiz:&lt;br /&gt;
::: /opt/intel/impi/4.0.0.028&lt;br /&gt;
:* Documentação online:&lt;br /&gt;
::: /opt/intel/impi/4.0.0.028/doc/Getting_Started.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''BULL Development package for MPI-2'''&lt;br /&gt;
:* Diretório raiz:&lt;br /&gt;
::: /opt/mpi/mpibull2-1.3.9-18.s/&lt;br /&gt;
:* Documentação online:&lt;br /&gt;
::: /usr/local/share/info/20110325/Docs/XBAS-CS/86A222FA02.pdf (Chapter 2)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;aviso&amp;quot;&amp;gt;&lt;br /&gt;
'''Dica'''&amp;lt;br/&amp;gt;&lt;br /&gt;
A versão mais recente dos suítes de compilação da Intel (14.0.1) encontra-se sob o diretório /opt/intel/composer_xe_2013_sp1.1.106/. A distribuição Redhat Enterprise Linux (v5.3) do cluster oferece a versão 2.4 da linguagem de programação Python. Uma versão paralela do '''Python''' oferecida pela Enthought, a distribuição Canopy, está instalada no diretório /var/Canopy. Sobre como utilizar esta distribuição poderá consultar o site [https://www.enthought.com/products/canopy https://www.enthought.com/products/canopy]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Bibliotecas para desenvolvimento ====&lt;br /&gt;
Várias versões de bibliotecas numéricas para desenvolvimento (''Bull SciStudio Book Shelf'') estão instaladas no diretório raiz '''/opt/scilibs'''. Para uma descrição detalhada de cada biblioteca basta apontar o browser interno do cluster para o diretório '''/opt/scilibs/SCISTUDIO_SHELF/SciStudio_shelf-1.1_Bull.9005/_www/Shelf.html'''. Uma visão global da ''Bull SciStudio'' pode ser encontrada no '''capítulo 3 do Users’s Guide''' ('''/usr/local/share/info/20110325/Docs/XBAS-CS/86A222FA02.pdf''').&lt;br /&gt;
&lt;br /&gt;
==== Aplicações ====&lt;br /&gt;
Os pacotes científicos instalados pela equipe de operação do cluster estão localizados nos diretórios raiz '''/opt/sci''' e '''/usr/local/ohpc/pub'''. Os pacotes de domínio público serão instalados sob demanda dos usuários. Está aberta a possibilidade de instalação de pacotes proprietários (licença paga) para uso exclusivo de determinados grupos de pesquisa. Nestes casos, é conveniente haver um contato prévio entre o grupo interessado e a equipe de operação de modo a realizar uma instalação que respeite as cláusulas da licença de contrato do software.&lt;br /&gt;
&lt;br /&gt;
O cluster '''veredas''' possui o pacote de gerenciamento [https://github.com/TACC/Lmod '''Lmod'''] [https://github.com/TACC/Lmod (https://github.com/TACC/Lmod)] instalado. Esta ferramenta permite a um usuário alternar entre diferentes versões de um pacote ou compiladores de maneira fácil, limpa e eficaz. O [https://github.com/TACC/Lmod '''Lmod'''] define dinâmicamente as variáveis de ambiente comuns tais como o '''PATH''', '''LD_LIBRARY_PATH''', '''MANPATH''' entre outras, sem que o usuário tenha que as definir no seu arquivo '''.bash_profile''' toda a vez que precisar utilizar uma determinada aplicação científica. Adicionalmente o [https://github.com/TACC/Lmod '''Lmod'''] permite “carregar” e “descarregar” combinações de aplicações/compiladores incluindo as suas dependências. As variáveis de ambiente específicas de cada pacote estão definidas em um arquivo designado por '''''modulefile''''' &amp;lt;ref&amp;gt;Trata-se de um arquivo do tipo ''script'' que pode ser escrito na linguagem&lt;br /&gt;
[https://www.tcl.tk TCL] [https://www.tcl.tk (https://www.tcl.tk)] ou [https://www.lua.org Lua] [https://www.lua.org (https://www.lua.org)].&amp;lt;/ref&amp;gt; . Os arquivos modulefile (módulos) estão localizados hierárquicamente sob o diretório definido em '''$MODULEPATH''' (i.e., '''/usr/local/ohpc/pub/modulefiles'''). Existem vários comandos que podem ser utilizados para gerenciar os arquivos modulefile:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot; width=60%  border=1 cellpadding=35px  &lt;br /&gt;
!|Comando&lt;br /&gt;
!|Descrição&lt;br /&gt;
|-&lt;br /&gt;
|'''module avail'''&lt;br /&gt;
|Lista todos os módulos disponíveis para carregamento&lt;br /&gt;
|-&lt;br /&gt;
|'''module spider &amp;lt;pattern&amp;gt;'''&lt;br /&gt;
|Procura por um módulo específico (e.g. module spider siesta)&lt;br /&gt;
|-&lt;br /&gt;
|'''module load &amp;lt;mod1&amp;gt;[mod2 …]'''&lt;br /&gt;
|'''''Carrega''''' um módulo ou lista de módulos&lt;br /&gt;
|-&lt;br /&gt;
|'''module unload &amp;lt;module&amp;gt;'''&lt;br /&gt;
|'''''Descarrega''''' o módulo&lt;br /&gt;
|-&lt;br /&gt;
|'''module list'''&lt;br /&gt;
|Lista todos os módulos que estão carregados no ambiente&lt;br /&gt;
|-&lt;br /&gt;
|'''module purge'''&lt;br /&gt;
|Descarrega todos os módulos que estão carregados no ambiente&lt;br /&gt;
|-&lt;br /&gt;
|'''module display &amp;lt;module&amp;gt;'''&lt;br /&gt;
|Mostra o conteúdo do módulo (e.g. quais as variáveis de ambiente que são definidas)&lt;br /&gt;
|-&lt;br /&gt;
|'''module use &amp;lt;path&amp;gt;'''&lt;br /&gt;
|Acrescenta um diretório local de módulos de um usuário aos módulos do sistema&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Mostramos abaixo o exemplo de saída na ''console'' quando o comando '''module avail''' é executado:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
[user_test@veredas0 ~]$ module avail&lt;br /&gt;
&lt;br /&gt;
-------------------------------- /usr/local/ohpc/pub/modulefiles -------------&lt;br /&gt;
   autotools intel/10.1.008&lt;br /&gt;
   bats/1.1.0 intel/11.1.069&lt;br /&gt;
   cmake/3.9.2 intel/14.0.1 (D)&lt;br /&gt;
   convergecfd/2.3.9 (P) intel/15.0.6 (T)&lt;br /&gt;
   convergecfd/2.3.20 (P) launcher/0.0.git.159.12b099a&lt;br /&gt;
   convergecfd/2.3.23 (P) likwid/4.3.1&lt;br /&gt;
   convergecfd/2.4.17 (P,D) ohpc&lt;br /&gt;
   gnu/5.4.0 orca/4.0.1 (P)&lt;br /&gt;
   gnu4/4.8.2 pgi/17.10&lt;br /&gt;
   gnu7/7.2.0 prun/1.2&lt;br /&gt;
   hwloc/1.11.9 simple/2.5&lt;br /&gt;
   ibrun-veredas/0.0.git.15.f58fde0 star-cd/4.24.021 (T)&lt;br /&gt;
&lt;br /&gt;
-------------------------------- /home/user_test/privatemodules --------------&lt;br /&gt;
&lt;br /&gt;
   null&lt;br /&gt;
  Where:&lt;br /&gt;
   T: Testing&lt;br /&gt;
   P: Group restricted&lt;br /&gt;
   D: Default Module&lt;br /&gt;
Use &amp;quot;module spider&amp;quot; to find all possible modules.&lt;br /&gt;
Use &amp;quot;module keyword key1 key2 ...&amp;quot; to search for all possible modules matching&lt;br /&gt;
any of the &amp;quot;keys&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
------------------------------------------------------------------------------&lt;br /&gt;
Site: http://www.cenapad.ufmg.br.&lt;br /&gt;
Email: &amp;lt;computacaocientifica@lcc.ufmg.br&amp;gt;.&lt;br /&gt;
Telefone: 3409-4909&lt;br /&gt;
------------------------------------------------------------------------------&lt;br /&gt;
[user_test@veredas0 ~]$&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;aviso&amp;quot;&amp;gt;&lt;br /&gt;
'''Dica'''&amp;lt;br/&amp;gt;&lt;br /&gt;
Para uma consulta mais detalhada sobre o cluster, a BULL disponibiliza aos usuários os seguintes guias de utilização:&lt;br /&gt;
*Bullx cluster suite: User’s Guide&lt;br /&gt;
:/usr/local/share/info/20110325/Docs/XBAS-CS/86A222FA02.pdf&lt;br /&gt;
&lt;br /&gt;
*Bullx cluster suite: Application Tuning Guide&lt;br /&gt;
:/usr/local/share/info/20110325/Docs/XBAS-CS/86A223FA02.pdf&lt;br /&gt;
&lt;br /&gt;
Diversos documentos e apresentações podem também ser encontrados sob o diretório&lt;br /&gt;
/usr/local/share/info&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Notas ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Manuais]]&lt;br /&gt;
[[Category:Cluster Veredas‏]]&lt;br /&gt;
[[Category:Guia Prático do cluster Veredas LCC/CENAPAD-MG‎]]&lt;/div&gt;</summary>
		<author><name>Admlccwiki</name></author>
		
	</entry>
	<entry>
		<id>https://www.lcc.ufmg.br/wiki/index.php?title=Categoria:Slurm&amp;diff=289</id>
		<title>Categoria:Slurm</title>
		<link rel="alternate" type="text/html" href="https://www.lcc.ufmg.br/wiki/index.php?title=Categoria:Slurm&amp;diff=289"/>
		<updated>2021-09-25T00:08:46Z</updated>

		<summary type="html">&lt;p&gt;Admlccwiki: Limpou toda a página&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Admlccwiki</name></author>
		
	</entry>
	<entry>
		<id>https://www.lcc.ufmg.br/wiki/index.php?title=Categoria:Instalar_cliente_OpenSSH_no_Windows&amp;diff=288</id>
		<title>Categoria:Instalar cliente OpenSSH no Windows</title>
		<link rel="alternate" type="text/html" href="https://www.lcc.ufmg.br/wiki/index.php?title=Categoria:Instalar_cliente_OpenSSH_no_Windows&amp;diff=288"/>
		<updated>2021-09-25T00:08:37Z</updated>

		<summary type="html">&lt;p&gt;Admlccwiki: Limpou toda a página&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Admlccwiki</name></author>
		
	</entry>
	<entry>
		<id>https://www.lcc.ufmg.br/wiki/index.php?title=Categoria:Guia_Pr%C3%A1tico_do_cluster_Veredas_LCC/CENAPAD-MG&amp;diff=287</id>
		<title>Categoria:Guia Prático do cluster Veredas LCC/CENAPAD-MG</title>
		<link rel="alternate" type="text/html" href="https://www.lcc.ufmg.br/wiki/index.php?title=Categoria:Guia_Pr%C3%A1tico_do_cluster_Veredas_LCC/CENAPAD-MG&amp;diff=287"/>
		<updated>2021-09-25T00:08:23Z</updated>

		<summary type="html">&lt;p&gt;Admlccwiki: Limpou toda a página&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Admlccwiki</name></author>
		
	</entry>
	<entry>
		<id>https://www.lcc.ufmg.br/wiki/index.php?title=Categoria:Cluster_Veredas&amp;diff=285</id>
		<title>Categoria:Cluster Veredas</title>
		<link rel="alternate" type="text/html" href="https://www.lcc.ufmg.br/wiki/index.php?title=Categoria:Cluster_Veredas&amp;diff=285"/>
		<updated>2021-09-25T00:07:51Z</updated>

		<summary type="html">&lt;p&gt;Admlccwiki: Limpou toda a página&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Admlccwiki</name></author>
		
	</entry>
	<entry>
		<id>https://www.lcc.ufmg.br/wiki/index.php?title=Categoria:Gerenciador_de_filas&amp;diff=284</id>
		<title>Categoria:Gerenciador de filas</title>
		<link rel="alternate" type="text/html" href="https://www.lcc.ufmg.br/wiki/index.php?title=Categoria:Gerenciador_de_filas&amp;diff=284"/>
		<updated>2021-09-25T00:07:33Z</updated>

		<summary type="html">&lt;p&gt;Admlccwiki: Limpou toda a página&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Admlccwiki</name></author>
		
	</entry>
	<entry>
		<id>https://www.lcc.ufmg.br/wiki/index.php?title=Categoria:Guia_Pr%C3%A1tico_do_cluster_Veredas_LCC/CENAPAD-MG&amp;diff=282</id>
		<title>Categoria:Guia Prático do cluster Veredas LCC/CENAPAD-MG</title>
		<link rel="alternate" type="text/html" href="https://www.lcc.ufmg.br/wiki/index.php?title=Categoria:Guia_Pr%C3%A1tico_do_cluster_Veredas_LCC/CENAPAD-MG&amp;diff=282"/>
		<updated>2021-09-25T00:06:05Z</updated>

		<summary type="html">&lt;p&gt;Admlccwiki: Admlccwiki moveu Categoria:Guia Prático do cluster BULL LCC/CENAPAD-MG para Categoria:Guia Prático do cluster Veredas LCC/CENAPAD-MG&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Manuais]]&lt;/div&gt;</summary>
		<author><name>Admlccwiki</name></author>
		
	</entry>
	<entry>
		<id>https://www.lcc.ufmg.br/wiki/index.php?title=Categoria:Guia_Pr%C3%A1tico_do_cluster_BULL_LCC/CENAPAD-MG&amp;diff=283</id>
		<title>Categoria:Guia Prático do cluster BULL LCC/CENAPAD-MG</title>
		<link rel="alternate" type="text/html" href="https://www.lcc.ufmg.br/wiki/index.php?title=Categoria:Guia_Pr%C3%A1tico_do_cluster_BULL_LCC/CENAPAD-MG&amp;diff=283"/>
		<updated>2021-09-25T00:06:05Z</updated>

		<summary type="html">&lt;p&gt;Admlccwiki: Admlccwiki moveu Categoria:Guia Prático do cluster BULL LCC/CENAPAD-MG para Categoria:Guia Prático do cluster Veredas LCC/CENAPAD-MG&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECIONAMENTO [[:Categoria:Guia Prático do cluster Veredas LCC/CENAPAD-MG]]&lt;/div&gt;</summary>
		<author><name>Admlccwiki</name></author>
		
	</entry>
	<entry>
		<id>https://www.lcc.ufmg.br/wiki/index.php?title=Guia_Pr%C3%A1tico_do_cluster_Veredas_LCC/CENAPAD-MG&amp;diff=281</id>
		<title>Guia Prático do cluster Veredas LCC/CENAPAD-MG</title>
		<link rel="alternate" type="text/html" href="https://www.lcc.ufmg.br/wiki/index.php?title=Guia_Pr%C3%A1tico_do_cluster_Veredas_LCC/CENAPAD-MG&amp;diff=281"/>
		<updated>2021-09-25T00:04:48Z</updated>

		<summary type="html">&lt;p&gt;Admlccwiki: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Abertura de conta ==&lt;br /&gt;
Após o usuário preencher o [https://www.lcc.ufmg.br/abertura-de-conta formulário eletrônico de abertura de conta] e enviar para o LCC/CENAPAD-MG, caso aprovada pela equipe do LCC/CENAPAD-MG, a conta será aberta e este poderá utlizar o Cluster Bull LCC/CENAPAD-MG. O usuário receberá os dados de acesso através do email cadastrado no ato da aberto de conta.&lt;br /&gt;
&lt;br /&gt;
A abertura de cada conta estará vinculada a um projeto para fins de contabilidade de uso. No cluster o projeto será identificado pelo grupo unix '''CODIGO_DO_PROJETO''' (código que você receberá por email) e as áreas de trabalho concedidas são:&lt;br /&gt;
&lt;br /&gt;
*áreas privativas dos usuários: /home_cluster/'''CODIGO_DO_PROJETO'''/'''SEU_LOGIN'''&lt;br /&gt;
*área para software do grupo: /projetos/'''CODIGO_DO_PROJETO'''&lt;br /&gt;
*storage para dados computacionais: /storage/'''CODIGO_DO_PROJETO'''&lt;br /&gt;
&lt;br /&gt;
Somente os usuários do grupo '''CODIGO_DO_PROJETO''' têm permissões de leitura, escrita e execução nos diretórios /projetos/'''CODIGO_DO_PROJETO''' e /storage/'''CODIGO_DO_PROJETO'''. A organização interna dos diretórios fica a critério dos membros do grupo. O responsável pelas atividades e ações do grupo será o seu pesquisador principal (principal investigator, PI), ou seja, o professor com vínculo empregatício à sua universidade de origem ou um PostDoc. Em geral será o pesquisador principal que solicitará a abertura de projeto e a inclusão de seus colaboradores de pesquisa. Qualquer usuário poderá solicitar à equipe de manutenção a sua inclusão em mais de um projeto diferente, sujeito à aprovação do seu respetivo PI.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;aviso&amp;quot;&amp;gt;&lt;br /&gt;
'''Atenção!'''&amp;lt;br/&amp;gt;&lt;br /&gt;
Para a comunicação das senhas será utilizado o serviço [https://pwpush.com Password Pusher]. Trata-se de um serviço de anotações online no qual o destinatário tem um tempo limite para ler a anotação até que esta se auto-destrua. Os links de acesso ao '''Password Pusher''' serão enviados posteriormente para cada email cadastrado. No momento em que o link for ‘clicado’, a página será carregada com uma janela contendo uma string de 16 caracteres alfanuméricos. Essa string é a senha gerada pelo LCC/CENAPAD-MG para o usuário logar no cluster. Copie essa string, porque o link será destruído. A senha que enviamos tem entropia suficiente para ser muito difícil a sua descoberta através de métodos de força bruta. Caso pretenda trocar a senha enviada sugerimos que utilize o website [https://www.ssh.com/iam/password/generator Password Generator] para gerar a nova senha e depois cadastrar no cluster através do comando unix '''passwd'''. Lembre-se também da importância de guardar as senhas de forma segura. Utilize por exemplo o serviço [https://www.lastpass.com LastPass]. Concluindo, todos os estudos corroboram que a principal razão por detrás da grande maioria dos incidentes de segurança digital é a utilização de senhas fracas, a utilização da mesma senha para vários locais e o seu furto em servidores e websites inseguros.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Acesso Remoto ==&lt;br /&gt;
O acesso ao Cluster Bull LCC/CENAPAD-MG é feito via ssh através do endereço: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ssh SEU_LOGIN@veredas.cenapad.ufmg.br&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* substitua a palavra '''SEU_LOGIN''' pelo login que você recebeu após a abertura da conta. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Caso necessite de mais detalhes, acesso os link abaixo:&lt;br /&gt;
&lt;br /&gt;
*[[Acesso remoto para usuários Linux|Acesso remoto para usuários Linux]]&lt;br /&gt;
&lt;br /&gt;
*[[Acesso remoto para usuários Windows|Acesso remoto para usuários Windows]]&lt;br /&gt;
&lt;br /&gt;
== O Cluster Bull LCC/CENAPAD-MG ==&lt;br /&gt;
&lt;br /&gt;
O Cluster Bull LCC/CENAPAD-­MG possui 109 nós computacionais distribuídos físicamente em 4 racks, Figura 1, cada nó com 2 processadores quadcore e 16 Gigabytes de memória principal, agregando um total de 848 núcleos de processamento (cores) e aproximadamente 1.7 Terabytes de memória distribuída pela máquina. O potencial de desempenho teórico do cluster traduzem em 9 Teraflops (nove trilhões de operações elementares por segundo). O Cluster é interligado através de um ''switch'' lógico de alto desempenho segundo a arquitetura de rede [https://en.wikipedia.org/wiki/InfiniBand '''INFINIBAND'''] o que permite a execução rápida de programas paralelos (distribuidos) que usam a rede para troca de dados. O cluster conta também com um storage interno com uma capacidade de armazenamento nominal de 45 TB para dados e backup.&lt;br /&gt;
&lt;br /&gt;
[[Arquivo:FiguraClusterBull LCC-CENAPAD-MG.png|450px|thumb|center|'''Figura 1 -''' Figura que descreve a estrutura do Cluster Bull LCC/CENAPAD-MG]]&lt;br /&gt;
&lt;br /&gt;
=== Hardware ===&lt;br /&gt;
Os servidores que compõem o cluster de alto desempenho do LCC/CENAPAD-MG estão organizados da seguinte forma:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot; width=50%  border=1 cellpadding=35px  &lt;br /&gt;
!|Quantidade&lt;br /&gt;
!|Descrição&lt;br /&gt;
!|Hardware&lt;br /&gt;
!|Hostnames&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Servidor login (frontend)&amp;lt;br/&amp;gt; Modelo: Bull R460&lt;br /&gt;
|2x Quad Xeon 5130 2GHz - 1333FSB &amp;lt;br/&amp;gt; 8GB DDR3 RAM &amp;lt;br/&amp;gt; 147GB 15K RPM SAS disk&lt;br /&gt;
|veredas0&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Servidor de I/O (NFS)&amp;lt;br/&amp;gt; Modelo: Bull R460&lt;br /&gt;
|2x Quad Xeon 5130 2 GHz - 1333 FSB &amp;lt;br/&amp;gt; 8GB DDR3 RAM &amp;lt;br/&amp;gt; 147GB 15K RPM SAS disk&lt;br /&gt;
|veredas1&lt;br /&gt;
|-&lt;br /&gt;
|107&lt;br /&gt;
|Nodos computacionais&amp;lt;br/&amp;gt; Modelo: R422-E1&lt;br /&gt;
|2x Quad Xeon 5355 2.6 Ghz - 1600 FSB &amp;lt;br/&amp;gt; 16 GB DDR3 RAM &amp;lt;br/&amp;gt; 160GB 7200 RPM SATA3 disk&lt;br /&gt;
|veredas[2,…,107]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Todo o trabalho de desenvolvimento de programas científicos bem como a preparação das tarefas computacionais devem ser realizados no servidor de login '''veredas0'''. O workflow que rege um determinado cálculo deve ser expresso num arquivo de ''script'' em linguagem bash e submetido ao [[Slurm|gerenciador de recursos '''Slurm''']].&lt;br /&gt;
&lt;br /&gt;
Extensa fonte de informação sobre o [https://www.schedmd.com/ '''Slurm'''] encontra-se no site dos seus criadores, onde é mantida uma mailing-list para usuários [https://lists.schedmd.com/cgi-bin/mailman/listinfo/slurm-users '''slurm-users''']. Praticamente todos os grandes centros de HPC no mundo apresentam também exemplos de submissão de jobs para códigos específicos das diversas áreas.&lt;br /&gt;
&lt;br /&gt;
=== Software ===&lt;br /&gt;
==== Compiladores ====&lt;br /&gt;
O cluster está equipado com vários compiladores e ferramentas de análise de desempenho, de depuração e de desenvolvimento. Para além dos compiladores integrados que acompanham a distribuição '''Redhat Enterprise Linux 5.3''', tais como o '''''gcc, gfortran, dbg, openmpi, mpich2''''', etc, sob a licença da [http://www.gnu.org/licenses/gpl-3.0.html '''GNU'''], existem também os suítes proprietários da '''Intel''' e da '''BULL''':&lt;br /&gt;
&lt;br /&gt;
* '''Intel(R) Fortran Compiler 11.1 for IA-32 / Intel(R) 64'''&lt;br /&gt;
:* Diretório raiz:&lt;br /&gt;
::: /opt/intel/Compiler/11.1/073&lt;br /&gt;
:* Documentação online:&lt;br /&gt;
::: /opt/intel/Compiler/11.1/069/Documentation/en_US/documentation_f.htm&lt;br /&gt;
::: /opt/intel/Compiler/11.1/069/Documentation/en_US/getting_started_f.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Intel(R) C/C++ Compiler 11.1 for IA-32 / Intel(R) 64'''&lt;br /&gt;
:* Diretório raiz:&lt;br /&gt;
::: /opt/intel/Compiler/11.1/073&lt;br /&gt;
:* Documentação online:&lt;br /&gt;
::: /opt/intel/Compiler/11.1/069/Documentation/en_US/documentation_c.htm&lt;br /&gt;
::: /opt/intel/Compiler/11.1/069/Documentation/en_US/getting_started_c.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Intel(R) MPI Library, Development Kit for Linux OS'''&lt;br /&gt;
:* Diretório raiz:&lt;br /&gt;
::: /opt/intel/impi/4.0.0.028&lt;br /&gt;
:* Documentação online:&lt;br /&gt;
::: /opt/intel/impi/4.0.0.028/doc/Getting_Started.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''BULL Development package for MPI-2'''&lt;br /&gt;
:* Diretório raiz:&lt;br /&gt;
::: /opt/mpi/mpibull2-1.3.9-18.s/&lt;br /&gt;
:* Documentação online:&lt;br /&gt;
::: /usr/local/share/info/20110325/Docs/XBAS-CS/86A222FA02.pdf (Chapter 2)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;aviso&amp;quot;&amp;gt;&lt;br /&gt;
'''Dica'''&amp;lt;br/&amp;gt;&lt;br /&gt;
A versão mais recente dos suítes de compilação da Intel (14.0.1) encontra-se sob o diretório /opt/intel/composer_xe_2013_sp1.1.106/. A distribuição Redhat Enterprise Linux (v5.3) do cluster oferece a versão 2.4 da linguagem de programação Python. Uma versão paralela do '''Python''' oferecida pela Enthought, a distribuição Canopy, está instalada no diretório /var/Canopy. Sobre como utilizar esta distribuição poderá consultar o site [https://www.enthought.com/products/canopy https://www.enthought.com/products/canopy]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Bibliotecas para desenvolvimento ====&lt;br /&gt;
Várias versões de bibliotecas numéricas para desenvolvimento (''Bull SciStudio Book Shelf'') estão instaladas no diretório raiz '''/opt/scilibs'''. Para uma descrição detalhada de cada biblioteca basta apontar o browser interno do cluster para o diretório '''/opt/scilibs/SCISTUDIO_SHELF/SciStudio_shelf-1.1_Bull.9005/_www/Shelf.html'''. Uma visão global da ''Bull SciStudio'' pode ser encontrada no '''capítulo 3 do Users’s Guide''' ('''/usr/local/share/info/20110325/Docs/XBAS-CS/86A222FA02.pdf''').&lt;br /&gt;
&lt;br /&gt;
==== Aplicações ====&lt;br /&gt;
Os pacotes científicos instalados pela equipe de operação do cluster estão localizados nos diretórios raiz '''/opt/sci''' e '''/usr/local/ohpc/pub'''. Os pacotes de domínio público serão instalados sob demanda dos usuários. Está aberta a possibilidade de instalação de pacotes proprietários (licença paga) para uso exclusivo de determinados grupos de pesquisa. Nestes casos, é conveniente haver um contato prévio entre o grupo interessado e a equipe de operação de modo a realizar uma instalação que respeite as cláusulas da licença de contrato do software.&lt;br /&gt;
&lt;br /&gt;
O cluster '''veredas''' possui o pacote de gerenciamento [https://github.com/TACC/Lmod '''Lmod'''] [https://github.com/TACC/Lmod (https://github.com/TACC/Lmod)] instalado. Esta ferramenta permite a um usuário alternar entre diferentes versões de um pacote ou compiladores de maneira fácil, limpa e eficaz. O [https://github.com/TACC/Lmod '''Lmod'''] define dinâmicamente as variáveis de ambiente comuns tais como o '''PATH''', '''LD_LIBRARY_PATH''', '''MANPATH''' entre outras, sem que o usuário tenha que as definir no seu arquivo '''.bash_profile''' toda a vez que precisar utilizar uma determinada aplicação científica. Adicionalmente o [https://github.com/TACC/Lmod '''Lmod'''] permite “carregar” e “descarregar” combinações de aplicações/compiladores incluindo as suas dependências. As variáveis de ambiente específicas de cada pacote estão definidas em um arquivo designado por '''''modulefile''''' &amp;lt;ref&amp;gt;Trata-se de um arquivo do tipo ''script'' que pode ser escrito na linguagem&lt;br /&gt;
[https://www.tcl.tk TCL] [https://www.tcl.tk (https://www.tcl.tk)] ou [https://www.lua.org Lua] [https://www.lua.org (https://www.lua.org)].&amp;lt;/ref&amp;gt; . Os arquivos modulefile (módulos) estão localizados hierárquicamente sob o diretório definido em '''$MODULEPATH''' (i.e., '''/usr/local/ohpc/pub/modulefiles'''). Existem vários comandos que podem ser utilizados para gerenciar os arquivos modulefile:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot; width=60%  border=1 cellpadding=35px  &lt;br /&gt;
!|Comando&lt;br /&gt;
!|Descrição&lt;br /&gt;
|-&lt;br /&gt;
|'''module avail'''&lt;br /&gt;
|Lista todos os módulos disponíveis para carregamento&lt;br /&gt;
|-&lt;br /&gt;
|'''module spider &amp;lt;pattern&amp;gt;'''&lt;br /&gt;
|Procura por um módulo específico (e.g. module spider siesta)&lt;br /&gt;
|-&lt;br /&gt;
|'''module load &amp;lt;mod1&amp;gt;[mod2 …]'''&lt;br /&gt;
|'''''Carrega''''' um módulo ou lista de módulos&lt;br /&gt;
|-&lt;br /&gt;
|'''module unload &amp;lt;module&amp;gt;'''&lt;br /&gt;
|'''''Descarrega''''' o módulo&lt;br /&gt;
|-&lt;br /&gt;
|'''module list'''&lt;br /&gt;
|Lista todos os módulos que estão carregados no ambiente&lt;br /&gt;
|-&lt;br /&gt;
|'''module purge'''&lt;br /&gt;
|Descarrega todos os módulos que estão carregados no ambiente&lt;br /&gt;
|-&lt;br /&gt;
|'''module display &amp;lt;module&amp;gt;'''&lt;br /&gt;
|Mostra o conteúdo do módulo (e.g. quais as variáveis de ambiente que são definidas)&lt;br /&gt;
|-&lt;br /&gt;
|'''module use &amp;lt;path&amp;gt;'''&lt;br /&gt;
|Acrescenta um diretório local de módulos de um usuário aos módulos do sistema&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Mostramos abaixo o exemplo de saída na ''console'' quando o comando '''module avail''' é executado:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
[user_test@veredas0 ~]$ module avail&lt;br /&gt;
&lt;br /&gt;
-------------------------------- /usr/local/ohpc/pub/modulefiles -------------&lt;br /&gt;
   autotools intel/10.1.008&lt;br /&gt;
   bats/1.1.0 intel/11.1.069&lt;br /&gt;
   cmake/3.9.2 intel/14.0.1 (D)&lt;br /&gt;
   convergecfd/2.3.9 (P) intel/15.0.6 (T)&lt;br /&gt;
   convergecfd/2.3.20 (P) launcher/0.0.git.159.12b099a&lt;br /&gt;
   convergecfd/2.3.23 (P) likwid/4.3.1&lt;br /&gt;
   convergecfd/2.4.17 (P,D) ohpc&lt;br /&gt;
   gnu/5.4.0 orca/4.0.1 (P)&lt;br /&gt;
   gnu4/4.8.2 pgi/17.10&lt;br /&gt;
   gnu7/7.2.0 prun/1.2&lt;br /&gt;
   hwloc/1.11.9 simple/2.5&lt;br /&gt;
   ibrun-veredas/0.0.git.15.f58fde0 star-cd/4.24.021 (T)&lt;br /&gt;
&lt;br /&gt;
-------------------------------- /home/user_test/privatemodules --------------&lt;br /&gt;
&lt;br /&gt;
   null&lt;br /&gt;
  Where:&lt;br /&gt;
   T: Testing&lt;br /&gt;
   P: Group restricted&lt;br /&gt;
   D: Default Module&lt;br /&gt;
Use &amp;quot;module spider&amp;quot; to find all possible modules.&lt;br /&gt;
Use &amp;quot;module keyword key1 key2 ...&amp;quot; to search for all possible modules matching&lt;br /&gt;
any of the &amp;quot;keys&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
------------------------------------------------------------------------------&lt;br /&gt;
Site: http://www.cenapad.ufmg.br.&lt;br /&gt;
Email: &amp;lt;computacaocientifica@lcc.ufmg.br&amp;gt;.&lt;br /&gt;
Telefone: 3409-4909&lt;br /&gt;
------------------------------------------------------------------------------&lt;br /&gt;
[user_test@veredas0 ~]$&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;aviso&amp;quot;&amp;gt;&lt;br /&gt;
'''Dica'''&amp;lt;br/&amp;gt;&lt;br /&gt;
Para uma consulta mais detalhada sobre o cluster, a BULL disponibiliza aos usuários os seguintes guias de utilização:&lt;br /&gt;
*Bullx cluster suite: User’s Guide&lt;br /&gt;
:/usr/local/share/info/20110325/Docs/XBAS-CS/86A222FA02.pdf&lt;br /&gt;
&lt;br /&gt;
*Bullx cluster suite: Application Tuning Guide&lt;br /&gt;
:/usr/local/share/info/20110325/Docs/XBAS-CS/86A223FA02.pdf&lt;br /&gt;
&lt;br /&gt;
Diversos documentos e apresentações podem também ser encontrados sob o diretório&lt;br /&gt;
/usr/local/share/info&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Notas ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Manuais]]&lt;br /&gt;
[[Category:Cluster Veredas‏]]&lt;br /&gt;
[[Category:Guia Prático do cluster Veredas LCC/CENAPAD-MG‎]]&lt;/div&gt;</summary>
		<author><name>Admlccwiki</name></author>
		
	</entry>
	<entry>
		<id>https://www.lcc.ufmg.br/wiki/index.php?title=Guia_Pr%C3%A1tico_do_cluster_Veredas_LCC/CENAPAD-MG&amp;diff=279</id>
		<title>Guia Prático do cluster Veredas LCC/CENAPAD-MG</title>
		<link rel="alternate" type="text/html" href="https://www.lcc.ufmg.br/wiki/index.php?title=Guia_Pr%C3%A1tico_do_cluster_Veredas_LCC/CENAPAD-MG&amp;diff=279"/>
		<updated>2021-09-25T00:03:38Z</updated>

		<summary type="html">&lt;p&gt;Admlccwiki: Admlccwiki moveu Guia Prático do cluster BULL LCC/CENAPAD-MG para Guia Prático do cluster Veredas LCC/CENAPAD-MG&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Abertura de conta ==&lt;br /&gt;
Após o usuário preencher o [https://www.lcc.ufmg.br/abertura-de-conta formulário eletrônico de abertura de conta] e enviar para o LCC/CENAPAD-MG, caso aprovada pela equipe do LCC/CENAPAD-MG, a conta será aberta e este poderá utlizar o Cluster Bull LCC/CENAPAD-MG. O usuário receberá os dados de acesso através do email cadastrado no ato da aberto de conta.&lt;br /&gt;
&lt;br /&gt;
A abertura de cada conta estará vinculada a um projeto para fins de contabilidade de uso. No cluster o projeto será identificado pelo grupo unix '''CODIGO_DO_PROJETO''' (código que você receberá por email) e as áreas de trabalho concedidas são:&lt;br /&gt;
&lt;br /&gt;
*áreas privativas dos usuários: /home_cluster/'''CODIGO_DO_PROJETO'''/'''SEU_LOGIN'''&lt;br /&gt;
*área para software do grupo: /projetos/'''CODIGO_DO_PROJETO'''&lt;br /&gt;
*storage para dados computacionais: /storage/'''CODIGO_DO_PROJETO'''&lt;br /&gt;
&lt;br /&gt;
Somente os usuários do grupo '''CODIGO_DO_PROJETO''' têm permissões de leitura, escrita e execução nos diretórios /projetos/'''CODIGO_DO_PROJETO''' e /storage/'''CODIGO_DO_PROJETO'''. A organização interna dos diretórios fica a critério dos membros do grupo. O responsável pelas atividades e ações do grupo será o seu pesquisador principal (principal investigator, PI), ou seja, o professor com vínculo empregatício à sua universidade de origem ou um PostDoc. Em geral será o pesquisador principal que solicitará a abertura de projeto e a inclusão de seus colaboradores de pesquisa. Qualquer usuário poderá solicitar à equipe de manutenção a sua inclusão em mais de um projeto diferente, sujeito à aprovação do seu respetivo PI.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;aviso&amp;quot;&amp;gt;&lt;br /&gt;
'''Atenção!'''&amp;lt;br/&amp;gt;&lt;br /&gt;
Para a comunicação das senhas será utilizado o serviço [https://pwpush.com Password Pusher]. Trata-se de um serviço de anotações online no qual o destinatário tem um tempo limite para ler a anotação até que esta se auto-destrua. Os links de acesso ao '''Password Pusher''' serão enviados posteriormente para cada email cadastrado. No momento em que o link for ‘clicado’, a página será carregada com uma janela contendo uma string de 16 caracteres alfanuméricos. Essa string é a senha gerada pelo LCC/CENAPAD-MG para o usuário logar no cluster. Copie essa string, porque o link será destruído. A senha que enviamos tem entropia suficiente para ser muito difícil a sua descoberta através de métodos de força bruta. Caso pretenda trocar a senha enviada sugerimos que utilize o website [https://www.ssh.com/iam/password/generator Password Generator] para gerar a nova senha e depois cadastrar no cluster através do comando unix '''passwd'''. Lembre-se também da importância de guardar as senhas de forma segura. Utilize por exemplo o serviço [https://www.lastpass.com LastPass]. Concluindo, todos os estudos corroboram que a principal razão por detrás da grande maioria dos incidentes de segurança digital é a utilização de senhas fracas, a utilização da mesma senha para vários locais e o seu furto em servidores e websites inseguros.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Acesso Remoto ==&lt;br /&gt;
O acesso ao Cluster Bull LCC/CENAPAD-MG é feito via ssh através do endereço: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ssh SEU_LOGIN@veredas.cenapad.ufmg.br&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* substitua a palavra '''SEU_LOGIN''' pelo login que você recebeu após a abertura da conta. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Caso necessite de mais detalhes, acesso os link abaixo:&lt;br /&gt;
&lt;br /&gt;
*[[Acesso remoto para usuários Linux|Acesso remoto para usuários Linux]]&lt;br /&gt;
&lt;br /&gt;
*[[Acesso remoto para usuários Windows|Acesso remoto para usuários Windows]]&lt;br /&gt;
&lt;br /&gt;
== O Cluster Bull LCC/CENAPAD-MG ==&lt;br /&gt;
&lt;br /&gt;
O Cluster Bull LCC/CENAPAD-­MG possui 109 nós computacionais distribuídos físicamente em 4 racks, Figura 1, cada nó com 2 processadores quadcore e 16 Gigabytes de memória principal, agregando um total de 848 núcleos de processamento (cores) e aproximadamente 1.7 Terabytes de memória distribuída pela máquina. O potencial de desempenho teórico do cluster traduzem em 9 Teraflops (nove trilhões de operações elementares por segundo). O Cluster é interligado através de um ''switch'' lógico de alto desempenho segundo a arquitetura de rede [https://en.wikipedia.org/wiki/InfiniBand '''INFINIBAND'''] o que permite a execução rápida de programas paralelos (distribuidos) que usam a rede para troca de dados. O cluster conta também com um storage interno com uma capacidade de armazenamento nominal de 45 TB para dados e backup.&lt;br /&gt;
&lt;br /&gt;
[[Arquivo:FiguraClusterBull LCC-CENAPAD-MG.png|450px|thumb|center|'''Figura 1 -''' Figura que descreve a estrutura do Cluster Bull LCC/CENAPAD-MG]]&lt;br /&gt;
&lt;br /&gt;
=== Hardware ===&lt;br /&gt;
Os servidores que compõem o cluster de alto desempenho do LCC/CENAPAD-MG estão organizados da seguinte forma:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot; width=50%  border=1 cellpadding=35px  &lt;br /&gt;
!|Quantidade&lt;br /&gt;
!|Descrição&lt;br /&gt;
!|Hardware&lt;br /&gt;
!|Hostnames&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Servidor login (frontend)&amp;lt;br/&amp;gt; Modelo: Bull R460&lt;br /&gt;
|2x Quad Xeon 5130 2GHz - 1333FSB &amp;lt;br/&amp;gt; 8GB DDR3 RAM &amp;lt;br/&amp;gt; 147GB 15K RPM SAS disk&lt;br /&gt;
|veredas0&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Servidor de I/O (NFS)&amp;lt;br/&amp;gt; Modelo: Bull R460&lt;br /&gt;
|2x Quad Xeon 5130 2 GHz - 1333 FSB &amp;lt;br/&amp;gt; 8GB DDR3 RAM &amp;lt;br/&amp;gt; 147GB 15K RPM SAS disk&lt;br /&gt;
|veredas1&lt;br /&gt;
|-&lt;br /&gt;
|107&lt;br /&gt;
|Nodos computacionais&amp;lt;br/&amp;gt; Modelo: R422-E1&lt;br /&gt;
|2x Quad Xeon 5355 2.6 Ghz - 1600 FSB &amp;lt;br/&amp;gt; 16 GB DDR3 RAM &amp;lt;br/&amp;gt; 160GB 7200 RPM SATA3 disk&lt;br /&gt;
|veredas[2,…,107]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Todo o trabalho de desenvolvimento de programas científicos bem como a preparação das tarefas computacionais devem ser realizados no servidor de login '''veredas0'''. O workflow que rege um determinado cálculo deve ser expresso num arquivo de ''script'' em linguagem bash e submetido ao [[Slurm|gerenciador de recursos '''Slurm''']].&lt;br /&gt;
&lt;br /&gt;
Extensa fonte de informação sobre o [https://www.schedmd.com/ '''Slurm'''] encontra-se no site dos seus criadores, onde é mantida uma mailing-list para usuários [https://lists.schedmd.com/cgi-bin/mailman/listinfo/slurm-users '''slurm-users''']. Praticamente todos os grandes centros de HPC no mundo apresentam também exemplos de submissão de jobs para códigos específicos das diversas áreas.&lt;br /&gt;
&lt;br /&gt;
=== Software ===&lt;br /&gt;
==== Compiladores ====&lt;br /&gt;
O cluster está equipado com vários compiladores e ferramentas de análise de desempenho, de depuração e de desenvolvimento. Para além dos compiladores integrados que acompanham a distribuição '''Redhat Enterprise Linux 5.3''', tais como o '''''gcc, gfortran, dbg, openmpi, mpich2''''', etc, sob a licença da [http://www.gnu.org/licenses/gpl-3.0.html '''GNU'''], existem também os suítes proprietários da '''Intel''' e da '''BULL''':&lt;br /&gt;
&lt;br /&gt;
* '''Intel(R) Fortran Compiler 11.1 for IA-32 / Intel(R) 64'''&lt;br /&gt;
:* Diretório raiz:&lt;br /&gt;
::: /opt/intel/Compiler/11.1/073&lt;br /&gt;
:* Documentação online:&lt;br /&gt;
::: /opt/intel/Compiler/11.1/069/Documentation/en_US/documentation_f.htm&lt;br /&gt;
::: /opt/intel/Compiler/11.1/069/Documentation/en_US/getting_started_f.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Intel(R) C/C++ Compiler 11.1 for IA-32 / Intel(R) 64'''&lt;br /&gt;
:* Diretório raiz:&lt;br /&gt;
::: /opt/intel/Compiler/11.1/073&lt;br /&gt;
:* Documentação online:&lt;br /&gt;
::: /opt/intel/Compiler/11.1/069/Documentation/en_US/documentation_c.htm&lt;br /&gt;
::: /opt/intel/Compiler/11.1/069/Documentation/en_US/getting_started_c.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Intel(R) MPI Library, Development Kit for Linux OS'''&lt;br /&gt;
:* Diretório raiz:&lt;br /&gt;
::: /opt/intel/impi/4.0.0.028&lt;br /&gt;
:* Documentação online:&lt;br /&gt;
::: /opt/intel/impi/4.0.0.028/doc/Getting_Started.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''BULL Development package for MPI-2'''&lt;br /&gt;
:* Diretório raiz:&lt;br /&gt;
::: /opt/mpi/mpibull2-1.3.9-18.s/&lt;br /&gt;
:* Documentação online:&lt;br /&gt;
::: /usr/local/share/info/20110325/Docs/XBAS-CS/86A222FA02.pdf (Chapter 2)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;aviso&amp;quot;&amp;gt;&lt;br /&gt;
'''Dica'''&amp;lt;br/&amp;gt;&lt;br /&gt;
A versão mais recente dos suítes de compilação da Intel (14.0.1) encontra-se sob o diretório /opt/intel/composer_xe_2013_sp1.1.106/. A distribuição Redhat Enterprise Linux (v5.3) do cluster oferece a versão 2.4 da linguagem de programação Python. Uma versão paralela do '''Python''' oferecida pela Enthought, a distribuição Canopy, está instalada no diretório /var/Canopy. Sobre como utilizar esta distribuição poderá consultar o site [https://www.enthought.com/products/canopy https://www.enthought.com/products/canopy]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Bibliotecas para desenvolvimento ====&lt;br /&gt;
Várias versões de bibliotecas numéricas para desenvolvimento (''Bull SciStudio Book Shelf'') estão instaladas no diretório raiz '''/opt/scilibs'''. Para uma descrição detalhada de cada biblioteca basta apontar o browser interno do cluster para o diretório '''/opt/scilibs/SCISTUDIO_SHELF/SciStudio_shelf-1.1_Bull.9005/_www/Shelf.html'''. Uma visão global da ''Bull SciStudio'' pode ser encontrada no '''capítulo 3 do Users’s Guide''' ('''/usr/local/share/info/20110325/Docs/XBAS-CS/86A222FA02.pdf''').&lt;br /&gt;
&lt;br /&gt;
==== Aplicações ====&lt;br /&gt;
Os pacotes científicos instalados pela equipe de operação do cluster estão localizados nos diretórios raiz '''/opt/sci''' e '''/usr/local/ohpc/pub'''. Os pacotes de domínio público serão instalados sob demanda dos usuários. Está aberta a possibilidade de instalação de pacotes proprietários (licença paga) para uso exclusivo de determinados grupos de pesquisa. Nestes casos, é conveniente haver um contato prévio entre o grupo interessado e a equipe de operação de modo a realizar uma instalação que respeite as cláusulas da licença de contrato do software.&lt;br /&gt;
&lt;br /&gt;
O cluster '''veredas''' possui o pacote de gerenciamento [https://github.com/TACC/Lmod '''Lmod'''] [https://github.com/TACC/Lmod (https://github.com/TACC/Lmod)] instalado. Esta ferramenta permite a um usuário alternar entre diferentes versões de um pacote ou compiladores de maneira fácil, limpa e eficaz. O [https://github.com/TACC/Lmod '''Lmod'''] define dinâmicamente as variáveis de ambiente comuns tais como o '''PATH''', '''LD_LIBRARY_PATH''', '''MANPATH''' entre outras, sem que o usuário tenha que as definir no seu arquivo '''.bash_profile''' toda a vez que precisar utilizar uma determinada aplicação científica. Adicionalmente o [https://github.com/TACC/Lmod '''Lmod'''] permite “carregar” e “descarregar” combinações de aplicações/compiladores incluindo as suas dependências. As variáveis de ambiente específicas de cada pacote estão definidas em um arquivo designado por '''''modulefile''''' &amp;lt;ref&amp;gt;Trata-se de um arquivo do tipo ''script'' que pode ser escrito na linguagem&lt;br /&gt;
[https://www.tcl.tk TCL] [https://www.tcl.tk (https://www.tcl.tk)] ou [https://www.lua.org Lua] [https://www.lua.org (https://www.lua.org)].&amp;lt;/ref&amp;gt; . Os arquivos modulefile (módulos) estão localizados hierárquicamente sob o diretório definido em '''$MODULEPATH''' (i.e., '''/usr/local/ohpc/pub/modulefiles'''). Existem vários comandos que podem ser utilizados para gerenciar os arquivos modulefile:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot; width=60%  border=1 cellpadding=35px  &lt;br /&gt;
!|Comando&lt;br /&gt;
!|Descrição&lt;br /&gt;
|-&lt;br /&gt;
|'''module avail'''&lt;br /&gt;
|Lista todos os módulos disponíveis para carregamento&lt;br /&gt;
|-&lt;br /&gt;
|'''module spider &amp;lt;pattern&amp;gt;'''&lt;br /&gt;
|Procura por um módulo específico (e.g. module spider siesta)&lt;br /&gt;
|-&lt;br /&gt;
|'''module load &amp;lt;mod1&amp;gt;[mod2 …]'''&lt;br /&gt;
|'''''Carrega''''' um módulo ou lista de módulos&lt;br /&gt;
|-&lt;br /&gt;
|'''module unload &amp;lt;module&amp;gt;'''&lt;br /&gt;
|'''''Descarrega''''' o módulo&lt;br /&gt;
|-&lt;br /&gt;
|'''module list'''&lt;br /&gt;
|Lista todos os módulos que estão carregados no ambiente&lt;br /&gt;
|-&lt;br /&gt;
|'''module purge'''&lt;br /&gt;
|Descarrega todos os módulos que estão carregados no ambiente&lt;br /&gt;
|-&lt;br /&gt;
|'''module display &amp;lt;module&amp;gt;'''&lt;br /&gt;
|Mostra o conteúdo do módulo (e.g. quais as variáveis de ambiente que são definidas)&lt;br /&gt;
|-&lt;br /&gt;
|'''module use &amp;lt;path&amp;gt;'''&lt;br /&gt;
|Acrescenta um diretório local de módulos de um usuário aos módulos do sistema&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Mostramos abaixo o exemplo de saída na ''console'' quando o comando '''module avail''' é executado:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
[user_test@veredas0 ~]$ module avail&lt;br /&gt;
&lt;br /&gt;
-------------------------------- /usr/local/ohpc/pub/modulefiles -------------&lt;br /&gt;
   autotools intel/10.1.008&lt;br /&gt;
   bats/1.1.0 intel/11.1.069&lt;br /&gt;
   cmake/3.9.2 intel/14.0.1 (D)&lt;br /&gt;
   convergecfd/2.3.9 (P) intel/15.0.6 (T)&lt;br /&gt;
   convergecfd/2.3.20 (P) launcher/0.0.git.159.12b099a&lt;br /&gt;
   convergecfd/2.3.23 (P) likwid/4.3.1&lt;br /&gt;
   convergecfd/2.4.17 (P,D) ohpc&lt;br /&gt;
   gnu/5.4.0 orca/4.0.1 (P)&lt;br /&gt;
   gnu4/4.8.2 pgi/17.10&lt;br /&gt;
   gnu7/7.2.0 prun/1.2&lt;br /&gt;
   hwloc/1.11.9 simple/2.5&lt;br /&gt;
   ibrun-veredas/0.0.git.15.f58fde0 star-cd/4.24.021 (T)&lt;br /&gt;
&lt;br /&gt;
-------------------------------- /home/user_test/privatemodules --------------&lt;br /&gt;
&lt;br /&gt;
   null&lt;br /&gt;
  Where:&lt;br /&gt;
   T: Testing&lt;br /&gt;
   P: Group restricted&lt;br /&gt;
   D: Default Module&lt;br /&gt;
Use &amp;quot;module spider&amp;quot; to find all possible modules.&lt;br /&gt;
Use &amp;quot;module keyword key1 key2 ...&amp;quot; to search for all possible modules matching&lt;br /&gt;
any of the &amp;quot;keys&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
------------------------------------------------------------------------------&lt;br /&gt;
Site: http://www.cenapad.ufmg.br.&lt;br /&gt;
Email: &amp;lt;computacaocientifica@lcc.ufmg.br&amp;gt;.&lt;br /&gt;
Telefone: 3409-4909&lt;br /&gt;
------------------------------------------------------------------------------&lt;br /&gt;
[user_test@veredas0 ~]$&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;aviso&amp;quot;&amp;gt;&lt;br /&gt;
'''Dica'''&amp;lt;br/&amp;gt;&lt;br /&gt;
Para uma consulta mais detalhada sobre o cluster, a BULL disponibiliza aos usuários os seguintes guias de utilização:&lt;br /&gt;
*Bullx cluster suite: User’s Guide&lt;br /&gt;
:/usr/local/share/info/20110325/Docs/XBAS-CS/86A222FA02.pdf&lt;br /&gt;
&lt;br /&gt;
*Bullx cluster suite: Application Tuning Guide&lt;br /&gt;
:/usr/local/share/info/20110325/Docs/XBAS-CS/86A223FA02.pdf&lt;br /&gt;
&lt;br /&gt;
Diversos documentos e apresentações podem também ser encontrados sob o diretório&lt;br /&gt;
/usr/local/share/info&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Notas ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Manuais]]&lt;br /&gt;
[[Category:Cluster Bull‏]]&lt;br /&gt;
[[Category:Guia Prático do cluster BULL LCC/CENAPAD-MG‎]]&lt;/div&gt;</summary>
		<author><name>Admlccwiki</name></author>
		
	</entry>
	<entry>
		<id>https://www.lcc.ufmg.br/wiki/index.php?title=Guia_Pr%C3%A1tico_do_cluster_BULL_LCC/CENAPAD-MG&amp;diff=280</id>
		<title>Guia Prático do cluster BULL LCC/CENAPAD-MG</title>
		<link rel="alternate" type="text/html" href="https://www.lcc.ufmg.br/wiki/index.php?title=Guia_Pr%C3%A1tico_do_cluster_BULL_LCC/CENAPAD-MG&amp;diff=280"/>
		<updated>2021-09-25T00:03:38Z</updated>

		<summary type="html">&lt;p&gt;Admlccwiki: Admlccwiki moveu Guia Prático do cluster BULL LCC/CENAPAD-MG para Guia Prático do cluster Veredas LCC/CENAPAD-MG&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECIONAMENTO [[Guia Prático do cluster Veredas LCC/CENAPAD-MG]]&lt;/div&gt;</summary>
		<author><name>Admlccwiki</name></author>
		
	</entry>
	<entry>
		<id>https://www.lcc.ufmg.br/wiki/index.php?title=Slurm_-_Veredas&amp;diff=278</id>
		<title>Slurm - Veredas</title>
		<link rel="alternate" type="text/html" href="https://www.lcc.ufmg.br/wiki/index.php?title=Slurm_-_Veredas&amp;diff=278"/>
		<updated>2021-09-25T00:02:39Z</updated>

		<summary type="html">&lt;p&gt;Admlccwiki: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;O [https://slurm.schedmd.com/ '''''Slurm Workload Manager'''''] (anteriormente conhecido como ''Simple Linux Utility for Resource Management'' ou SLURM), ou Slurm, é num escalonador de tarefas gratuito e de código aberto para Linux e kernels similares ao Unix, usado por muitos dos supercomputadores e clusters de computadores do mundo. O Slurm Workload Manager possui três funções principais:&lt;br /&gt;
* alocar nós computacionais para acesso exclusivo e/ou não-exclusivo (compartilhado) aos usuários por um determinado período de tempo necessário para executar as tarefas computacionais submetidas (''jobs'').&lt;br /&gt;
* oferece um ambiente integrado que permite executar e monitorar em tempo real as tarefas lançadas nos nós computacionais alocados.&lt;br /&gt;
* gerencia a fila de submissão, arbitrando conflitos entre os pedidos de recursos computacionais.&lt;br /&gt;
&lt;br /&gt;
== Comandos do Slurm ==&lt;br /&gt;
Segue abaixo, uma lista de comandos úteis disponíveis para o Slurm que permite a interação dos usuários. A lista completa de comandos por ser encontrada na documentação oficial do Slurm através do link [https://slurm.schedmd.com/quickstart.html https://slurm.schedmd.com/quickstart.html]&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot; width=100%  border=1 cellpadding=35px  &lt;br /&gt;
!|Comando&lt;br /&gt;
!|Descrição do comando&lt;br /&gt;
|-&lt;br /&gt;
|'''SRUN'''&lt;br /&gt;
|Submete na linha de comando um job para execução.&lt;br /&gt;
|-&lt;br /&gt;
|'''SBATCH'''&lt;br /&gt;
|Submete scripts shell (eg. bash) para a fila de espera do SLURM.&lt;br /&gt;
|-&lt;br /&gt;
|'''SALLOC'''&lt;br /&gt;
|Reserva recursos do cluster (tempo de cpu, memória, quantidade de nós, etc) para a execução de uma tarefa computacional.&lt;br /&gt;
|-&lt;br /&gt;
|'''SBCAST'''&lt;br /&gt;
|Para transmissão de um arquivo para todos os nós que foram alocados para um determinado job.&lt;br /&gt;
|-&lt;br /&gt;
|'''SCANCEL'''&lt;br /&gt;
|Para cancelar um job que esteja sendo executado ou que ainda esteja na fila de espera.&lt;br /&gt;
|-&lt;br /&gt;
|'''SQUEUE'''&lt;br /&gt;
|Para monitorar o estado dos jobs nas diversas filas de espera do SLURM.&lt;br /&gt;
|-&lt;br /&gt;
|'''SINFO'''&lt;br /&gt;
|Para monitorar o estado global das partições configuradas (filas).&lt;br /&gt;
|-&lt;br /&gt;
|'''SVIEW'''&lt;br /&gt;
|Providencia a integração de toda a informação e disponibiliza-a através de uma interface gráfica.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
Uma mnemônica muito útil é lembrar que todos os comandos do SLURM começam pela letra s. Todos os comandos possuem manuais que podem ser acessados online via linha de comando, '''man &amp;lt;comando&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
Exemplo com o comando '''sbatch''' :&lt;br /&gt;
&amp;lt;pre class=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
[test3@veredas0 ~]$ man sbatch&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Em geral a grande maioria dos usuários precisa familiarizar-se com três comandos básicos do SLURM: '''sbatch, squeue e scancel'''. Assim como no PBS Pro, a submissão de uma tarefa envolve a elaboração de um script shell (em geral em bash) que possui no seu preâmbulo diretrizes específicas do SLURM. Essas diretrizes começam com a palavra-chave '''#SBATCH''' (o análogo da palavra-chave '''#PBS''' para o PBS Pro). No corpo do script é então chamado o executável do programa com os seus respectivos parâmetros.&lt;br /&gt;
&lt;br /&gt;
== Submissão de tarefas computacionais ==&lt;br /&gt;
&lt;br /&gt;
=== Filas de submissão ===&lt;br /&gt;
No UNIVERSO do SLURM o conceito de '''filas''' envolve a noção de partição de nós computacionais em grupos. Esses grupos não são necessariamente disjuntos (nós podem participar de mais de uma partição) e podem ser solicitados de acordo com a especificação de recursos do sistema (tempo de cpu, memória, etc). Para respeitar a herança do PBS Pro iremos nos referir indistintamente aos termos '''filas''' e '''partições'''.&lt;br /&gt;
&lt;br /&gt;
O cluster BULL-Veredas possui no momento três filas de submissão definidas apenas pelo recurso '''walltime''':&lt;br /&gt;
* partição '''full''': nós '''veredas[12-107]''' sem restrição de tempo.&lt;br /&gt;
* partição '''short''': nós '''veredas[2-11]''' máximo 1 hora.&lt;br /&gt;
&lt;br /&gt;
O usuário poderá listar a qualquer momento os recursos oferecidos por cada partição com o seguinte comando:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
[test3@veredas0 ~]$ scontrol show partitions&lt;br /&gt;
PartitionName=full TotalNodes=96 TotalCPUs=768 RootOnly=NO&lt;br /&gt;
     Default=YES Shared=NO Priority=1 State=UP MaxTime=UNLIMITED Hidden=NO&lt;br /&gt;
     MinNodes=1 MaxNodes=UNLIMITED DisableRootJobs=NO AllowGroups=ALL&lt;br /&gt;
     AllocNodes=ALL&lt;br /&gt;
     Nodes=veredas[12-107] NodeIndices=10-105 DefaultTime=NONE&lt;br /&gt;
&lt;br /&gt;
PartitionName=short TotalNodes=10 TotalCPUs=80 RootOnly=NO&lt;br /&gt;
     Default=NO Shared=NO Priority=1 State=UP MaxTime=01:00:00 Hidden=NO&lt;br /&gt;
     MinNodes=1 MaxNodes=UNLIMITED DisableRootJobs=NO AllowGroups=ALL&lt;br /&gt;
     AllocNodes=ALL&lt;br /&gt;
     Nodes=veredas[2-11] NodeIndices=0-9 DefaultTime=NONE&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ou através do seguinte comando,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
[test3@veredas0 ~]$ sinfo&lt;br /&gt;
PARTITION AVAIL TIMELIMIT NODES STATE NODELIST&lt;br /&gt;
full* up infinite 96 idle veredas[12-107]&lt;br /&gt;
short up 1:00:00 9 idle veredas[2,4-11]&lt;br /&gt;
short up 1:00:00 1 down veredas3.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para racionalizar a utilização de recursos é conveniente que o usuário respeite a real demanda de sua tarefa e submeta seu script à partição mais apropriada, ou seja, ''jobs'' de curta duração (&amp;lt; 1 hora) na partição '''short'''. Caso contrário, pode correr o risco de a sua solicitação permanecer por muito tempo na fila de espera.&lt;br /&gt;
&lt;br /&gt;
O estado dos ''jobs'' submetidos ou em execução poderá também ser examinado no SLURM através do comando '''squeue''', tal como era feito no PBS Pro com o comando ''qstat'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
[test3@veredas0 ~]$ squeue&lt;br /&gt;
  JOBID PARTITION NAME USER ST TIME NODES NODELIST(REASON)&lt;br /&gt;
    179 short HelloWor test3 R 0:02 2 veredas[4-5]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;aviso&amp;quot;&amp;gt;&lt;br /&gt;
'''Aviso:''' Os exemplos de scripts de submissão que se seguem são para propósitos ilustrativos e representam ''templates'' que os usuários poderão adaptar conforme as suas necessidades específicas.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Tarefas sequenciais ===&lt;br /&gt;
Executar um ''job'' sequencial é bastante simples. Basta requisitar a duração necessária para executar a tarefa. Qualquer tarefa puramente seqüencial, que não utiliza MPI ou ''threads'', irá usar necessariamente '''um core apenas''' do nó computacional.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH --job-name=&amp;quot;TESTJOB&amp;quot;&lt;br /&gt;
#SBATCH --ntasks=1&lt;br /&gt;
#SBATCH --time=01:00:00&lt;br /&gt;
&lt;br /&gt;
./a.out &amp;gt; OUTFILE&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Por padrão o ''output'' do ''script'' acima será redirecionado para um arquivo do tipo ''slurm-'''XXXX'''.out'', onde '''XXXX''' é o número do job que foi atribuído pelo SLURM. Este arquivo de ''output'' estará localizado no diretório de onde foi feita a submissão. O interessante a notar, e a que nos referiremos mais adiante (ver), é de que este arquivo é criado no instante da execução do ''script'' e o seu conteúdo aumenta à medida que o programa vai sendo executado. Remover este arquivo antes da finalização do job acarreta portanto perda total do output da tarefa. Diferentemente no PBS Pro os arquivos de output só eram criados na área do usuário depois de o job finalizar. É possível especificar um nome para o arquivo de output fazendo uso da diretriz '''''#SBATCH --output=meu_job.out'''''. O mesmo vale para o arquivo de erro, '''''#SBATCH --error=meu_job.err'''''.&lt;br /&gt;
&lt;br /&gt;
=== Tarefas paralelas (MPI) ===&lt;br /&gt;
O exemplo seguinte representa a submissão de um ''job'' paralelo MPI que foi compilado com o compilador proprietário da BULL (MPI BULL): '''mpicc -DALIGNED -c hello.c -o hello.o'''; '''mpicc hello.o -o hello.x'''. Nesta situação permitimos que o SLURM se gerencie não só da alocação dos recursos, mas também da execução do programa e da inicialização das comunicações na '''''Infiniband''''' através do comando '''srun'''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -J HelloWorld&lt;br /&gt;
#SBATCH --ntasks 16&lt;br /&gt;
#SBATCH --time 00:30:00&lt;br /&gt;
#SBATCH --partition short&lt;br /&gt;
source /opt/mpi/mpibull2-1.3.9-18.s/share/mpibull2.sh&lt;br /&gt;
mpibull2_devices -d=ibmr_gen2&lt;br /&gt;
echo ’------------------------------------------’&lt;br /&gt;
ldd ./hello.x&lt;br /&gt;
echo ’------------------------------------------’&lt;br /&gt;
sleep 15&lt;br /&gt;
&lt;br /&gt;
srun hostname | sort&lt;br /&gt;
&lt;br /&gt;
srun ./hello.x&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Segue o resultado da execução deste script:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
[test3@veredas0 SLURM]$ cat slurm-188.out&lt;br /&gt;
------------------------------------------&lt;br /&gt;
     libmpi.so =&amp;gt; /opt/mpi/mpibull2-1.3.9-18.s/lib/libmpi.so (0x00002b1b48343000)&lt;br /&gt;
     librt.so.1 =&amp;gt; /lib64/librt.so.1 (0x00000038d1a00000)&lt;br /&gt;
     libdl.so.2 =&amp;gt; /lib64/libdl.so.2 (0x00000038d0e00000)&lt;br /&gt;
     libpmi.so =&amp;gt; /usr/lib64/libpmi.so (0x00002b1b486a0000)&lt;br /&gt;
     libpthread.so.0 =&amp;gt; /lib64/libpthread.so.0 (0x00000038d1200000)&lt;br /&gt;
     libuuid.so.1 =&amp;gt; /lib64/libuuid.so.1 (0x00000038e1800000)&lt;br /&gt;
     libm.so.6 =&amp;gt; /lib64/libm.so.6 (0x00000038d0a00000)&lt;br /&gt;
     libgcc_s.so.1 =&amp;gt; /lib64/libgcc_s.so.1 (0x00000038dba00000)&lt;br /&gt;
     libc.so.6 =&amp;gt; /lib64/libc.so.6 (0x00000038d0600000)&lt;br /&gt;
     libmpidev.so =&amp;gt; /opt/mpi/mpibull2-1.3.9-18.s/lib/drivers/ibmr_gen2/libmpidev.so (0x00002b1b488a7000)&lt;br /&gt;
     /lib64/ld-linux-x86-64.so.2 (0x00000038d0200000)&lt;br /&gt;
     libslurm.so.20 =&amp;gt; /usr/lib64/libslurm.so.20 (0x00002b1b48ba6000)&lt;br /&gt;
     libibverbs.so.1 =&amp;gt; /usr/lib64/libibverbs.so.1 (0x00002b1b48e66000)&lt;br /&gt;
     libsvml.so =&amp;gt; /opt/intel/Compiler/11.1/069/lib/intel64/libsvml.so (0x00002b1b49074000)&lt;br /&gt;
------------------------------------------&lt;br /&gt;
veredas4&lt;br /&gt;
veredas4&lt;br /&gt;
veredas4&lt;br /&gt;
veredas4&lt;br /&gt;
veredas4&lt;br /&gt;
veredas4&lt;br /&gt;
veredas4&lt;br /&gt;
veredas4&lt;br /&gt;
veredas5&lt;br /&gt;
veredas5&lt;br /&gt;
veredas5&lt;br /&gt;
veredas5&lt;br /&gt;
veredas5&lt;br /&gt;
veredas5&lt;br /&gt;
veredas5&lt;br /&gt;
veredas5&lt;br /&gt;
Hello MPI: processor 5 of 16 on veredas4&lt;br /&gt;
Hello MPI: processor 15 of 16 on veredas5&lt;br /&gt;
MPIBull2 1.3.9-s (Astlik) 20091113-1606 MPI_THREAD_FUNNELED (job 188) (device gen2)&lt;br /&gt;
Hello MPI: processor 0 of 16 on veredas4&lt;br /&gt;
Hello MPI: processor 1 of 16 on veredas4&lt;br /&gt;
Hello MPI: processor 2 of 16 on veredas4&lt;br /&gt;
Hello MPI: processor 3 of 16 on veredas4&lt;br /&gt;
Hello MPI: processor 4 of 16 on veredas4&lt;br /&gt;
Hello MPI: processor 7 of 16 on veredas4&lt;br /&gt;
Hello MPI: processor 8 of 16 on veredas5&lt;br /&gt;
Hello MPI: processor 6 of 16 on veredas4&lt;br /&gt;
Hello MPI: processor 9 of 16 on veredas5&lt;br /&gt;
Hello MPI: processor 10 of 16 on veredas5&lt;br /&gt;
Hello MPI: processor 11 of 16 on veredas5&lt;br /&gt;
Hello MPI: processor 12 of 16 on veredas5&lt;br /&gt;
Hello MPI: processor 13 of 16 on veredas5&lt;br /&gt;
Hello MPI: processor 14 of 16 on veredas5&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== Tarefas paralelas com ''threads'' (MPI+OpenMP) ===&lt;br /&gt;
Cada nó computacional do cluster BULL da UFMG possui '''2 quad-cores''' totalizando '''8 ''cores'''''. Mostramos a seguir um exemplo de submissão de uma tarefa paralela (MPI+OpenMP) que utiliza a Infiniband, cujo executável foi compilado com o '''Intel MPI''' e que requisita '''8 processos''', sendo que cada processo é um conjunto de '''4 ''threads'''''.&lt;br /&gt;
&lt;br /&gt;
Repare que propositalmente, e contráriamente ao caso anterior, a ferramenta '''[https://docs.par-tec.com/html/psmpi-userguide/rn01re01.html mpiexec]''' foi utilizada em vez do '''srun''' para lançar os processos MPI. O SLURM foi então utilizado apenas para reservar os recursos necessários.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -J HelloWorld&lt;br /&gt;
#SBATCH --partition short&lt;br /&gt;
#SBATCH --nodes 4&lt;br /&gt;
#SBATCH --ntasks 8&lt;br /&gt;
#SBATCH --cpus-per-task 4&lt;br /&gt;
#SBATCH --time 00:30:00&lt;br /&gt;
&lt;br /&gt;
source /opt/intel/impi/4.0.0/bin64/mpivars.sh&lt;br /&gt;
&lt;br /&gt;
export OMP_NUM_THREADS=4&lt;br /&gt;
export I_MPI_PMI_LIBRARY=/usr/lib64/libpmi.so&lt;br /&gt;
export I_MPI_FABRICS=dapl&lt;br /&gt;
&lt;br /&gt;
sleep 20&lt;br /&gt;
&lt;br /&gt;
echo ’------------------------------------’&lt;br /&gt;
ldd ./hello&lt;br /&gt;
echo ’------------------------------------’&lt;br /&gt;
srun hostname -s | sort -u &amp;gt;slurm.hosts&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
mpdboot -n $SLURM_NNODES -f slurm.hosts -r ssh&lt;br /&gt;
mpiexec -perhost 2 -np 8 ./hello&lt;br /&gt;
mpdallexit&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
O diagrama abaixo,Figura 1, procura ilustrar a forma como os processos MPI e seus respetivos ''threads'' foram distribuídos nos '''32 cores''' dos quatro nós requisitados. A descrição detalhada de cada diretriz '''#SBATCH''' poderá ser consultada online através do comando man sbatch. A descrição de cada flag do mpiexec também pode ser obtida através de '''/opt/intel/impi/4.0.0/bin64/mpiexec -help'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[image:DiagramaTheadsMPI ClusterVeredas.png|frame|center|'''Figura 1''' - Diagrama com processos MPI e distribuição das '''''threads''''' em dois nós computacionais e 32 cores]]&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Variáveis de ambiente do Slurm ===&lt;br /&gt;
Quaisquer variáveis de ambiente que você define com o comando '''sbatch''' serão passadas para o seu ''job''. Por esse motivo, se o seu programa precisar que determinadas variáveis de ambiente , é melhor colocá-las no ''script'' do seu ''job''. Isso também facilita a reprodução dos resultados do ''job'' posteriormente, caso você necessite.&lt;br /&gt;
A tabela abaixo, contém informações sobre algumas das variáveis de ambiente de entrada e saída mais comuns quando se usa o comando '''sbatch''' no ''script shell''. Para informações adicionais, veja a página man do '''sbatch''' ou acesse a documentação online no site oficial do Slurm [https://slurm.schedmd.com/sbatch.html https://slurm.schedmd.com/sbatch.html].&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot; width=100%  border=1 cellpadding=35px  &lt;br /&gt;
!|Variáveis de ambiente&lt;br /&gt;
!|Definição&lt;br /&gt;
|-&lt;br /&gt;
|'''SLURM_JOB_ID (and SLURM_JOBID for backwards compatibility)'''&lt;br /&gt;
|''The ID of the job allocation.''&lt;br /&gt;
|-&lt;br /&gt;
|'''SLURM_JOB_NAME'''&lt;br /&gt;
|''Name of the job.''&lt;br /&gt;
|-&lt;br /&gt;
|'''SLURM_JOB_NODELIST (and SLURM_NODELIST for backwards compatibility)'''&lt;br /&gt;
|''List of nodes allocated to the job.''&lt;br /&gt;
|-&lt;br /&gt;
|'''SLURM_JOB_NUM_NODES (and SLURM_NNODES for backwards compatibility)'''&lt;br /&gt;
|''Total number of different nodes in the job's resource allocation.''&lt;br /&gt;
|-&lt;br /&gt;
|'''SLURM_ARRAY_TASK_COUNT'''&lt;br /&gt;
|''Total number of tasks in a job array.''&lt;br /&gt;
|-&lt;br /&gt;
|'''SLURM_ARRAY_TASK_ID'''&lt;br /&gt;
|''Job array ID (index) number.''&lt;br /&gt;
|-&lt;br /&gt;
|'''SLURM_ARRAY_TASK_MAX'''&lt;br /&gt;
|''Job array's maximum ID (index) number.''&lt;br /&gt;
|-&lt;br /&gt;
|'''SLURM_ARRAY_TASK_MIN'''&lt;br /&gt;
|''Job array's minimum ID (index) number.''&lt;br /&gt;
|-&lt;br /&gt;
|'''SLURM_ARRAY_TASK_STEP'''&lt;br /&gt;
|''Job array's index step size.''&lt;br /&gt;
|-&lt;br /&gt;
|'''SLURM_ARRAY_JOB_ID'''&lt;br /&gt;
|''Job array's master job ID number.''&lt;br /&gt;
|-&lt;br /&gt;
|'''SLURM_CLUSTER_NAME'''&lt;br /&gt;
|''Name of the cluster on which the job is executing.''&lt;br /&gt;
|-&lt;br /&gt;
|'''SLURM_CPUS_ON_NODE'''&lt;br /&gt;
|''Number of CPUS on the allocated node.''&lt;br /&gt;
|-&lt;br /&gt;
|'''SLURM_CPUS_PER_TASK'''&lt;br /&gt;
|''Number of cpus requested per task. Only set if the '''--cpus-per-task''' option is specified.''&lt;br /&gt;
|-&lt;br /&gt;
|'''SLURM_JOB_ACCOUNT'''&lt;br /&gt;
|''Account name associated of the job allocation.''&lt;br /&gt;
|-&lt;br /&gt;
|'''SLURM_JOB_CPUS_PER_NODE'''&lt;br /&gt;
|''Count of processors available to the job on this node.''&lt;br /&gt;
|-&lt;br /&gt;
|'''SLURM_JOB_DEPENDENCY'''&lt;br /&gt;
|''Set to value of the '''--dependency''' option.''&lt;br /&gt;
|-&lt;br /&gt;
|'''SLURM_MEM_PER_NODE'''&lt;br /&gt;
|''Same as '''--mem'''.''&lt;br /&gt;
|-&lt;br /&gt;
|'''SLURM_MEM_PER_CPU'''&lt;br /&gt;
|''Same as '''--mem-per-cpu'''.''&lt;br /&gt;
|-&lt;br /&gt;
|'''SLURM_NTASKS (and SLURM_NPROCS for backwards compatibility)'''&lt;br /&gt;
|''Same as '''-n, --ntasks'''''.&lt;br /&gt;
|-&lt;br /&gt;
|'''SLURM_NTASKS_PER_NODE'''&lt;br /&gt;
|''Number of tasks requested per node. Only set if the '''--ntasks-per-node''' option is specified.''&lt;br /&gt;
|-&lt;br /&gt;
|'''SLURM_NTASKS_PER_SOCKET'''&lt;br /&gt;
|''Number of tasks requested per socket. Only set if the '''--ntasks-per-socket''' option is specified.''&lt;br /&gt;
|-&lt;br /&gt;
|'''SLURM_SUBMIT_DIR'''&lt;br /&gt;
|''The directory from which '''sbatch''' was invoked.''&lt;br /&gt;
|-&lt;br /&gt;
|'''SLURM_SUBMIT_HOST'''&lt;br /&gt;
|''The hostname of the computer from which '''sbatch''' was invoked.''&lt;br /&gt;
|-&lt;br /&gt;
|'''SLURM_TASK_PID'''&lt;br /&gt;
|''The process ID of the task being started.''&lt;br /&gt;
|-&lt;br /&gt;
|'''SLURMD_NODENAME'''&lt;br /&gt;
|''Name of the node running the job script.''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Comparação entre o SLURM e o PBS Pro ==&lt;br /&gt;
Segue alguns comandos essenciais do SLURM e seus equivalentes no PBS Pro.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot; width=80%  border=1 cellpadding=35px  &lt;br /&gt;
!|Comando Slrum&lt;br /&gt;
!|Descrição do comando&lt;br /&gt;
!|Comando PBS Pro&lt;br /&gt;
|-&lt;br /&gt;
|'''srun'''&lt;br /&gt;
|submete um comando via SLURM no modo interativo.&lt;br /&gt;
|'''qsub -I'''&lt;br /&gt;
|-&lt;br /&gt;
|'''sbatch'''&lt;br /&gt;
|submete um ''script shell''.&lt;br /&gt;
|'''qsub'''&lt;br /&gt;
|-&lt;br /&gt;
|'''squeue'''&lt;br /&gt;
|lista todos os ''jobs'' (em execução ou no modo de espera) nas filas.&lt;br /&gt;
|'''qstat'''&lt;br /&gt;
|-&lt;br /&gt;
|'''scontrol'''&lt;br /&gt;
|modifica o estado de um ''job'' (maioria só é permitida ao ''root'').&lt;br /&gt;
|'''qalter'''&lt;br /&gt;
|-&lt;br /&gt;
|'''scancel'''&lt;br /&gt;
|cancela um ''job'', quer em execução ou na fila de espera.&lt;br /&gt;
|'''qdel'''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Variáveis de ambiente ===&lt;br /&gt;
Existem também algumas diferenças no tocante às variáveis de ambiente como ilustra a tabela abaixo:&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot; width=40%  border=1 cellpadding=35px  &lt;br /&gt;
!|Comando Slrum&lt;br /&gt;
!|Descrição do comando&lt;br /&gt;
|-&lt;br /&gt;
|$SLURM_JOB_ID&lt;br /&gt;
|$PBS_JOBID&lt;br /&gt;
|-&lt;br /&gt;
|$SLURM_JOB_NAME&lt;br /&gt;
|$PBS_JOBNAME&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
O SLURM não possui o equivalente à variável '''$PBS_NODEFILE''' que aponta para o arquivo que contém os nomes dos nós computacionais reservados para a execução do ''job''. Contudo, quando necessário, é possível criar manualmente esse tipo de arquivo com o comando '''srun''':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash -x&lt;br /&gt;
&lt;br /&gt;
HOSTFILE=/tmp/hosts.$SLURM_JOB_ID&lt;br /&gt;
&lt;br /&gt;
srun hostname -s &amp;gt; $HOSTFILE&lt;br /&gt;
&lt;br /&gt;
if [ -z &amp;quot;$SLURM_NPROCS&amp;quot; ] ; then&lt;br /&gt;
  if [ -z &amp;quot;$SLURM_NTASKS_PER_NODE&amp;quot; ] ; then&lt;br /&gt;
    SLURM_NTASKS_PER_NODE=1&lt;br /&gt;
  fi&lt;br /&gt;
    SLURM_NPROCS=$(( $SLURM_JOB_NUM_NODES * $SLURM_NTASKS_PER_NODE ))&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
/path/to/mpirun -machinefile $HOSTFILE -np $SLURM_NPROCS programa.x&lt;br /&gt;
&lt;br /&gt;
rm /tmp/hosts.$SLURM_JOB_ID&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Diretório de execução ===&lt;br /&gt;
Uma outra diferença importante que distingue o '''SLURM''' do '''PBS Pro''' é que enquanto no primeiro escalonador a tarefa batch é executada automáticamente no diretório de onde foi submetido o seu script, o segundo precisa explicitamente que seja introduzida a seguinte linha:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash -x&lt;br /&gt;
...&lt;br /&gt;
cd $PBS_O_WORKDIR&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As variáveis de ambiente que são definidas durante uma sessão shell do '''SLURM''' são automáticamente exportadas para o ''job batch'' em todos os nós computacionais no instante em que o script entra em execução. Já no '''PBS Pro''' é necessário garantir isso com a introdução da diretriz:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash -x&lt;br /&gt;
...&lt;br /&gt;
#PBS -V&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Output ===&lt;br /&gt;
O '''SLURM''' apresenta ainda uma vantagem considerável e muito útil para aqueles usuários que precisam inspecionar numéricamente e em tempo real a evolução do seu programa, como por exemplo, a convergência de uma determinada iteração: os arquivos de saída '''stdout''' e de erro, '''stderr''' (ver as flags do SLURM) , são criados automáticamnte no diretório de onde foi submetido o script e vão crescendo gradualmente de tamanho à medida que a simulação evolui no tempo. O '''PBS Pro''' mostra-se insuficiente neste quesito: somente no final da execução da tarefa é que os arquivos de saída são escritos no diretório destinado.&lt;br /&gt;
&lt;br /&gt;
=== Diretrizes de submissão ===&lt;br /&gt;
Finalmente com o intuito de auxiliar os usuários na migração dos seus scripts de submissão do '''PBS Pro''' para o '''SLURM''' apresentamos a seguinte tabela comparativa das diretrizes de submissão:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot; width=60%  border=1 cellpadding=35px  &lt;br /&gt;
!|PBS Pro&lt;br /&gt;
!|Slurm&lt;br /&gt;
|-&lt;br /&gt;
|#PBS -N job_name&lt;br /&gt;
|#SBATCH –job-name=”job_name” ou #SBATCH -J job_name&lt;br /&gt;
|-&lt;br /&gt;
|#PBS -l nodes=n&lt;br /&gt;
|#SBATCH –nodes=n&lt;br /&gt;
|-&lt;br /&gt;
|#PBS -l walltime=HH:MM:SS&lt;br /&gt;
|#SBATCH –time=HH:MM:SS&lt;br /&gt;
|-&lt;br /&gt;
|#PBS -l min_walltime=HH:MM:SS&lt;br /&gt;
|#SBATCH –time-min=HH:MM:SS&lt;br /&gt;
|-&lt;br /&gt;
|#PBS -q &amp;lt;queue&amp;gt;&lt;br /&gt;
|#SBATCH –partition=&amp;lt;queue&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|#PBS -l mppwidth=n&lt;br /&gt;
|#SBATCH –ntasks=n&lt;br /&gt;
|-&lt;br /&gt;
|#PBS -l mppnppn=N&lt;br /&gt;
|#SBATCH –ntasks-per-node=N&lt;br /&gt;
|-&lt;br /&gt;
|#PBS -l mppdepth=d&lt;br /&gt;
|#SBATCH –cpus-per-task=d&lt;br /&gt;
|-&lt;br /&gt;
|#PBS -l mppmem=mM&lt;br /&gt;
|#SBATCH –mem=m&lt;br /&gt;
|-&lt;br /&gt;
|#PBS -l mppnodes=&amp;lt;nid-list&amp;gt;&lt;br /&gt;
|#SBATCH –nodelist=&amp;lt;nid-list&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|#PBS -W group_list=a_group&lt;br /&gt;
|#SBATCH –account=a_group&lt;br /&gt;
|-&lt;br /&gt;
|#PBS -o /path/to/stdout&lt;br /&gt;
|#SBATCH –output=/path/to/stdout (pode ser usado %j para jobid)&lt;br /&gt;
|-&lt;br /&gt;
|#PBS -e /path/to/stderr&lt;br /&gt;
|#SBATCH –error=/path/to/stderr&lt;br /&gt;
|-&lt;br /&gt;
|#PBS -V&lt;br /&gt;
|não é necessário&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Devemos também ressaltar que as diretrizes do SLURM podem ser especificadas na linha de comando em vez de colocadas no ''script'':&lt;br /&gt;
&amp;lt;pre class=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
[test3@veredas0 ~]$ sbatch --job-name=&amp;quot;meu job&amp;quot; --ntasks=N ...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;aviso&amp;quot;&amp;gt;&lt;br /&gt;
'''Aviso:''' Para uma informação mais detalhada sobre o escalonador '''SLURM''' o usuário poderá baixar e consultar o arquivo [https://www.lcc.ufmg.br/sites/default/files/manuais/BullXClusterSuite-UserGuide.pdf Bullx cluster suite: User’s Guide]. Para quem estiver interessado o [https://www.cscs.ch Swiss National Supercomputing Centre] disponibiza um video no qual são feitas várias demonstrações de como o usuário pode interagir com o '''SLURM'''.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Manuais]]&lt;br /&gt;
[[Category:Cluster Avicena]]&lt;br /&gt;
[[Category:Cluster Veredas]]&lt;br /&gt;
[[Category:Slurm]]&lt;br /&gt;
[[Category:Gerenciador de filas]]&lt;/div&gt;</summary>
		<author><name>Admlccwiki</name></author>
		
	</entry>
	<entry>
		<id>https://www.lcc.ufmg.br/wiki/index.php?title=Acesso_remoto_para_usu%C3%A1rios_Windows&amp;diff=277</id>
		<title>Acesso remoto para usuários Windows</title>
		<link rel="alternate" type="text/html" href="https://www.lcc.ufmg.br/wiki/index.php?title=Acesso_remoto_para_usu%C3%A1rios_Windows&amp;diff=277"/>
		<updated>2021-09-25T00:00:41Z</updated>

		<summary type="html">&lt;p&gt;Admlccwiki: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Para acessar os computadores do LCC/CENAPAD-MG remotamente, o usuário deve utiizar o Secure Shell (SSH).&lt;br /&gt;
&lt;br /&gt;
O Secure Shell (SSH) é um protocolo de rede criptográfico para operação de serviços de rede de forma segura sobre uma rede insegura. O melhor exemplo de aplicação conhecido é para login remoto de usuários a sistemas de computadores.&lt;br /&gt;
&lt;br /&gt;
Para os usuários da plataforma Windows, para conectar via SSH é possível através do cliente [https://www.putty.org/ PuTTy] com as configurações default e também do cliente [https://docs.microsoft.com/pt-br/windows-server/administration/openssh/openssh_overview OpenSSH nativo no Windows 10] que pode ser acessado através do Windows PowerShell.&lt;br /&gt;
&lt;br /&gt;
=Acessar o cluster Avicena=&lt;br /&gt;
&lt;br /&gt;
===Utilizando o cliente PuTTY===&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Abra o client PuTTy e digite o comando abaixo na caixa de texto Host Name(or IP address), figura 1.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ssh seu_login@avicena.cenapad.ufmg.br&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Substitua a palavra '''seu_login''' pelo login que você criou na abertura de sua conta.&lt;br /&gt;
&lt;br /&gt;
[[File:TelaLoginPuttyAvicena.png|center|thumb|460px|'''Figura 1''' - Tela de login software PuTTy preenchido para acessar o cluster Avicena]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Clique no botão Open e digite a sua senha.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===Utilizando o cliente Windows PowerShell===&lt;br /&gt;
Primeiro verifique se o OpenSSH está instalado em seu computador, senão estiver faça a instalação. Para saber como fazer a verificação e instalaçao [[Instalar cliente OpenSSH no Windows|entre nessa página]].&lt;br /&gt;
Após ter instalado o OpenSSH em seu computador, execute os passos abaixo:&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Abra o PowerShell e digite o comando abaixo:&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ssh seu_login@avicena.cenapad.ufmg.br&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Substitua a palavra '''seu_login''' pelo login que você criou na abertura de sua conta.&lt;br /&gt;
&amp;lt;li&amp;gt;Aperte a tecla enter e digite a sua senha.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Acessar o cluster Veredas=&lt;br /&gt;
&lt;br /&gt;
===Utilizando o cliente PuTTY===&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Abra o client PuTTy e digite o comando abaixo na caixa de texto Host Name(or IP address), figura 2.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ssh seu_login@veredas.cenapad.ufmg.br&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Substitua a palavra '''seu_login''' pelo login que você criou na abertura de sua conta.&lt;br /&gt;
&lt;br /&gt;
[[File:TelaLoginPuttyVeredas.png|center|thumb|460px|'''Figura 2''' - Tela de login software PuTTy preenchido para acessar o cluster Veredas]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Clique no botão Open e digite a sua senha.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===Utilizando o cliente Windows PowerShell===&lt;br /&gt;
Primeiro verifique se o OpenSSH está instalado em seu computador, senão estiver faça a instalação. Para saber como fazer a verificação e instalaçao [[Instalar cliente OpenSSH no Windows|entre nessa página]].&lt;br /&gt;
Após ter instalado o OpenSSH em seu computador, execute os passos abaixo:&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Abra o PowerShell e digite o comando abaixo:&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ssh seu_login@veredas.cenapad.ufmg.br&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Substitua a palavra '''seu_login''' pelo login que você criou na abertura de sua conta.&lt;br /&gt;
&amp;lt;li&amp;gt;Aperte a tecla enter e digite a sua senha.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Manuais]]&lt;br /&gt;
[[Category:Cluster Avicena‏]]&lt;br /&gt;
[[Category:Cluster Veredas]]&lt;/div&gt;</summary>
		<author><name>Admlccwiki</name></author>
		
	</entry>
	<entry>
		<id>https://www.lcc.ufmg.br/wiki/index.php?title=Arquivo:TelaLoginPuttyAvicena.png&amp;diff=276</id>
		<title>Arquivo:TelaLoginPuttyAvicena.png</title>
		<link rel="alternate" type="text/html" href="https://www.lcc.ufmg.br/wiki/index.php?title=Arquivo:TelaLoginPuttyAvicena.png&amp;diff=276"/>
		<updated>2021-09-24T23:59:32Z</updated>

		<summary type="html">&lt;p&gt;Admlccwiki: Tela de login software PuTTy preenchido para acessar o cluster Avicena&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Descrição do arquivo ==&lt;br /&gt;
Tela de login software PuTTy preenchido para acessar o cluster Avicena&lt;/div&gt;</summary>
		<author><name>Admlccwiki</name></author>
		
	</entry>
	<entry>
		<id>https://www.lcc.ufmg.br/wiki/index.php?title=Categoria:Cluster_Veredas&amp;diff=274</id>
		<title>Categoria:Cluster Veredas</title>
		<link rel="alternate" type="text/html" href="https://www.lcc.ufmg.br/wiki/index.php?title=Categoria:Cluster_Veredas&amp;diff=274"/>
		<updated>2021-09-24T23:53:21Z</updated>

		<summary type="html">&lt;p&gt;Admlccwiki: Admlccwiki moveu Categoria:Cluster Bull para Categoria:Cluster Veredas&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Manuais]]&lt;/div&gt;</summary>
		<author><name>Admlccwiki</name></author>
		
	</entry>
	<entry>
		<id>https://www.lcc.ufmg.br/wiki/index.php?title=Categoria:Cluster_Bull&amp;diff=275</id>
		<title>Categoria:Cluster Bull</title>
		<link rel="alternate" type="text/html" href="https://www.lcc.ufmg.br/wiki/index.php?title=Categoria:Cluster_Bull&amp;diff=275"/>
		<updated>2021-09-24T23:53:21Z</updated>

		<summary type="html">&lt;p&gt;Admlccwiki: Admlccwiki moveu Categoria:Cluster Bull para Categoria:Cluster Veredas&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECIONAMENTO [[:Categoria:Cluster Veredas]]&lt;/div&gt;</summary>
		<author><name>Admlccwiki</name></author>
		
	</entry>
	<entry>
		<id>https://www.lcc.ufmg.br/wiki/index.php?title=Acesso_remoto_para_usu%C3%A1rios_Linux&amp;diff=273</id>
		<title>Acesso remoto para usuários Linux</title>
		<link rel="alternate" type="text/html" href="https://www.lcc.ufmg.br/wiki/index.php?title=Acesso_remoto_para_usu%C3%A1rios_Linux&amp;diff=273"/>
		<updated>2021-09-24T23:52:45Z</updated>

		<summary type="html">&lt;p&gt;Admlccwiki: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Para acessar os computadores do LCC/CENAPAD-MG remotamente, o usuário deve utiizar o Secure Shell (SSH).&lt;br /&gt;
&lt;br /&gt;
O Secure Shell (SSH) é um protocolo de rede criptográfico para operação de serviços de rede de forma segura sobre uma rede insegura. O melhor exemplo de aplicação conhecido é para login remoto de usuários a sistemas de computadores.&lt;br /&gt;
&lt;br /&gt;
=Acessar o cluster Avicena=&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Abra seu terminal do linux e digite o comando abaixo:&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ssh seu_login@avicena.cenapad.ufmg.br&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Substitua a palavra '''seu_login''' pelo login que você recebeu na abertura de sua conta.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Aperte a tecla entrer e digite a sua senha.&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Acessar o cluster Veredas=&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Abra seu terminal do linux e digite o comando abaixo:&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ssh seu_login@veredas.cenapad.ufmg.br&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Substitua a palavra '''seu_login''' pelo login que você recebeu na abertura de sua conta.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Aperte a tecla entrer e digite a sua senha.&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Manuais]]&lt;br /&gt;
[[Category:Cluster Avicena‏]]&lt;br /&gt;
[[Category:Cluster Veredas]]&lt;/div&gt;</summary>
		<author><name>Admlccwiki</name></author>
		
	</entry>
	<entry>
		<id>https://www.lcc.ufmg.br/wiki/index.php?title=MediaWiki:Sidebar&amp;diff=272</id>
		<title>MediaWiki:Sidebar</title>
		<link rel="alternate" type="text/html" href="https://www.lcc.ufmg.br/wiki/index.php?title=MediaWiki:Sidebar&amp;diff=272"/>
		<updated>2021-09-24T23:51:06Z</updated>

		<summary type="html">&lt;p&gt;Admlccwiki: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;**{{SERVER}}|icone&lt;br /&gt;
* navigation&lt;br /&gt;
** mainpage|mainpage-description&lt;br /&gt;
** recentchanges-url|recentchanges&lt;br /&gt;
** randompage-url|randompage&lt;br /&gt;
*Acesso rápido&lt;br /&gt;
** Guia_Prático_do_cluster_Avicena_LCC/CENAPAD-MG|Guia prático cluster Avicena&lt;br /&gt;
** Guia_Prático_do_cluster_Veredas_LCC/CENAPAD-MG|Guia prático cluster Veredas&lt;br /&gt;
** Slurm|Slurm&lt;br /&gt;
** Acesso_remoto_para_usuários_Linux|Acesso remoto via Linux&lt;br /&gt;
** Acesso_remoto_para_usuários_Windows|Acesso remoto via Windows&lt;br /&gt;
** https://pt.wikipedia.org/wiki/Utilit%C3%A1rios_Unix|Comandos Linux&lt;br /&gt;
* Categorias&lt;br /&gt;
** Categoria:Manuais‏‎|Manuais&lt;br /&gt;
** Categoria:Cluster Avicena|Cluster Avicena‏‎&lt;br /&gt;
** Categoria:Cluster Veredas|Cluster Veredas&lt;br /&gt;
* SEARCH&lt;br /&gt;
* TOOLBOX&lt;br /&gt;
* LANGUAGES&lt;/div&gt;</summary>
		<author><name>Admlccwiki</name></author>
		
	</entry>
	<entry>
		<id>https://www.lcc.ufmg.br/wiki/index.php?title=Categoria:Guia_Pr%C3%A1tico_do_cluster_Avicena_LCC/CENAPAD-MG&amp;diff=271</id>
		<title>Categoria:Guia Prático do cluster Avicena LCC/CENAPAD-MG</title>
		<link rel="alternate" type="text/html" href="https://www.lcc.ufmg.br/wiki/index.php?title=Categoria:Guia_Pr%C3%A1tico_do_cluster_Avicena_LCC/CENAPAD-MG&amp;diff=271"/>
		<updated>2021-09-24T23:49:48Z</updated>

		<summary type="html">&lt;p&gt;Admlccwiki: Criar página em branco&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Admlccwiki</name></author>
		
	</entry>
	<entry>
		<id>https://www.lcc.ufmg.br/wiki/index.php?title=Categoria:Cluster_Avicena&amp;diff=270</id>
		<title>Categoria:Cluster Avicena</title>
		<link rel="alternate" type="text/html" href="https://www.lcc.ufmg.br/wiki/index.php?title=Categoria:Cluster_Avicena&amp;diff=270"/>
		<updated>2021-09-24T23:49:33Z</updated>

		<summary type="html">&lt;p&gt;Admlccwiki: Criar página em branco&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Admlccwiki</name></author>
		
	</entry>
	<entry>
		<id>https://www.lcc.ufmg.br/wiki/index.php?title=Guia_Pr%C3%A1tico_do_cluster_Avicena_LCC/CENAPAD-MG&amp;diff=269</id>
		<title>Guia Prático do cluster Avicena LCC/CENAPAD-MG</title>
		<link rel="alternate" type="text/html" href="https://www.lcc.ufmg.br/wiki/index.php?title=Guia_Pr%C3%A1tico_do_cluster_Avicena_LCC/CENAPAD-MG&amp;diff=269"/>
		<updated>2021-09-24T23:49:15Z</updated>

		<summary type="html">&lt;p&gt;Admlccwiki: Criou página com '== Abertura de conta == Após o usuário preencher o [https://www.lcc.ufmg.br/abertura-de-contas-formularios formulário de abertura de conta] e enviar para o LCC/CENAPAD-MG,...'&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Abertura de conta ==&lt;br /&gt;
Após o usuário preencher o [https://www.lcc.ufmg.br/abertura-de-contas-formularios formulário de abertura de conta] e enviar para o LCC/CENAPAD-MG, caso aprovada pela equipe do LCC/CENAPAD-MG, a conta será aberta e este poderá utlizar o Cluster Avicena LCC/CENAPAD-MG. O usuário receberá os dados de acesso através do email cadastrado no ato da aberto de conta.&lt;br /&gt;
&lt;br /&gt;
A abertura de cada conta estará vinculada a um projeto para fins de contabilidade de uso. No cluster o projeto será identificado pelo grupo unix '''CODIGO_DO_PROJETO''' (código que você receberá por email) e as áreas de trabalho concedidas são:&lt;br /&gt;
&lt;br /&gt;
*áreas privativas dos usuários: /home/'''CODIGO_DO_PROJETO'''/'''SEU_LOGIN'''&lt;br /&gt;
*área para software do grupo: /home/projetos/'''CODIGO_DO_PROJETO'''&lt;br /&gt;
*storage para dados computacionais: /storage/'''CODIGO_DO_PROJETO'''&lt;br /&gt;
&lt;br /&gt;
Somente os usuários do grupo '''CODIGO_DO_PROJETO''' têm permissões de leitura, escrita e execução nos diretórios /projetos/'''CODIGO_DO_PROJETO''' e /storage/'''CODIGO_DO_PROJETO'''. A organização interna dos diretórios fica a critério dos membros do grupo. O responsável pelas atividades e ações do grupo será o seu pesquisador principal (principal investigator, PI), ou seja, o professor com vínculo empregatício à sua universidade de origem ou um PostDoc. Em geral será o pesquisador principal que solicitará a abertura de projeto e a inclusão de seus colaboradores de pesquisa. Qualquer usuário poderá solicitar à equipe de manutenção a sua inclusão em mais de um projeto diferente, sujeito à aprovação do seu respetivo PI.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;aviso&amp;quot;&amp;gt;&lt;br /&gt;
'''Atenção!'''&amp;lt;br/&amp;gt;&lt;br /&gt;
Para a comunicação das senhas será utilizado o serviço [https://privnote.com Privnote]. Trata-se de um serviço de anotações online no qual o destinatário tem um tempo limite para ler a anotação até que esta se auto-destrua. Os links de acesso ao '''Privnote''' serão enviados posteriormente para cada email cadastrado. No momento em que o link for ‘clicado’, a página será carregada com uma janela contendo uma string de 12 caracteres alfanuméricos. Essa string é a senha gerada para o primeiro acesso do usuário ao cluster. Copie essa string, porque o link será destruído. Recomendamos fortemente que no primeiro acesso o usuário troque a senha com o comando '''passwd'''. Lembre-se da importância de utilizar senhas fortes. Todos os estudos corroboram que a principal razão por detrás da grande maioria dos incidentes de segurança digital é a utilização de senhas fracas.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Acesso Remoto ==&lt;br /&gt;
O acesso ao Cluster Avicena do LCC/CENAPAD-MG é feito através do ssh através do endereço: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ssh SEU_LOGIN@avicena.cenapad.ufmg.br&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* substitua a palavra '''SEU_LOGIN''' pelo login que você recebeu após a abertura da conta. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Caso necessite de mais detalhes, acesso os link abaixo:&lt;br /&gt;
&lt;br /&gt;
*[[Acesso remoto para usuários Linux|Acesso remoto para usuários Linux]]&lt;br /&gt;
&lt;br /&gt;
*[[Acesso remoto para usuários Windows|Acesso remoto para usuários Windows]]&lt;br /&gt;
&lt;br /&gt;
== O Cluster Avicena LCC/CENAPAD-MG ==&lt;br /&gt;
&lt;br /&gt;
O Cluster Avicena LCC/CENAPAD-­MG possui 6 nós computacionais distribuídos fisicamente. Os nós possuem configurações heterogêneas agregando um total de 42 núcleos de processamento (cores) e aproximadamente 384 Gigabytes de memória distribuída pela máquina. O potencial de desempenho teórico do cluster traduz-se em 392 Gigaflops (392 bilhões de operações elementares por segundo). O Cluster é interligado através de um switch lógico de alto desempenho seguindo a arquitetura de rede ethernet.&lt;br /&gt;
&lt;br /&gt;
=== Hardware ===&lt;br /&gt;
Os servidores que compõem o cluster Avicena do LCC/CENAPAD-MG estão organizados da seguinte forma:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot; width=50%  border=1 cellpadding=35px  &lt;br /&gt;
!|Quantidade&lt;br /&gt;
!|Descrição&lt;br /&gt;
!|Hardware&lt;br /&gt;
!|Hostnames&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Servidor login (masternode)&lt;br /&gt;
|Intel Core 17-9700F 3 Ghz – 64GB DDR4 2 TB hard disk&lt;br /&gt;
|masternode&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Nodos computacionais&lt;br /&gt;
|Intel Core i7-8700 3.20 Ghz 64GB DDR4 1 TB hard disk&lt;br /&gt;
|node[001,002,003]&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Nodos computacionais&lt;br /&gt;
|Intel Core 17-9700F 3 Ghz – 64GB DDR4 1 TB hard disk&lt;br /&gt;
|node 004&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Nodos computacionais&lt;br /&gt;
|AMD Ryzen 3700X 64GB DDR4 12 TB hard disk&lt;br /&gt;
|node [005, 006]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Todo o trabalho de desenvolvimento de programas científicos bem como a preparação das tarefas computacionais devem ser realizados no servidor de login '''masternode'''. O workflow que rege um determinado cálculo deve ser expresso num arquivo de ''script'' em linguagem bash e submetido ao [[Slurm|gerenciador de recursos '''Slurm''']].&lt;br /&gt;
&lt;br /&gt;
Extensa fonte de informação sobre o [https://www.schedmd.com/ '''Slurm'''] encontra-se no site dos seus criadores, onde é mantida uma mailing-list para usuários [https://lists.schedmd.com/cgi-bin/mailman/listinfo/slurm-users '''slurm-users''']. Praticamente todos os grandes centros de HPC no mundo apresentam também exemplos de submissão de jobs para códigos específicos das diversas áreas.&lt;br /&gt;
&lt;br /&gt;
=== Software ===&lt;br /&gt;
==== Compiladores ====&lt;br /&gt;
O cluster está equipado com vários compiladores e ferramentas de análise de desempenho, de depuração e de desenvolvimento. Para além dos compiladores integrados que acompanham a distribuição '''Centos Linux 7.8''', tais como o '''''gcc, gfortran, dbg, openmpi, mpich''''', etc, sob a licença da [http://www.gnu.org/licenses/gpl-3.0.html '''GNU'''], existem também os suítes proprietários da '''Intel''':&lt;br /&gt;
&lt;br /&gt;
* '''Intel(R) Fortran Compiler 2021.1.1 for IA-32 / Intel(R) 64'''&lt;br /&gt;
* '''Intel(R) C/C++ Compiler 2021.1.1 for IA-32 / Intel(R) 64'''&lt;br /&gt;
* '''Intel(R) MPI Library, Development Kit for Linux OS'''&lt;br /&gt;
&lt;br /&gt;
==== Aplicações e Bibliotecas para desenvolvimento ====&lt;br /&gt;
Os pacotes científicos e bibliotecas para desenvolvimento instalados pela equipe de operação do cluster estão localizados nos diretórios diretório_raiz/'''desenvolvimento'''. Os pacotes de domínio público serão instalados sob demanda dos usuários. Está aberta a possibilidade de instalação de pacotes proprietários (licença paga) para uso exclusivo de determinados grupos de pesquisa. Nestes casos, é conveniente haver um contato prévio entre o grupo interessado e a equipe de operação de modo a realizar uma instalação que respeite as cláusulas da licença de contrato do software. Veja abaixo a lista de alguns itens instalados no cluster Avicena:&lt;br /&gt;
* '''Pacotes'''&lt;br /&gt;
** QUANTUM ESPRESSO 6.6&lt;br /&gt;
** GROMACS 2020&lt;br /&gt;
** LAMMPS-MAR2021&lt;br /&gt;
** GAMESS 2021&lt;br /&gt;
** ORCA-4.2.1&lt;br /&gt;
** R-4.0.3&lt;br /&gt;
** SIESTA-4.1&lt;br /&gt;
&lt;br /&gt;
* '''Programação'''&lt;br /&gt;
** GNU-4.8.5&lt;br /&gt;
** GNU-9.3.0&lt;br /&gt;
** Compiladores Intel 2021&lt;br /&gt;
** MPICH-3.4&lt;br /&gt;
** OPENMPI-2.1.6&lt;br /&gt;
** OPENMPI-4.1.0&lt;br /&gt;
** OPENMPI-3.1.4&lt;br /&gt;
** PYTHON-2.7&lt;br /&gt;
** PYTHON-3.6&lt;br /&gt;
&lt;br /&gt;
* '''Bibliotecas'''&lt;br /&gt;
** CURL&lt;br /&gt;
** FFTW&lt;br /&gt;
** INTEL MKL&lt;br /&gt;
** LIBXC&lt;br /&gt;
** NETCDF C&lt;br /&gt;
** NETCDF FORTRAN&lt;br /&gt;
** OPENBLAS&lt;br /&gt;
** BLAS/LAPACK&lt;br /&gt;
** SCALAPACK&lt;br /&gt;
&lt;br /&gt;
* '''Utilitários'''&lt;br /&gt;
** HDF5-1.10.5&lt;br /&gt;
** CMAKE-3.20&lt;br /&gt;
&lt;br /&gt;
O cluster '''Avicena''' possui o pacote de gerenciamento [https://github.com/TACC/Lmod '''Lmod'''] [https://github.com/TACC/Lmod (https://github.com/TACC/Lmod)] instalado. Esta ferramenta permite a um usuário alternar entre diferentes versões de um pacote ou compiladores de maneira fácil, limpa e eficaz. O [https://github.com/TACC/Lmod '''Lmod'''] define dinâmicamente as variáveis de ambiente comuns tais como o '''PATH''', '''LD_LIBRARY_PATH''', '''MANPATH''' entre outras, sem que o usuário tenha que as definir no seu arquivo '''.bash_profile''' toda a vez que precisar utilizar uma determinada aplicação científica. Adicionalmente o [https://github.com/TACC/Lmod '''Lmod'''] permite “carregar” e “descarregar” combinações de aplicações/compiladores incluindo as suas dependências. As variáveis de ambiente específicas de cada pacote estão definidas em um arquivo designado por '''''modulefile''''' &amp;lt;ref&amp;gt;Trata-se de um arquivo do tipo ''script'' que pode ser escrito na linguagem&lt;br /&gt;
[https://www.tcl.tk TCL] [https://www.tcl.tk (https://www.tcl.tk)] ou [https://www.lua.org Lua] [https://www.lua.org (https://www.lua.org)].&amp;lt;/ref&amp;gt; . Os arquivos modulefile (módulos) estão localizados hierárquicamente sob o diretório definido em '''$MODULEPATH''' (i.e., '''/usr/local/ohpc/pub/modulefiles'''). Existem vários comandos que podem ser utilizados para gerenciar os arquivos modulefile:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot; width=60%  border=1 cellpadding=35px  &lt;br /&gt;
!|Comando&lt;br /&gt;
!|Descrição&lt;br /&gt;
|-&lt;br /&gt;
|'''module avail'''&lt;br /&gt;
|Lista todos os módulos disponíveis para carregamento&lt;br /&gt;
|-&lt;br /&gt;
|'''module spider &amp;lt;pattern&amp;gt;'''&lt;br /&gt;
|Procura por um módulo específico (e.g. module spider siesta)&lt;br /&gt;
|-&lt;br /&gt;
|'''module load &amp;lt;mod1&amp;gt;[mod2 …]'''&lt;br /&gt;
|'''''Carrega''''' um módulo ou lista de módulos&lt;br /&gt;
|-&lt;br /&gt;
|'''module unload &amp;lt;module&amp;gt;'''&lt;br /&gt;
|'''''Descarrega''''' o módulo&lt;br /&gt;
|-&lt;br /&gt;
|'''module list'''&lt;br /&gt;
|Lista todos os módulos que estão carregados no ambiente&lt;br /&gt;
|-&lt;br /&gt;
|'''module purge'''&lt;br /&gt;
|Descarrega todos os módulos que estão carregados no ambiente&lt;br /&gt;
|-&lt;br /&gt;
|'''module display &amp;lt;module&amp;gt;'''&lt;br /&gt;
|Mostra o conteúdo do módulo (e.g. quais as variáveis de ambiente que são definidas)&lt;br /&gt;
|-&lt;br /&gt;
|'''module use &amp;lt;path&amp;gt;'''&lt;br /&gt;
|Acrescenta um diretório local de módulos de um usuário aos módulos do sistema&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Mostramos abaixo o exemplo de saída na ''console'' quando o comando '''module avail''' é executado:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[prado@masternode ~]$ module avail&lt;br /&gt;
&lt;br /&gt;
------------------------------- /desenvolvimento/modulefiles/intel/oneapi -------------&lt;br /&gt;
advisor/2021.1.1		dnnl/latest			intel_ipp_intel64/2021.1.1&lt;br /&gt;
advisor/latest			dnnl—cpu—gomp/2021.1.1		intel_ipp_intel64/latest&lt;br /&gt;
cc1/2021.1.1			dnnl—cpu—gomp/latest		itac/2021.1.1&lt;br /&gt;
ccl/latest			dnnl—cpu—iomp/2021.1.1		itac/latest&lt;br /&gt;
clck/2021.1.1			dnnl—cpu—iomp/latest		mkl/2021.1.1&lt;br /&gt;
clck/lacest			dnnl—cpu—tbb/2021.1.1		mkl/latest&lt;br /&gt;
compiler/2021.1.1		dnnl—cpu—tbb/latest		mk132/2021.1.1&lt;br /&gt;
compiler/latest			dpct/2021.1.1			mk132/latest&lt;br /&gt;
compiler32/2021.1.1		dpct/latest			mpi/2021.1.1&lt;br /&gt;
compiler32/latest		dpl/2021.1.1			mpi/latest&lt;br /&gt;
compiler—rt/2021.1.1		dpl/latest			oclfpga/2021.1.1&lt;br /&gt;
compiler—rt/latest		init_opencl/2021.1.1		oclfpg/latest&lt;br /&gt;
compiler—rt32/2021.1.1		init_opencl/latest		tbb/2021 .1.1&lt;br /&gt;
compiler—rt32/latest		inspector/2021.1.1		tbb/latest&lt;br /&gt;
dal/2021.1.1			inspector/latest		tbb32/2021.1.1&lt;br /&gt;
dal/latest			intel_ippcp_ia32/2021.1.1	tbb32/Iatest&lt;br /&gt;
debugger/10.0.0			intel_ippcp_ia32/latest		vpl/2021.1.1&lt;br /&gt;
debugger/latest			intel_ippcp_intel64/2021.1.1	vpl/latest&lt;br /&gt;
dev—utilities/2021.1..1		intel_ippcp_intel64/latest	vtune/2021.1.1&lt;br /&gt;
dev—utilities/latest		intel_ipp_ia32/2021.1.1		vtune/latest&lt;br /&gt;
dnnl/2021.1.1			intel_ipp_ia32/latest&lt;br /&gt;
&lt;br /&gt;
-------------------------------- /usr/share/Modules/modulefiles --------------&lt;br /&gt;
cmake/3.20			   gromacs/2020&lt;br /&gt;
fftw/3.3.9			   hdf5/1.10.5&lt;br /&gt;
gamess/2021			   lammps/2021&lt;br /&gt;
gcc/9.3				   libxc/5.1.3&lt;br /&gt;
gnu—mpi/mpich/3.2.1		   netcdf/4.7.4&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Manuais]]&lt;br /&gt;
[[Category:Cluster Avicena‏]]&lt;br /&gt;
[[Category:Guia Prático do cluster Avicena LCC/CENAPAD-MG‎]]&lt;/div&gt;</summary>
		<author><name>Admlccwiki</name></author>
		
	</entry>
	<entry>
		<id>https://www.lcc.ufmg.br/wiki/index.php?title=MediaWiki:Sidebar&amp;diff=268</id>
		<title>MediaWiki:Sidebar</title>
		<link rel="alternate" type="text/html" href="https://www.lcc.ufmg.br/wiki/index.php?title=MediaWiki:Sidebar&amp;diff=268"/>
		<updated>2021-09-21T01:17:11Z</updated>

		<summary type="html">&lt;p&gt;Admlccwiki: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;**{{SERVER}}|icone&lt;br /&gt;
* navigation&lt;br /&gt;
** mainpage|mainpage-description&lt;br /&gt;
** recentchanges-url|recentchanges&lt;br /&gt;
** randompage-url|randompage&lt;br /&gt;
*Acesso rápido&lt;br /&gt;
** Guia_Prático_do_cluster_BULL_LCC/CENAPAD-MG|Guia prático cluster&lt;br /&gt;
** Slurm|Slurm&lt;br /&gt;
** Acesso_remoto_para_usuários_Linux|Acesso cluster via Linux&lt;br /&gt;
** Acesso_remoto_para_usuários_Windows|Acesso cluster via Windows&lt;br /&gt;
** https://pt.wikipedia.org/wiki/Utilit%C3%A1rios_Unix|Comandos Linux&lt;br /&gt;
* Categorias&lt;br /&gt;
** Categoria:Manuais‏‎|Manuais‏‎&lt;br /&gt;
** Categoria:Cluster Bull‏|Cluster Bull&lt;br /&gt;
* SEARCH&lt;br /&gt;
* TOOLBOX&lt;br /&gt;
* LANGUAGES&lt;/div&gt;</summary>
		<author><name>Admlccwiki</name></author>
		
	</entry>
	<entry>
		<id>https://www.lcc.ufmg.br/wiki/index.php?title=Acesso_remoto_para_usu%C3%A1rios_Windows&amp;diff=267</id>
		<title>Acesso remoto para usuários Windows</title>
		<link rel="alternate" type="text/html" href="https://www.lcc.ufmg.br/wiki/index.php?title=Acesso_remoto_para_usu%C3%A1rios_Windows&amp;diff=267"/>
		<updated>2020-09-03T17:39:03Z</updated>

		<summary type="html">&lt;p&gt;Admlccwiki: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Para acessar o Cluster Bull remotamente, o usuário deve utiizar o Secure Shell (SSH).&lt;br /&gt;
&lt;br /&gt;
O Secure Shell (SSH) é um protocolo de rede criptográfico para operação de serviços de rede de forma segura sobre uma rede insegura. O melhor exemplo de aplicação conhecido é para login remoto de usuários a sistemas de computadores.&lt;br /&gt;
&lt;br /&gt;
Para os usuários da plataforma Windows, para conectar via SSH é possível através do cliente [https://www.putty.org/ PuTTy] com as configurações default e também do cliente [https://docs.microsoft.com/pt-br/windows-server/administration/openssh/openssh_overview OpenSSH nativo no Windows 10] que pode ser acessado através do Windows PowerShell.&lt;br /&gt;
&lt;br /&gt;
==Como acessar o Cluster Bull remotamente via Windows?==&lt;br /&gt;
&lt;br /&gt;
===Utilizando o cliente PuTTY===&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Abra o client PuTTy e digite o comando abaixo na caixa de texto Host Name(or IP address), figura 1.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
seu_login@veredas.cenapad.ufmg.br&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Substitua a palavra '''seu_login''' pelo login que você criou na abertura de sua conta.&lt;br /&gt;
&lt;br /&gt;
[[File:TelaLoginPuttyVeredas.png|center|thumb|460px|'''Figura 1''' - Tela de login software PuTTy preenchido para acessar o cluster veredas]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Clique no botão Open e digite a sua senha.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===Utilizando o cliente Windows PowerShell===&lt;br /&gt;
Primeiro verifique se o OpenSSH está instalado em seu computador, senão estiver faça a instalação. Para saber como fazer a verificação e instalaçao [[Instalar cliente OpenSSH no Windows|entre nessa página]].&lt;br /&gt;
Após ter instalado o OpenSSH em seu computador, execute os passos abaixo:&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Abra o PowerShell e digite o comando abaixo:&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ssh seu_login@veredas.cenapad.ufmg.br&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Substitua a palavra '''seu_login''' pelo login que você criou na abertura de sua conta.&lt;br /&gt;
&amp;lt;li&amp;gt;Aperte a tecla enter e digite a sua senha.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Manuais]]&lt;br /&gt;
[[Category:Cluster Bull‏‎]]&lt;br /&gt;
[[Category:Guia de comandos linux]]&lt;br /&gt;
[[Category:Acesso remoto ao Cluster Bull]]&lt;br /&gt;
[[Category:Acesso remoto para usuários Windows‏‎]]&lt;/div&gt;</summary>
		<author><name>Admlccwiki</name></author>
		
	</entry>
	<entry>
		<id>https://www.lcc.ufmg.br/wiki/index.php?title=MediaWiki:Common.css&amp;diff=41</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://www.lcc.ufmg.br/wiki/index.php?title=MediaWiki:Common.css&amp;diff=41"/>
		<updated>2019-06-04T13:39:49Z</updated>

		<summary type="html">&lt;p&gt;Admlccwiki: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/** o código CSS colocado aqui será aplicado a todos os temas */&lt;br /&gt;
/*Style for bash scripts: pre tags with class &amp;quot;bash&amp;quot;*/&lt;br /&gt;
pre.bash {&lt;br /&gt;
 background-color: black;&lt;br /&gt;
 color: grey;&lt;br /&gt;
 font-size: 1.18em;&lt;br /&gt;
 font-family: Consolas,Monaco,Lucida Console,Liberation Mono,DejaVu Sans Mono,Bitstream Vera Sans Mono,Courier New, monospace;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*.mw-highlight pre {&lt;br /&gt;
	font-size: 90%;&lt;br /&gt;
}*/&lt;/div&gt;</summary>
		<author><name>Admlccwiki</name></author>
		
	</entry>
	<entry>
		<id>https://www.lcc.ufmg.br/wiki/index.php?title=MediaWiki:Common.css&amp;diff=40</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://www.lcc.ufmg.br/wiki/index.php?title=MediaWiki:Common.css&amp;diff=40"/>
		<updated>2019-06-04T13:39:31Z</updated>

		<summary type="html">&lt;p&gt;Admlccwiki: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/** o código CSS colocado aqui será aplicado a todos os temas */&lt;br /&gt;
/*Style for bash scripts: pre tags with class &amp;quot;bash&amp;quot;*/&lt;br /&gt;
pre.bash {&lt;br /&gt;
 background-color: black;&lt;br /&gt;
 color: grey;&lt;br /&gt;
 font-size: 1.17em;&lt;br /&gt;
 font-family: Consolas,Monaco,Lucida Console,Liberation Mono,DejaVu Sans Mono,Bitstream Vera Sans Mono,Courier New, monospace;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*.mw-highlight pre {&lt;br /&gt;
	font-size: 90%;&lt;br /&gt;
}*/&lt;/div&gt;</summary>
		<author><name>Admlccwiki</name></author>
		
	</entry>
	<entry>
		<id>https://www.lcc.ufmg.br/wiki/index.php?title=MediaWiki:Common.css&amp;diff=39</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://www.lcc.ufmg.br/wiki/index.php?title=MediaWiki:Common.css&amp;diff=39"/>
		<updated>2019-06-04T13:39:08Z</updated>

		<summary type="html">&lt;p&gt;Admlccwiki: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/** o código CSS colocado aqui será aplicado a todos os temas */&lt;br /&gt;
/*Style for bash scripts: pre tags with class &amp;quot;bash&amp;quot;*/&lt;br /&gt;
pre.bash {&lt;br /&gt;
 background-color: black;&lt;br /&gt;
 color: grey;&lt;br /&gt;
 font-size: 1.15em;&lt;br /&gt;
 font-family: Consolas,Monaco,Lucida Console,Liberation Mono,DejaVu Sans Mono,Bitstream Vera Sans Mono,Courier New, monospace;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*.mw-highlight pre {&lt;br /&gt;
	font-size: 90%;&lt;br /&gt;
}*/&lt;/div&gt;</summary>
		<author><name>Admlccwiki</name></author>
		
	</entry>
	<entry>
		<id>https://www.lcc.ufmg.br/wiki/index.php?title=MediaWiki:Common.css&amp;diff=38</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://www.lcc.ufmg.br/wiki/index.php?title=MediaWiki:Common.css&amp;diff=38"/>
		<updated>2019-06-04T13:10:23Z</updated>

		<summary type="html">&lt;p&gt;Admlccwiki: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/** o código CSS colocado aqui será aplicado a todos os temas */&lt;br /&gt;
/*Style for bash scripts: pre tags with class &amp;quot;bash&amp;quot;*/&lt;br /&gt;
pre.bash {&lt;br /&gt;
 background-color: black;&lt;br /&gt;
 color: grey;&lt;br /&gt;
 font-size: 1.2em;&lt;br /&gt;
 font-family: Consolas,Monaco,Lucida Console,Liberation Mono,DejaVu Sans Mono,Bitstream Vera Sans Mono,Courier New, monospace;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*.mw-highlight pre {&lt;br /&gt;
	font-size: 90%;&lt;br /&gt;
}*/&lt;/div&gt;</summary>
		<author><name>Admlccwiki</name></author>
		
	</entry>
	<entry>
		<id>https://www.lcc.ufmg.br/wiki/index.php?title=MediaWiki:Common.css&amp;diff=37</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://www.lcc.ufmg.br/wiki/index.php?title=MediaWiki:Common.css&amp;diff=37"/>
		<updated>2019-06-04T13:09:35Z</updated>

		<summary type="html">&lt;p&gt;Admlccwiki: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/** o código CSS colocado aqui será aplicado a todos os temas */&lt;br /&gt;
/*Style for bash scripts: pre tags with class &amp;quot;bash&amp;quot;*/&lt;br /&gt;
pre.bash {&lt;br /&gt;
 background-color: black;&lt;br /&gt;
 color: grey;&lt;br /&gt;
 font-size: 16px;&lt;br /&gt;
 font-family: Consolas,Monaco,Lucida Console,Liberation Mono,DejaVu Sans Mono,Bitstream Vera Sans Mono,Courier New, monospace;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*.mw-highlight pre {&lt;br /&gt;
	font-size: 90%;&lt;br /&gt;
}*/&lt;/div&gt;</summary>
		<author><name>Admlccwiki</name></author>
		
	</entry>
	<entry>
		<id>https://www.lcc.ufmg.br/wiki/index.php?title=MediaWiki:Common.css&amp;diff=36</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://www.lcc.ufmg.br/wiki/index.php?title=MediaWiki:Common.css&amp;diff=36"/>
		<updated>2019-06-04T13:09:11Z</updated>

		<summary type="html">&lt;p&gt;Admlccwiki: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/** o código CSS colocado aqui será aplicado a todos os temas */&lt;br /&gt;
/*Style for bash scripts: pre tags with class &amp;quot;bash&amp;quot;*/&lt;br /&gt;
pre.bash {&lt;br /&gt;
 background-color: black;&lt;br /&gt;
 color: grey;&lt;br /&gt;
 font-size: 17px;&lt;br /&gt;
 font-family: Consolas,Monaco,Lucida Console,Liberation Mono,DejaVu Sans Mono,Bitstream Vera Sans Mono,Courier New, monospace;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*.mw-highlight pre {&lt;br /&gt;
	font-size: 90%;&lt;br /&gt;
}*/&lt;/div&gt;</summary>
		<author><name>Admlccwiki</name></author>
		
	</entry>
	<entry>
		<id>https://www.lcc.ufmg.br/wiki/index.php?title=MediaWiki:Common.css&amp;diff=35</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://www.lcc.ufmg.br/wiki/index.php?title=MediaWiki:Common.css&amp;diff=35"/>
		<updated>2019-06-04T13:08:47Z</updated>

		<summary type="html">&lt;p&gt;Admlccwiki: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/** o código CSS colocado aqui será aplicado a todos os temas */&lt;br /&gt;
/*Style for bash scripts: pre tags with class &amp;quot;bash&amp;quot;*/&lt;br /&gt;
pre.bash {&lt;br /&gt;
 background-color: black;&lt;br /&gt;
 color: grey;&lt;br /&gt;
 font-size: 15px;&lt;br /&gt;
 font-family: Consolas,Monaco,Lucida Console,Liberation Mono,DejaVu Sans Mono,Bitstream Vera Sans Mono,Courier New, monospace;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*.mw-highlight pre {&lt;br /&gt;
	font-size: 90%;&lt;br /&gt;
}*/&lt;/div&gt;</summary>
		<author><name>Admlccwiki</name></author>
		
	</entry>
	<entry>
		<id>https://www.lcc.ufmg.br/wiki/index.php?title=MediaWiki:Common.css&amp;diff=34</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://www.lcc.ufmg.br/wiki/index.php?title=MediaWiki:Common.css&amp;diff=34"/>
		<updated>2019-06-04T13:08:12Z</updated>

		<summary type="html">&lt;p&gt;Admlccwiki: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/** o código CSS colocado aqui será aplicado a todos os temas */&lt;br /&gt;
/*Style for bash scripts: pre tags with class &amp;quot;bash&amp;quot;*/&lt;br /&gt;
pre.bash {&lt;br /&gt;
 background-color: black;&lt;br /&gt;
 color: grey;&lt;br /&gt;
 font-size: large;&lt;br /&gt;
 font-family: Consolas,Monaco,Lucida Console,Liberation Mono,DejaVu Sans Mono,Bitstream Vera Sans Mono,Courier New, monospace;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*.mw-highlight pre {&lt;br /&gt;
	font-size: 90%;&lt;br /&gt;
}*/&lt;/div&gt;</summary>
		<author><name>Admlccwiki</name></author>
		
	</entry>
	<entry>
		<id>https://www.lcc.ufmg.br/wiki/index.php?title=MediaWiki:Common.css&amp;diff=33</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://www.lcc.ufmg.br/wiki/index.php?title=MediaWiki:Common.css&amp;diff=33"/>
		<updated>2019-06-04T13:07:44Z</updated>

		<summary type="html">&lt;p&gt;Admlccwiki: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/** o código CSS colocado aqui será aplicado a todos os temas */&lt;br /&gt;
/*Style for bash scripts: pre tags with class &amp;quot;bash&amp;quot;*/&lt;br /&gt;
pre.bash {&lt;br /&gt;
 background-color: black;&lt;br /&gt;
 color: grey;&lt;br /&gt;
  font-weight: bold;&lt;br /&gt;
 font-size: large;&lt;br /&gt;
 font-family: Consolas,Monaco,Lucida Console,Liberation Mono,DejaVu Sans Mono,Bitstream Vera Sans Mono,Courier New, monospace;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*.mw-highlight pre {&lt;br /&gt;
	font-size: 90%;&lt;br /&gt;
}*/&lt;/div&gt;</summary>
		<author><name>Admlccwiki</name></author>
		
	</entry>
	<entry>
		<id>https://www.lcc.ufmg.br/wiki/index.php?title=MediaWiki:Common.css&amp;diff=32</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://www.lcc.ufmg.br/wiki/index.php?title=MediaWiki:Common.css&amp;diff=32"/>
		<updated>2019-06-04T13:07:04Z</updated>

		<summary type="html">&lt;p&gt;Admlccwiki: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/** o código CSS colocado aqui será aplicado a todos os temas */&lt;br /&gt;
/*Style for bash scripts: pre tags with class &amp;quot;bash&amp;quot;*/&lt;br /&gt;
pre.bash {&lt;br /&gt;
 background-color: black;&lt;br /&gt;
 color: grey;&lt;br /&gt;
  font-weight: bold;&lt;br /&gt;
 font-size: 16px;&lt;br /&gt;
 font-family: Consolas,Monaco,Lucida Console,Liberation Mono,DejaVu Sans Mono,Bitstream Vera Sans Mono,Courier New, monospace;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*.mw-highlight pre {&lt;br /&gt;
	font-size: 90%;&lt;br /&gt;
}*/&lt;/div&gt;</summary>
		<author><name>Admlccwiki</name></author>
		
	</entry>
	<entry>
		<id>https://www.lcc.ufmg.br/wiki/index.php?title=MediaWiki:Common.css&amp;diff=31</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://www.lcc.ufmg.br/wiki/index.php?title=MediaWiki:Common.css&amp;diff=31"/>
		<updated>2019-06-04T13:06:16Z</updated>

		<summary type="html">&lt;p&gt;Admlccwiki: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/** o código CSS colocado aqui será aplicado a todos os temas */&lt;br /&gt;
/*Style for bash scripts: pre tags with class &amp;quot;bash&amp;quot;*/&lt;br /&gt;
pre.bash {&lt;br /&gt;
 background-color: black;&lt;br /&gt;
 color: grey;&lt;br /&gt;
 font-family: Consolas,Monaco,Lucida Console,Liberation Mono,DejaVu Sans Mono,Bitstream Vera Sans Mono,Courier New, monospace;&lt;br /&gt;
 font-weight: bold;&lt;br /&gt;
 font-size: 16px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*.mw-highlight pre {&lt;br /&gt;
	font-size: 90%;&lt;br /&gt;
}*/&lt;/div&gt;</summary>
		<author><name>Admlccwiki</name></author>
		
	</entry>
	<entry>
		<id>https://www.lcc.ufmg.br/wiki/index.php?title=MediaWiki:Common.css&amp;diff=30</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://www.lcc.ufmg.br/wiki/index.php?title=MediaWiki:Common.css&amp;diff=30"/>
		<updated>2019-06-04T13:05:47Z</updated>

		<summary type="html">&lt;p&gt;Admlccwiki: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/** o código CSS colocado aqui será aplicado a todos os temas */&lt;br /&gt;
/*Style for bash scripts: pre tags with class &amp;quot;bash&amp;quot;*/&lt;br /&gt;
pre.bash {&lt;br /&gt;
 background-color: black;&lt;br /&gt;
 color: grey;&lt;br /&gt;
 font-family: Consolas,Monaco,Lucida Console,Liberation Mono,DejaVu Sans Mono,Bitstream Vera Sans Mono,Courier New, monospace;&lt;br /&gt;
 font-weight: bold;&lt;br /&gt;
 font-size: large;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*.mw-highlight pre {&lt;br /&gt;
	font-size: 90%;&lt;br /&gt;
}*/&lt;/div&gt;</summary>
		<author><name>Admlccwiki</name></author>
		
	</entry>
	<entry>
		<id>https://www.lcc.ufmg.br/wiki/index.php?title=MediaWiki:Common.css&amp;diff=29</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://www.lcc.ufmg.br/wiki/index.php?title=MediaWiki:Common.css&amp;diff=29"/>
		<updated>2019-06-04T13:04:46Z</updated>

		<summary type="html">&lt;p&gt;Admlccwiki: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/** o código CSS colocado aqui será aplicado a todos os temas */&lt;br /&gt;
/*Style for bash scripts: pre tags with class &amp;quot;bash&amp;quot;*/&lt;br /&gt;
pre.bash {&lt;br /&gt;
 background-color: black;&lt;br /&gt;
 color: grey;&lt;br /&gt;
 font-family: Consolas,Monaco,Lucida Console,Liberation Mono,DejaVu Sans Mono,Bitstream Vera Sans Mono,Courier New, monospace;&lt;br /&gt;
 font-weight:bold;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*.mw-highlight pre {&lt;br /&gt;
	font-size: 90%;&lt;br /&gt;
}*/&lt;/div&gt;</summary>
		<author><name>Admlccwiki</name></author>
		
	</entry>
	<entry>
		<id>https://www.lcc.ufmg.br/wiki/index.php?title=MediaWiki:Common.css&amp;diff=28</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://www.lcc.ufmg.br/wiki/index.php?title=MediaWiki:Common.css&amp;diff=28"/>
		<updated>2019-06-04T13:03:26Z</updated>

		<summary type="html">&lt;p&gt;Admlccwiki: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/** o código CSS colocado aqui será aplicado a todos os temas */&lt;br /&gt;
/*Style for bash scripts: pre tags with class &amp;quot;bash&amp;quot;*/&lt;br /&gt;
pre.bash {&lt;br /&gt;
 background-color: black;&lt;br /&gt;
 color: grey;&lt;br /&gt;
 font-family: Consolas,Monaco,Lucida Console,Liberation Mono,DejaVu Sans Mono,Bitstream Vera Sans Mono,Courier New, monospace;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*.mw-highlight pre {&lt;br /&gt;
	font-size: 90%;&lt;br /&gt;
}*/&lt;/div&gt;</summary>
		<author><name>Admlccwiki</name></author>
		
	</entry>
	<entry>
		<id>https://www.lcc.ufmg.br/wiki/index.php?title=MediaWiki:Common.css&amp;diff=27</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://www.lcc.ufmg.br/wiki/index.php?title=MediaWiki:Common.css&amp;diff=27"/>
		<updated>2019-06-04T13:02:33Z</updated>

		<summary type="html">&lt;p&gt;Admlccwiki: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/** o código CSS colocado aqui será aplicado a todos os temas */&lt;br /&gt;
/*Style for bash scripts: pre tags with class &amp;quot;bash&amp;quot;*/&lt;br /&gt;
pre.bash {&lt;br /&gt;
 background-color: black;&lt;br /&gt;
 color: grey;&lt;br /&gt;
 font-family: Consolas,Monaco,Lucida Console,Liberation Mono,DejaVu Sans Mono,Bitstream Vera Sans Mono,Courier New, monospace;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight pre {&lt;br /&gt;
	font-size: 90%;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Admlccwiki</name></author>
		
	</entry>
</feed>