Ferramentas do usuário

Ferramentas do site


faq:cuda

Diferenças

Aqui você vê as diferenças entre duas revisões dessa página.

Link para esta página de comparações

Próxima revisão
Revisão anterior
faq:cuda [2019/03/22 09:57]
127.0.0.1 edição externa
faq:cuda [2021/02/25 17:11] (atual)
prppedro Tonico & Tinoco
Linha 2: Linha 2:
  
 ===== Qual Máquina tem o CUDA disponível?​ ===== ===== Qual Máquina tem o CUDA disponível?​ =====
 +Há duas máquinas capazes de CUDA na Rede Linux: ''​tonico''​ e ''​tinoco''​. ​
 +Cada uma está equipada com uma Nvidia Tesla K20c SM35. 
 +Para acessá-las,​ basta rodar ''​ssh tonico''​ ou ''​ssh tinoco''​ a partir da Neozil. ​
  
-única ​máquina ​que tem placas de vídeo Nvidia com capacidade CUDA é a __dota__. Ela está equipada com duas Nvidia Tesla K20c SM35.+A máquina ​''​tonico'' ​é também o SSH alternativo e, como tal, pode ser acessada na porta 2222
    
- 
 ===== Qual a versão do CUDA Toolkit disponível?​ ===== ===== Qual a versão do CUDA Toolkit disponível?​ =====
 +A versão atual é o CUDA Toolkit 10.1.
  
-A versão atual é CUDA Toolkit 9.1 planejamos mantê-lo atualizado sempre que possível.+===== Caso nvcc não funcione ===== 
 +Para poder usar o ''​nvcc'' ​outros comandos do CUDA toolkit, é necessário  
 +adicionar a pasta /​usr/​local/​cuda/​bin para a sua variável de ambiente PATH.
  
 +<code bash> ​
 +PATH=$PATH:/​usr/​local/​cuda/​bin"​
 +echo "​export PATH=$PATH:/​usr/​local/​cuda/​bin"​ >> ~/​.bashrc ​
 +</​code>​
  
-===== Como faço para usar o CUDA? =====+===== Compilando e Rodando ​===== 
 +O compilador do CUDA aceita códigos C e C++, além do próprio CUDA. Para  
 +compilar um arquivo de código, basta chamar o **nvcc** como se fosse  
 +qualquer outro compilador de C.
  
-==== 0Conectar ==== +<code bash>  
-Para poder usar qualquer parte do CUDA (compilar e executar comandos) é necessário que você faça ''​ssh''​ para o servidor __dota__, de __dentro da rede linux__ (Se ainda não está __dentro__ da rede veja [[FAQ:​acesso|aqui]] como acessá-la externamente),​ através do comando:+nvcc codigo.cu  
 +</​code>​
  
-<code bash> ssh dota</​code>​+Para rodar o executável gerado também é como qualquer outro. ​
  
-Uma vez logado na dota, podemos iniciar a preparação. ​Não se preocupe, esse passo só é necessário na primeira vez+<note important>​ 
 +Não crie seu próprio ''​nvidia-cuda-mps-server''​. O  
 +''​nvidia-cuda-mps-server'' ​é um processo gerenciador  
 +das gpus que é executado pela raíz e não atrapalha a  
 +execução do seu processo 
 +</​note>​
  
