De la construction de l'environnement PyCUDA à la programmation GPGPU sur Mac (MacOS 10.12 Sierra)

introduction

Personne cible

Voici les étapes pour installer PyCUDA sur votre Mac. Ceux qui relèvent de ce qui suit peuvent être ciblés. --Utilisez Python 3.x

Environnement de développement

Les spécifications du Mac utilisé sont les suivantes.

Construction de l'environnement PyCUDA

Xcode7 Installation Au moment de la rédaction de cet article, Xcode 7.3.1 était le dernier de Xcode 7. À partir de Téléchargements pour Apple Developer , sélectionnez ** Voir plus de téléchargements ** et saisissez "Xcode 7" dans le champ de recherche. Téléchargez ** Xcode 7.3.1 ** et ** Outils de ligne de commande pour Xcode 7.3.1 **.

Ouvrez le fichier dmg téléchargé et installez Xcode 7.3.1. Ensuite, installez également les outils de ligne de commande pour Xcode 7.3.1.

Ensuite, ouvrez dmg des outils de ligne de commande et installez.

Si Xcode 8 est déjà installé

Si vous avez déjà installé Xcode8, copiez Xcode7 en tant que Xcode7.app dans / Applications. Pour activer Xcode 7 $ sudo mv /Applications/Xcode.app /Applications/Xcode8.app $ sudo mv /Applications/Xcode7.app /Applications/Xcode.app $ sudo xcode-select -s /Applications/Xcode.app

Inversement, pour activer Xcode 8 $ sudo mv /Applications/Xcode.app /Applications/Xcode7.app $ sudo mv /Applications/Xcode8.app /Applications/Xcode.app $ sudo xcode-select -s /Applications/Xcode.app

*** Activez Xcode 7 pour utiliser CUDA / PyCUDA. CUDA8 ne prend pas en charge Xcode8. *** ***

CUDA8 Installation CUDA est un environnement de développement intégré pour les bibliothèques GPGPU, les compilations, etc. fourni par NVIDIA. En bref, c'est un groupe d'outils de calcul parallèle utilisant le GPU fabriqué par NVIDIA. Installez CUDA8 car PyCUDA nécessite CUDA. CUDA8 Installation Sélectionnez le système d'exploitation et la version sur CUDA Toolkit Download | NVIDIA Developer et téléchargez le package. Installez comme indiqué par l'installateur.

Après l'installation, sélectionnez ** CUDA ** dans les ** Préférences système ** de MacOS et cliquez sur ** Installer la mise à jour CUDA ** pour mettre à jour CUDA.

cuDNN Installation Téléchargez cudnn depuis NVIDIA cuDNN | NVIDIA Developer . Vous devrez peut-être vous inscrire en tant que membre.

Décompressez le fichier cudnn-8.0-osx-x64-v6.0.tgz téléchargé.

$ tar zxvf cudnn-8.0-osx-x64-v6.0.tgz



 Déployez le fichier sur votre système.
```$ sudo mv <Décompressez le dossier>/lib/libcudnn* /usr/local/cuda/lib```

#### **`$ sudo mv <Décompressez le dossier>/include/cudnn.h /usr/local/cuda/include`**

Définissez ** DYLD_LIBRARY_PATH ** et ** PATH ** Ajoutez-le à .bashrc.

export DYLD_LIBRARY_PATH=/usr/local/cuda/lib:/Developer/NVIDIA/CUDA-8.0/lib:$DYLD_LIBRARY_PATH



#### **`$PATH`**
```export path=/developer/nvidia/cuda-8.0/bin


 Reflétez les changements.

#### **`$ source .bashrc`**
```bashrc


### Exemple de programme CUDA

 Vous pouvez vérifier l'installation avec l'exemple de programme. Cependant, la compilation prend beaucoup de temps, vous pouvez donc l'ignorer.


#### **`$ /Developer/NVIDIA/CUDA-8.0/bin/cuda-install-samples-8.0.sh ~/Downloads`**

$ cd ~/downloads $ make -c 1_utilities/devicequery $ 1_utilities/devicequery/devicequery $ make -c 5_simulations/smokeparticles $ 5_simulations/smokeparticles/smokeparticles

Si vous obtenez une erreur de compilation, vérifiez la commutation Xcode, les paramètres DYLD_LIBRARY_PATH et PATH et ** Préférences système ** ** Paramètres d'économie d'énergie ** (** Arrêt automatique des graphiques **).

