Ativando o processamento de aplicativos em uma unidade de processamento de gráficos (Linux, somente Windows)

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.

Antes de começar

Verifique se o sistema atende aos requisitos de hardware e software necessários. Para obter mais informações, consulte Requisitos do sistema GPU (Linux, apenas Windows).

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

  1. 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.
  2. 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.
  3. Se você desejar que a VM determine quando mover cargas de trabalho adequadas para a GPU, siga estas etapas:
    1. Configure a propriedade de sistema -Dcom.ibm.gpu.enable na linha de comandos quando executar seu aplicativo
      Essa propriedade pode ser configurada para funções de processamento específico, como sort. Para obter mais informações, consulte -Dcom.ibm.gpu.enable (Linux, apenas Windows)
    2. 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 obter mais informações sobre essa variável, consulte Variáveis de ambiente CUDA no site NVIDIA.
  4. 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)..