Se você tiver os requisitos de sistemas corretos, é possível transferir
algum processamento de aplicativo para uma graphics processing unit (GPU)
de propósito geral. Ativando uma propriedade de sistema, cargas de trabalho adequadas são
movidas da CPU para a GPU para processamento. Também é possível configurar uma opção na linha de comandos que
faz com que o compilador Just-In-Time (JIT) transfira determinadas tarefas de processamento para a GPU.
Sobre essa tarefa
Algumas tarefas de processamento de aplicativo podem se beneficiar do processamento
de dados em uma GPU em vez da CPU, desde que a carga de trabalho seja de um tamanho
suficiente para justificar a movimentação dos dados. Se puder ser determinado exatamente quando
um GPU pode ser usada, é possível desenvolver aplicativos que usam as interfaces de programação
de aplicativos disponíveis para transferir tarefas específicas. Como alternativa,
é possível deixar que a máquina virtual (VM) tomar essa decisão automaticamente
configurando uma propriedade de sistema na linha de comandos. O JIT também pode transferir determinadas
tarefas de processamento com base nas heurísticas de desempenho.
Procedimento
- Linux® apenas: configure o
LD_LIBRARY_PATH para apontar para a biblioteca CUDA. Por exemplo, export LD_LIBRARY_PATH=<CUDA_LIBRARY_PATH>:$LD_LIBRARY_PATH, em que a variável <CUDA_LIBRARY_PATH> é o caminho completo para a biblioteca CUDA. Para o CUDA 7.5, a variável <CUDA_LIBRARY_PATH> é
/usr/local/cuda-7.5/lib64, que supõe que o CUDA está instalado no diretório padrão.
Observação: se estiver usando o suporte a GPU baseado no compilador Just-In-Time (JIT), também deverá incluir um caminho para a biblioteca NVIDIA Virtual Machine (NVVM). Por exemplo, a variável
<CUDA_LIBRARY_PATH> é
/usr/local/cuda-7.5/lib64:<NVVM_LIBRARY_PATH>.
- Em sistemas Linux x86-64, a variável
<NVVM_LIBRARY_PATH> é
/usr/local/cuda-7.5/nvvm/lib64.
- Nos sistemas IBM® Power ® 8, a variável
<NVVM_LIBRARY_PATH> é /usr/local/cuda-7.5/nvvm/lib.
Esses caminhos consideram que a biblioteca NVVM está instalada
no diretório padrão.
- Somente Windows: configure o
PATH para incluir a biblioteca CUDA.. Abra o ícone Sistema no Painel de Controle.. Clique em Configurações avançadas do sistemae, em seguida, em Variáveis de ambiente Selecione a variável PATH e clique em Editar. Anexe a seguinte sequência ao campo Valor da variável:
<CUDA_LIBRARY_PATH>, em que a variável <CUDA_LIBRARY_PATH> é o
caminho completo para a biblioteca de CUDA. Assegure-se de que diversos valores PATH sejam separados por um ;.A variável <CUDA_LIBRARY_PATH> é C:\Program Files\NVIDIA
GPU Computing Toolkit\CUDA\v7.5\bin, que assume que o CUDA está instalado no diretório padrão.
Também é possível configurar essa variável de ambiente diretamente na linha de comandos com o seguinte
comando set PATH=<CUDA_LIBRARY_PATH>;%PATH%
Observação: se estiver usando o suporte a GPU baseado no compilador Just-In-Time (JIT), também deverá incluir caminhos para a biblioteca NVIDIA Virtual Machine (NVVM) e para a NVDIA Management Library (NVML). Por exemplo, a variável <CUDA_LIBRARY_PATH> é C:\Program Files\NVIDIA GPU
Computing Toolkit\CUDA\v7.5\bin;<NVVM_LIBRARY_PATH>;<NVML_LIBRARY_PATH>. Se a biblioteca
NVVM estiver instalada no diretório padrão, a variável <NVVM_LIBRARY_PATH> será
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v7.5\nvvm\bin. É possível localizar a
biblioteca NVML no diretório de drivers NVIDIA. O local padrão desse diretório é
C:\Program Files\NVIDIA Corporation\NVSMI.
- Se você desejar que a VM determine quando mover cargas de trabalho adequadas
para a GPU, siga estas etapas:
- Configure a propriedade de sistema -Dcom.ibm.gpu.enable na linha de comandos quando executar seu aplicativo
- Opcional: se você tiver mais de uma GPU instalada em seu sistema e desejar que seu aplicativo tenha como destino uma GPU específica, será possível configurar a variável de ambiente CUDA CUDA_VISIBLE_DEVICES.
Por exemplo, configurar CUDA_VISIBLE_DEVICES=1 faz com que
somente o identificador de dispositivo NVIDIA 1 fique visível para o aplicativo.
- Para ativar o compilador JIT para transferir o processamento para uma GPU, configure a opção a seguir ao iniciar o aplicativo: -Xjit:enableGPU.
Resultados
Se a propriedade de sistema -Dcom.ibm.gpu.enable
estiver configurada corretamente, as tarefas de processamento especificadas
com a propriedade de sistema serão transferidas automaticamente para a GPU quando
elas atenderem a um tamanho mínimo de carga de trabalho.
Se
você tiver configurado a opção -Xjit:enableGPU, o
JIT usa as heurísticas de desempenho para determinar quais cargas de trabalho enviar
para a GPU para processamento.
Se você tiver problemas, consulte Determinação de problema de GPU (Linux, somente Windows)..