-==== 1. Preparação caso o nvcc não funcione ​==== +===== Comando Úteis ​=====
- +
-Para poder usar o nvcc e outros comandos do CUDA toolkit, é necessário adicionar a pasta /​usr/​local/​cuda/​bin para a sua variável de ambiente PATH. +
-O comando abaixo deve funcionar se o seu shell for o bash(padrão na rede linux): +
- +
-<code bash> echo "​export PATH=\$PATH:/​usr/​local/​cuda/​bin"​ >> ~/.bashrc </​code>​ +
- +
-==== 2. Exemplos ==== +
- +
-A Nvidia provê vários exemplos pequenos, mas muito abrangentes,​ de código CUDA. Eles estão localizados na pasta ''/​nvidia/​NVIDIA_CUDA-X.X_Samples'',​ onde o X.X é a versão mais recente do CUDA Toolkit. Para poder compilar, modificar ou executar esses códigos, você deve copiá-los para alguma pasta de sua preferência dentro de sua //home//: +
- +
-<code bash> cp -r /​nvidia/​NVIDIA_CUDA-9.1_Samples ~/​cuda_samples</​code>​  +
- +
-==== 3. Compilando e Rodando ==== +
- +
-O compilador do CUDA aceita códigos C e C++, além do próprio CUDA. Para compilar um arquivo de código, basta chamar o **nvcc** como se fosse qualquer outro compilador de C. +
- +
-<code bash> nvcc codigo.cu </​code>​ +
- +
-Para rodar o executável gerado também é como qualquer outro. __IMPORTANTE__ Não crie seu próprio nvidia-cuda-mps-server,​ já há um processo desses para gerenciar todos os executáveis rodados pelos usuários. +
- +
-==== -------IMPORTANTE!------- ==== +
- +
-Como o servidor possui duas GPUS, é necessário informar em qual delas seu ''​kernel''​ irá rodar. Para isso basta antes de chamar o ''​kernel''​ colocar a linha: +
- +
-<code c> cudaSetDevice(id);​ </​code>​ +
- +
-Onde __id__ é 0 ou 1 dependendo de qual GPU é para ser utilizada. É possível também executar, usando esse método, programas que rodam em várias GPUs, porém eles requerem maior otimização para compensar o //​overhead//​ da comunicação inter-GPUs. +
-Lembrando que mais de um programa pode rodar em cada GPU, mesmo sendo de outro usuário. +
- +
-==== 4. Comando Úteis ====+
  
 ^ Comando ​        ^ Descrição^ ^ Comando ​        ^ Descrição^
 | ''​nvcc'' ​       | Compilador de código CUDA| | ''​nvcc'' ​       | Compilador de código CUDA|
-| ''​cudatop'' ​    ​| Exibe informações de proessos dos usuários e uso das GPUS|+| ''​nvtop'' ​      ​| Exibe informações de proessos dos usuários e uso das GPUS|
 | ''​nvidia-smi'' ​ | Display de informações gerais das gpus| | ''​nvidia-smi'' ​ | Display de informações gerais das gpus|
  
-O comando ''​nvidia-smi''​ é na verdade uma variedade de comandos juntos num comando só (vide ''​nvidia-smi -h''​) . Com ele é possível obter informações como id, uso e memória livre das GPUs e quais processos estão rodando nelas (grealmente os processos serão gerenciados pelo ''​mps-server''​ e não aparecerão individualmente),​ o que facilita na hora de escolher uma GPU mais livre para rodar o seu programa(livre em termos de memória). +O comando ''​nvidia-smi''​ é na verdade uma variedade de comandos ​ 
- +juntos num comando só (vide ''​nvidia-smi -h''​) . Com ele é possível ​ 
-=== Infos === +obter informações como id, uso e memória livre das GPUs e quais  
- +processos estão rodando nelas (grealmente os processos serão ​ 
-O ''​nvidia-cuda-mps-server''​ é um processo gerenciador das gpus, ele é rodado pelo root e não atrapalha a execução do seu processo.  +gerenciados pelo ''​mps-server''​ e não aparecerão individualmente), ​ 
- +o que facilita na hora de escolher uma GPU mais livre para rodar o  
-==== 5. Uso ==== +seu programa.
- +
-O fim do servidor de GPUs da Rede Linux é o uso por parte dos alunos para fins acadêmicos como EPs, projetos, testes, experimentos,​ etc.. Assim, o uso das GPUs para fins não acadêmicos,​ como __MINERAÇÃO__ de criptomoedas,​ são __EXPRESSAMENTE PROIBIDOS__+
  
 +===== Uso =====
 +Eu vou pessoalmente bater em quem usar isso pra minerar bitcoin.
 + --- //​[[jose.alvim@usp.br|Jose Goudet Alvim]] 2020/05/02 07:39//
faq/cuda.1553259447.txt.gz · Última modificação: 2019/10/26 19:55 (edição externa)