Aqui você vê as diferenças entre duas revisões dessa página.
Ambos lados da revisão anterior Revisão anterior Próxima revisão | Revisão anterior | ||
faq:cuda [2020/05/02 07:33] josealvim |
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? ===== | ||
- | A única máquina que tem placas de vídeo Nvidia com capacidade CUDA é a ''neozil''. | + | Há duas máquinas capazes de CUDA na Rede Linux: ''tonico'' e ''tinoco''. |
- | Ela está equipada com duas Nvidia Tesla K20c SM35. | + | Cada uma está equipada com uma Nvidia Tesla K20c SM35. |
+ | Para acessá-las, basta rodar ''ssh tonico'' ou ''ssh tinoco'' a partir da Neozil. | ||
+ | |||
+ | 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 9.1. | + | A versão atual é o CUDA Toolkit 10.1. |
- | ===== Como faço para usar o CUDA? ===== | + | ===== Caso o nvcc não funcione ===== |
- | + | ||
- | ==== Caso o nvcc não funcione ==== | + | |
Para poder usar o ''nvcc'' e outros comandos do CUDA toolkit, é necessário | 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. | adicionar a pasta /usr/local/cuda/bin para a sua variável de ambiente PATH. | ||
Linha 19: | Linha 20: | ||
</code> | </code> | ||
- | ==== Exemplos ==== | + | ===== Compilando e Rodando ===== |
- | 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'', | + | |
- | 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> | + | |
- | + | ||
- | ==== Compilando e Rodando ==== | + | |
O compilador do CUDA aceita códigos C e C++, além do próprio CUDA. Para | 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 | compilar um arquivo de código, basta chamar o **nvcc** como se fosse | ||
Linha 41: | Linha 32: | ||
<note important> | <note important> | ||
- | Não crie seu próprio nvidia-cuda-mps-server, já há um | + | Não crie seu próprio ''nvidia-cuda-mps-server''. O |
- | desses para gerenciar todos os executáveis rodados | + | ''nvidia-cuda-mps-server'' é um processo gerenciador |
- | pelos usuários. | + | das gpus que é executado pela raíz e não atrapalha a |
+ | execução do seu processo. | ||
</note> | </note> | ||
- | ==== 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: | + | ===== Comando Úteis ===== |
- | + | ||
- | <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. |
- | + | ||
- | A finalidade do servidor de GPUs da Rede Linux é o uso para fins acadêmicos como EPs, projetos, testes, experimentos, entre outros. **O uso das GPUs para fins não acadêmicos é expressamente proibido**. | + | |
- | Em particular, o uso de qualquer computador da Rede Linux para **mineração de criptomoedas é proibido**. Essa atividade causa prejuízo acadêmico, pois inutiliza aquele recurso para os outros estudantes, e causa prejuízo financeiro, pois é uma atividade de alto custo de energia. A violação dessa regra pode resultar em banimento permanente da Rede Linux. Como isso pode configurar uso indevido de patrimônio público, medidas em outras esferas também podem ser aplicadas. | + | ===== Uso ===== |
+ | Eu vou pessoalmente bater em quem usar isso pra minerar bitcoin. | ||
+ | --- //[[jose.alvim@usp.br|Jose Goudet Alvim]] 2020/05/02 07:39// |