Homebrew Installation Si vous n'avez pas encore installé Homebrew $ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)”

Si vous n'avez pas encore installé Python3 $ brew install python3

Confirmation Python3 $ python3 --version

pip Installation Si vous n'avez pas encore installé pip $ curl -kL https://raw.github.com/pypa/pip/master/contrib/get-pip.p

Numpy Installation Si vous n'avez pas encore installé numpy $ pip3 install numpy $ pip3 install scipy

*** Note) Même si Numpy est installé sur Python 2.x, il doit être installé pour Python 3.x. *** ***

confirmation numpy $ python3 >>> import numpy as np

PyCUDA Installation Il est enfin temps d'installer PyCUDA. $ pip3 install pycuda

Confirmation PyCUDA $ python3 -c "import pycuda.autoinit

S'il n'y a pas d'erreur, c'est OK pour le moment. Si vous obtenez une erreur, suspectez le passage aux paramètres Xcode7, DYLD_LIBRARY_PATH et PATH, ** préférences système ** ** paramètres d'économie d'énergie ** (** commutation automatique des graphiques ** désactivée) ..

Ensuite, installez scicit-cuda (skcuda). $ pip3 install scikit-cuda

Programmation GPGPU avec PyCUDA

Script de test test_gpu.py

import pycuda.autoinit
import pycuda.driver as cuda
from pycuda import gpuarray
from skcuda import linalg
import numpy as np

linalg.init()

a = np.random.rand(2, 1).astype(np.float32)
b = np.ones(2).astype(np.float32).reshape(1, 2)

a_gpu = gpuarray.to_gpu(a)
b_gpu = gpuarray.to_gpu(b)

c_gpu = linalg.dot(a_gpu, b_gpu)
c = c_gpu.get()

print(a)
print(b)
#Le résultat du calcul du produit interne avec le CPU
print(np.dot(a, b))
#Résultat du calcul du produit interne avec GPU
print(c)

Enregistrez le script ci-dessus sous test_gpu.py et exécutez-le.

$ python3 test_gpu.py

[[ 0.85600704]
 [ 0.02441464]]
[[ 1.  1.]]
[[ 0.85600704  0.85600704]
 [ 0.02441464  0.02441464]]
[[ 0.85600704  0.85600704]
 [ 0.02441464  0.02441464]]

Décrit le script de test test_gpu.py.

Tout d'abord, préparez-vous au traitement d'initialisation, etc. pour utiliser le GPU avec Python.

import pycuda.autoinit
...
linalg.init()

Créez un ndarray Numpy une fois avant de le traiter sur le GPU. Le type de données utilise float32.

a = random.rand(2, 1).astype(np.float32)
b = np.ones(2).astype(np.float32).reshape(1, 2)

Puis convertissez le ndarray en gpuarray.

a_gpu = gpuarray.to_gpu(a)
b_gpu = gpuarray.to_gpu(b)

Dans ce processus, les données du tableau sont converties et transférées de la mémoire du CPU vers la mémoire du GPU (CPU → GPU).

Il s'agit d'une opération de produit interne GPU équivalente à np.dot de Numpy.

c_gpu = linalg.dot(ga, gb)

Vous devez revenir de gpuarray (GPU) à ndarray (CPU) pour voir le résultat.

c = c_gpu.get()
print(c)

Cette fois, c'est le flux GPU → CPU.

Notes de programmation PyCUDA

Dans la programmation avec PyCUDA, il est important de toujours savoir si la variable est ndarray ou gpuarray car elle va et vient entre le CPU et le GPU. En outre, la conversion de données entre CPU / GPU a un impact significatif sur les performances et doit être réduite au minimum.

L'augmentation de la taille du gpuarray sur un Mac avec une mémoire GPU faible peut rendre le système extrêmement lent et facilement inopérant. Lors de l'exécution d'un script sur une machine avec une mémoire GPU faible, il est plus sûr de fermer la fenêtre et de quitter complètement l'application. Veuillez noter que Safari consomme beaucoup de mémoire.

Fonction pratique

