Activation du traitement d'application sur une unité de traitement graphique (Linux, Windows uniquement)

Si la configuration système est appropriée, vous pouvez décharger certaines tâches de traitement des applications sur une unité de traitement graphique générale. En activant une propriété système, les charges de travail appropriées sont déplacées de l'unité centrale vers l'unité de traitement graphique pour traitement. Vous pouvez également définir sur la ligne de commande une option qui indique au compilateur JIT (Just-In-Time) de décharger certaines tâches de traitement sur l'unité de traitement graphique.

Avant de commencer

Vérifiez que votre système possède les configurations matérielle et logicielle requises. Pour plus d'informations, voir GPU system requirements (Linux, Windows uniquement).

A propos de cette tâche

Certaines tâches de traitement des applications peuvent bénéficier du traitement des données sur une unité de traitement graphique au lieu de l'unité centrale, à condition que la charge de travail soit de taille suffisante pour justifier le déplacement des données. Si vous pouvez déterminer exactement quand une unité de traitement graphique peut être utilisée, vous pouvez développer des applications qui utilisent les API disponibles pour décharger des tâches spécifiques. Vous pouvez également laisser la machine virtuelle prendre cette décision automatiquement en définissant une propriété système sur la ligne de commande. Le compilateur JIT peut également décharger certaines tâches de traitement en fonction de l'heuristique des performances.

Procédure

  1. Linux® uniquement: définissez LD_LIBRARY_PATH pour qu'il pointe vers la bibliothèque CUDA. Par exemple, export LD_LIBRARY_PATH=<CUDA_LIBRARY_PATH>:$LD_LIBRARY_PATH, où la variable <CUDA_LIBRARY_PATH> est le chemin d'accès complet à la bibliothèque CUDA.
    Pour CUDA 7.5, la variable <CUDA_LIBRARY_PATH> est /usr/local/cuda-7.5/lib64, qui suppose que CUDA est installé dans le répertoire par défaut.
    Remarque : si vous utilisez la prise en charge des GPU basée sur le compilateur JIT (Just-In-Time), vous devez également inclure un chemin d'accès à la bibliothèque de machines virtuelles de réseau ( NVIDIA, NVVM). Par exemple, la variable <CUDA_LIBRARY_PATH> est /usr/local/cuda-7.5/lib64:<NVVM_LIBRARY_PATH>.
    • Sur les systèmes x86-64 Linux, la variable <NVVM_LIBRARY_PATH> contient /usr/local/cuda-7.5/nvvm/lib64.
    • Sur les systèmes IBM® Power 8, la variable <NVVM_LIBRARY_PATH> est /usr/local/cuda-7.5/nvvm/lib.
    Ces chemins supposent que la bibliothèque NVVM est installée dans le répertoire par défaut.
  2. Windows uniquement: définissez PATH pour inclure la bibliothèque CUDA. Ouvrez l'icône Système dans le Panneau de configuration. Cliquez sur Paramètres système avancés, puis sur Variables d'environnement. Sélectionnez la variable PATH et cliquez sur Editer. Ajoutez la chaîne suivante à la zone Valeur de variable : <CUDA_LIBRARY_PATH>, où la variable <CUDA_LIBRARY_PATH> est le chemin d'accès complet à la bibliothèque CUDA. Assurez-vous que plusieurs valeurs PATH sont séparées par un ;.
    La variable <CUDA_LIBRARY_PATH> est C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v7.5\bin, qui suppose que CUDA est installé dans le répertoire par défaut.
    Vous pouvez également définir cette variable d'environnement directement sur la ligne de commande à l'aide de la commande suivante : set PATH=<CUDA_LIBRARY_PATH>;%PATH%
    Remarque : si vous utilisez la prise en charge des GPU basée sur le compilateur Just-In-Time (JIT), vous devez également inclure les chemins d'accès à la bibliothèque de la machine virtuelle de l' NVIDIA (NVVM) et à la bibliothèque de gestion de NVDIA (NVML). Par exemple, la variable <CUDA_LIBRARY_PATH> est C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v7.5\bin;<NVVM_LIBRARY_PATH>;<NVML_LIBRARY_PATH>. Si la bibliothèque NVVM est installée dans le répertoire par défaut, la variable <NVVM_LIBRARY_PATH> contient C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v7.5\nvvm\bin. La bibliothèque NVML se trouve dans le répertoire des pilotes NVIDIA. Ce répertoire se trouve par défaut à l'emplacement C:\Program Files\NVIDIA Corporation\NVSMI.
  3. Si vous souhaitez que la machine virtuelle détermine à quel moment les charges de travail appropriées doivent être déplacées vers l'unité de traitement graphique, procédez comme suit :
    1. Définissez la propriété système -Dcom.ibm.gpu.enable sur la ligne de commande lorsque vous exécutez votre application.
      Cette propriété peut être définie pour des fonctions de traitement spécifiques, telles que sort. Pour plus d'informations, voir -Dcom.ibm.gpu.enable (Linux, Windows uniquement).
    2. Facultatif: si plusieurs processeurs graphiques sont installés sur votre système et que vous souhaitez que votre application cible un processeur graphique spécifique, vous pouvez définir la variable d'environnement CUDA CUDA_VISIBLE_DEVICES.
      Par exemple, si vous définissez CUDA_VISIBLE_DEVICES=1, seul l'identificateur d'unité NVIDIA 1 est visible pour l'application.
      Pour plus d'informations sur cette variable, consultez la page Variables d'environnement CUDA sur le site Web NVIDIA.
  4. Pour permettre au compilateur JIT de décharger le traitement sur un processeur graphique, définissez l'option suivante lorsque vous démarrez votre application: -Xjit:enableGPU.

Résultats

Si la propriété système -Dcom.ibm.gpu.enable est définie correctement, les tâches de traitement qui sont spécifiées avec la propriété système sont automatiquement déchargées vers le GPU lorsqu'elles rencontrent une taille de charge de travail minimale.

Si vous avez défini l'option -Xjit:enableGPU, JIT utilise des heuristiques de performances pour déterminer les charges de travail à envoyer au GPU pour traitement.

Si vous rencontrez des problèmes, voir Identification des problèmes GPU (Linux, Windows uniquement).