Exigences
Pour cet exercice, vous aurez besoin d'une machine physique avec Linux et un GPU basé sur NVIDIA, soit lancer une instance basée sur GPU sur Amazon Web Services. Soit devrait fonctionner bien, mais si vous choisissez d'utiliser une machine physique, vous devrez vous assurer que les pilotes propriétaires de Nvidia sont installés, voir les instructions: https: // linuxhint.com / install-nvidia-pilote-linux
Vous aurez également besoin de la boîte à outils CUDA installée. Cet exemple utilise Ubuntu 16.04 LTS spécifiquement, mais il existe des téléchargements disponibles pour la plupart des principales distributions Linux à l'URL suivante: https: // développeur.nvidia.com / Cuda-Downloads
Je préfère le .Téléchargement basé sur Deb, et ces exemples supposeront que vous avez choisi cette route. Le fichier que vous téléchargez est un .package deb mais n'a pas de .extension deb, alors le renommant pour avoir un .Deb à la fin son utile. Ensuite, vous l'installez avec:
Sudo dpkg -i package-name.deb
Si vous êtes invité à installer une clé GPG, veuillez suivre les instructions données pour le faire.
Vous devrez maintenant installer le package CUDA lui-même. Pour ce faire, courez:
Mise à jour Sudo apt-get
sudo apt-get install cuda -y
Cette partie peut prendre un certain temps, donc vous voudrez peut-être prendre une tasse de café. Une fois terminé, je recommande de redémarrer pour s'assurer que tous les modules sont correctement rechargés.
Ensuite, vous aurez besoin de la distribution Anaconda Python. Vous pouvez le télécharger ici: https: // www.anaconda.com / download / # linux
Prenez la version 64 bits et installez-la comme ceci:
sh anaconda *.shot(L'étoile dans la commande ci-dessus garantira que la commande est exécutée quelle que soit la version mineure)
L'emplacement d'installation par défaut devrait être bien, et dans ce tutoriel, nous l'utiliserons. Par défaut, il s'installe sur ~ / anaconda3
À la fin de l'installation, vous serez invité à décider si vous souhaitez ajouter Anaconda à votre chemin. Réponse oui ici pour faciliter l'exécution des commandes nécessaires. Pour vous assurer que ce changement a lieu, une fois l'installateur terminé complètement, déconnectez-vous puis reconnectez-vous à votre compte.
Plus d'informations sur l'installation d'Anaconda: https: // linuxhint.com / install-anaconda-python-on-ubuntu /
Enfin, nous devrons installer Numba. Numba utilise le compilateur LLVM pour compiler Python sur le code machine. Cela améliore non seulement les performances du code Python ordinaire, mais fournit également la colle nécessaire pour envoyer des instructions au GPU sous forme binaire. Pour ce faire, courez:
Conda Install Numba
Limitations et avantages de la programmation GPU
Il est tentant de penser que nous pouvons convertir n'importe quel programme Python en un programme basé sur GPU, accélérant considérablement ses performances. Cependant, le GPU sur une carte vidéo fonctionne considérablement différemment d'un CPU standard dans un ordinateur.
Les processeurs gèrent de nombreuses entrées et sorties différentes et ont un large assortiment d'instructions pour traiter ces situations. Ils sont également responsables de l'accès à la mémoire, du traitement du bus système, de la gestion des anneaux de protection, de la segmentation et de la fonctionnalité d'entrée / sortie. Ce sont des multitastes extrêmes sans objectif spécifique.
Les GPU en revanche sont conçus pour traiter des fonctions simples à une vitesse aveuglante. Pour ce faire, ils s'attendent à un état plus uniforme de saisie et de sortie. En se spécialisant dans les fonctions scalaires. Une fonction scalaire prend une ou plusieurs entrées mais ne renvoie qu'une seule sortie. Ces valeurs doivent être des types prédéfinis par Numpy.
Exemple de code
Dans cet exemple, nous créerons une fonction simple qui prend une liste de valeurs, les additionne et renvoie la somme. Pour démontrer la puissance du GPU, nous exécuterons l'une de ces fonctions sur le CPU et une sur le GPU et afficherons le temps. Le code documenté est ci-dessous:
Importer Numpy comme NPPour exécuter l'exemple, tapez:
Exemple de GPU Python.py
Remarque: Si vous rencontrez des problèmes lorsque vous exécutez votre programme, essayez d'utiliser «Conda Installer Accelerate».
Comme vous pouvez le voir, la version CPU fonctionne considérablement plus lente.
Sinon, alors vos itérations sont trop petites. Ajustez les num_elements à une valeur plus grande (sur la mienne, la marque d'équilibre semblait être d'environ 100 millions). En effet. Une fois que vous l'avez soulevé au-dessus du seuil de votre machine, vous remarquerez des améliorations de performances substantielles de la version GPU sur la version CPU.
Conclusion
J'espère que vous avez apprécié notre introduction de base dans la programmation GPU avec Python. Bien que l'exemple ci-dessus soit trivial, il fournit le cadre dont vous avez besoin pour prendre vos idées davantage en utilisant la puissance de votre GPU.