gpuarray et linalg ont les fonctions utiles suivantes. Cependant, soit x, y et z gpuarray. --linalg.dot (x, y): produit intérieur --linalg.transpose (x): matrice de transposition --gpuarray.max (x): valeur maximale --abs (x): valeur absolue --x.shape: Identique à la forme de ndarray --gpuarray.if_positive (x> z, x, z): relu si z est ** 0 ** --linalg.mdot (x, y): peut être utilisé comme produit extérieur en remodelant

API Docs

Recommended Posts

De la construction de l'environnement PyCUDA à la programmation GPGPU sur Mac (MacOS 10.12 Sierra)
Mémo de construction de l'environnement Python sur Mac
Construction de l'environnement de développement Python sur macOS
Construire un environnement pour python3.8 sur Mac
De Ubuntu 20.04 introduction à la construction d'environnement
Mettre à jour Mac Python de 2 à 3
Comment reconstruire l'environnement python à partir de pyenv dans un environnement Mac (El Capitan)
Comment installer cx_Oracle sur macOS Sierra
Comment lire les variables d'environnement à partir d'un fichier .env avec PyCharm (pour Mac)
De la création de l'environnement Kivy à l'affichage de Hello World
Construction d'environnement explosif Python à partir de zéro (Mac)
De 0 à la construction de l'environnement de développement Django à l'exploitation de base
Comment créer rapidement un environnement d'analyse morphologique à l'aide d'Elasticsearch sur macOS Sierra
De Kafka à KSQL - Construction d'environnement facile avec docker
Construction de l'environnement Anaconda-4.2.0-python3 (Mac)
Préférences pour générer des GIF animés à partir de Python sur Mac
Construction de l'environnement de développement Python 2020 [De l'installation de Python à l'introduction à la poésie]
Construction d'environnement avec anyenv + pyenv (migrer depuis pyenv uniquement (Mac))
Procédure pour convertir un fichier python en exe à partir de la construction de l'environnement Ubunts
Construction de l'environnement Pyxel (Mac)
OpenJTalk sur Windows10 (parler japonais avec Python depuis la construction de l'environnement)
De la construction de l'environnement au déploiement pour flask + Heroku avec Docker
Connectez-vous à centos6 sur Virtualbox avec une connexion SSH depuis Mac
Construction de l'environnement VScode (sur Mac) et affichage des graphiques en Python (@ browser)
Environnement Pyramid + Mongodb sur Mac
Construction de l'environnement Anaconda sur CentOS7
Construction de l'environnement Python pour Mac
Mettez à jour le python que vous aviez sur votre Mac à 3.7-> 3.8
[Tensorflow] Construction de l'environnement Tensorflow sous Windows 10
Construction de l'environnement Linux (sur environnement WSL)
Construction de l'environnement Ansible pour Mac
Étapes rapides pour créer un environnement d'apprentissage automatique à l'aide de Jupyter Notebook sur macOS Sierra avec anaconda
[Google App Engine] Flux de la construction de l'environnement de développement à la création de l'application
Tout, de la création d'un environnement Python à son exécution sous Windows
Construire un environnement Python sur Mac
Construction de l'environnement Mac + Eclipse (PyDev) + Django
Mémo de construction de l'environnement Python sur Windows 10
Instructions pour installer matplotlib sur votre Mac
Programmation tirée des livres le 10 mai
Convertir WMA en MP3 sur Mac
Créer un environnement Python sur Mac (2017/4)
J'ai vérifié la construction de l'environnement Mac Python
Installez Scipy sur Mac OS Sierra
Comment installer OpenCV sur Mac
[Linux] Construction de l'environnement Docker sur Redhat
Programmation tirée des livres le 7 mai
Construction de l'environnement Python3 TensorFlow pour Mac
Étapes pour installer python3 sur Mac
Créer un environnement pour "Tello_Video" sur Ubuntu
Installez Java2Python sur macOS High Sierra (10.13)
Appeler C / C ++ depuis Python sur Mac
Construction d'environnements OpenCV3 et Python3 sur Ubuntu
Tutoriel d'apprentissage en profondeur de la construction d'environnement
Points à surveiller lors de la création d'un environnement Python sur un Mac
Comment utiliser gcc lors de la compilation d'une extension depuis setup.py sur Mac
(Mac) Comment afficher en japonais avec Matplotlib et Seaborn sur MacOS Sierra
Essayez de créer un environnement python et anaconda sur Mac (avec pyenv, conda)
De la construction de ré-environnement de Python au dessin graphique (sur le code Visual Studio)