[PYTHON] Vom Aufbau der PyCUDA-Umgebung bis zur GPGPU-Programmierung auf dem Mac (MacOS 10.12 Sierra)

Einführung

Zielperson

Hier sind die Schritte zum Installieren von PyCUDA auf Ihrem Mac. Diejenigen, die unter die folgenden fallen, können gezielt werden. --Verwenden Sie Python 3.x.

Entwicklungsumgebung

Die technischen Daten des verwendeten Mac lauten wie folgt.

PyCUDA-Umgebungskonstruktion

Xcode7 Installation Zum Zeitpunkt des Schreibens war Xcode 7.3.1 das neueste in Xcode 7. Wählen Sie unter Downloads für Apple Developer die Option ** Weitere Downloads anzeigen ** aus und geben Sie "Xcode 7" in das Suchfeld ein. Laden Sie ** Xcode 7.3.1 ** und ** Befehlszeilentools für Xcode 7.3.1 ** herunter.

Öffnen Sie die heruntergeladene dmg-Datei und installieren Sie Xcode 7.3.1. Installieren Sie dann auch die Befehlszeilentools für Xcode 7.3.1.

Öffnen Sie dann dmg von Command Line Tools und installieren Sie es.

Wenn Xcode 8 bereits installiert ist

Wenn Sie Xcode8 bereits installiert haben, kopieren Sie Xcode7 als Xcode7.app nach / Applications. So aktivieren Sie 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

Umgekehrt, um Xcode 8 zu aktivieren $ sudo mv /Applications/Xcode.app /Applications/Xcode7.app $ sudo mv /Applications/Xcode8.app /Applications/Xcode.app $ sudo xcode-select -s /Applications/Xcode.app

*** Aktivieren Sie Xcode7, um CUDA / PyCUDA zu verwenden. CUDA8 unterstützt Xcode8 nicht. *** ***

CUDA8 Installation CUDA ist eine integrierte Entwicklungsumgebung für GPGPU-Bibliotheken, Kompilierungen usw., die von NVIDIA bereitgestellt wird. Kurz gesagt, es handelt sich um eine Gruppe von Tools für die parallele Berechnung mit der von NVIDIA erstellten GPU. Installieren Sie CUDA8, da PyCUDA CUDA benötigt. CUDA8 Installation Wählen Sie das Betriebssystem und die Version unter CUDA Toolkit Download | NVIDIA Developer aus und laden Sie das Paket herunter. Installieren Sie das Gerät gemäß den Anweisungen des Installationsprogramms.

Wählen Sie nach der Installation ** CUDA ** aus den ** Systemeinstellungen ** von MacOS aus und klicken Sie auf ** CUDA-Update installieren **, um CUDA zu aktualisieren.

cuDNN Installation Laden Sie cudnn von NVIDIA cuDNN | NVIDIA Developer herunter. Möglicherweise müssen Sie sich als Mitglied registrieren.

Entpacken Sie das heruntergeladene cudnn-8.0-osx-x64-v6.0.tgz.

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



 Stellen Sie die Datei auf Ihrem System bereit.
```$ sudo mv <Ordner entpacken>/lib/libcudnn* /usr/local/cuda/lib```

#### **`$ sudo mv <Ordner entpacken>/include/cudnn.h /usr/local/cuda/include`**

Setze ** DYLD_LIBRARY_PATH ** und ** PATH ** Fügen Sie es zu .bashrc hinzu.

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


 Reflektieren Sie die Änderungen.

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


### CUDA-Beispielprogramm

 Sie können die Installation mit dem Beispielprogramm überprüfen. Das Kompilieren dauert jedoch lange, sodass Sie es überspringen können.


#### **`$ /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

Wenn Sie einen Kompilierungsfehler erhalten, überprüfen Sie die Einstellungen für Xcode-Umschaltung, DYLD_LIBRARY_PATH und PATH sowie ** Systemeinstellungen ** ** Energiespareinstellungen ** (** Automatische Grafikumschaltung ** deaktiviert).

Homebrew Installation Wenn Sie Homebrew noch nicht installiert haben $ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)”

Wenn Sie Python3 noch nicht installiert haben $ brew install python3

Python3-Bestätigung $ python3 --version

pip Installation Wenn Sie pip noch nicht installiert haben $ curl -kL https://raw.github.com/pypa/pip/master/contrib/get-pip.p

Numpy Installation Wenn Sie numpy noch nicht installiert haben $ pip3 install numpy $ pip3 install scipy

*** Hinweis) Auch wenn Numpy unter Python 2.x installiert ist, muss es für Python 3.x installiert werden. *** ***

numpy Bestätigung $ python3 >>> import numpy as np

PyCUDA Installation Es ist endlich Zeit, PyCUDA zu installieren. $ pip3 install pycuda

PyCUDA-Bestätigung $ python3 -c "import pycuda.autoinit

Wenn kein Fehler vorliegt, ist dies vorerst in Ordnung. Wenn Sie eine Fehlermeldung erhalten, vermuten Sie den Wechsel zu den Einstellungen Xcode7, DYLD_LIBRARY_PATH und PATH, ** Systemeinstellungen ** ** Energiespareinstellungen ** (** Grafik automatisch umschalten ** aus) ..

Dann installieren Sie scicit-cuda (skcuda). $ pip3 install scikit-cuda

GPGPU-Programmierung mit PyCUDA

Testskript 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)
#Das Ergebnis der Berechnung des inneren Produkts mit der CPU
print(np.dot(a, b))
#Ergebnis der Berechnung des inneren Produkts mit GPU
print(c)

Speichern Sie das obige Skript als test_gpu.py und führen Sie es aus.

$ 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]]

Beschreibt das Testskript test_gpu.py.

Bereiten Sie sich zunächst auf die Initialisierungsverarbeitung usw. vor, um die GPU mit Python zu verwenden.

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

Erstellen Sie ein Numpy-ndarray einmal, bevor Sie es auf der GPU verarbeiten. Der Datentyp verwendet float32.

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

Konvertieren Sie dann den ndarray in einen gpuarray.

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

Dabei werden Array-Daten konvertiert und vom Speicher für die CPU in den Speicher für die GPU (CPU → GPU) übertragen.

Es handelt sich um eine GPU-interne Produktoperation, die np.dot von Numpy entspricht.

c_gpu = linalg.dot(ga, gb)

Sie müssen von gpuarray (GPU) zu ndarray (CPU) zurückkehren, um das Ergebnis zu sehen.

c = c_gpu.get()
print(c)

Diesmal ist es der Fluss von GPU → CPU.

PyCUDA-Programmierhinweise

Bei der Programmierung mit PyCUDA ist es wichtig, immer zu wissen, ob die Variable ndarray oder gpuarray ist, da sie zwischen CPU und GPU hin und her wechselt. Die Datenkonvertierung zwischen CPU / GPU hat erhebliche Auswirkungen auf die Leistung und sollte auf ein Minimum beschränkt werden.

Durch Erhöhen der GPuarray-Größe auf einem Mac mit geringem GPU-Speicher kann das System extrem träge und leicht funktionsunfähig werden. Wenn Sie ein Skript auf einem Computer mit wenig GPU-Speicher ausführen, ist es sicherer, das Fenster zu schließen und die Anwendung vollständig zu beenden. Bitte beachten Sie, dass Safari viel Speicherplatz beansprucht.

Bequeme Funktion

gpuarray und linalg haben die folgenden nützlichen Funktionen. X, y und z seien jedoch gpuarray. --linalg.dot (x, y): Inneres Produkt --linalg.transpose (x): Transponieren Sie die Matrix --gpuarray.max (x): Maximalwert --abs (x): Absolutwert --x.shape: Entspricht der Form von ndarray --gpuarray.if_positive (x> z, x, z): relu wenn z ** 0 ** ist --linalg.mdot (x, y): Kann durch Umformen als Außenprodukt verwendet werden

API Docs

Recommended Posts

Vom Aufbau der PyCUDA-Umgebung bis zur GPGPU-Programmierung auf dem Mac (MacOS 10.12 Sierra)
Konstruktionsnotiz für die Python-Umgebung auf dem Mac
Aufbau einer Python-Entwicklungsumgebung unter macOS
Erstellen einer Umgebung für Python3.8 auf einem Mac
Ab Ubuntu 20.04 Einführung in die Umgebungskonstruktion
Aktualisieren Sie Mac Python von 2 auf 3
So erstellen Sie eine Python-Umgebung aus Pyenv in einer Mac-Umgebung (El Capitan)
So installieren Sie cx_Oracle unter macOS Sierra
Lesen von Umgebungsvariablen aus einer ENV-Datei mit PyCharm (für Mac)
Vom Aufbau der Kivy-Umgebung bis zur Anzeige von Hello World
Aufbau einer explosiven Python-Umgebung ab Null (Mac)
Von 0 bis Django Entwicklungsumgebung Konstruktion bis Grundbetrieb
So erstellen Sie mit Elasticsearch unter macOS Sierra schnell eine morphologische Analyseumgebung
Von Kafka bis KSQL - Einfache Umgebungskonstruktion mit Docker
Aufbau einer Anaconda-4.2.0-Python3-Umgebung (Mac)
Einstellungen zum Generieren animierter GIFs aus Python auf dem Mac
Aufbau der Python-Entwicklungsumgebung 2020 [Von der Python-Installation bis zur Einführung in die Poesie]
Umgebungskonstruktion mit anyenv + pyenv (nur von pyenv migrieren (Mac))
Verfahren zum Konvertieren einer Python-Datei in eine Exe aus der Ubunts-Umgebungskonstruktion
Pyxel-Umgebungskonstruktion (Mac)
OpenJTalk unter Windows 10 (Sprechen Sie Japanisch mit Python aus der Umgebungskonstruktion)
Vom Umgebungsaufbau bis zum Einsatz für Kolben + Heroku mit Docker
Stellen Sie mit ssh-Verbindung vom Mac aus eine Verbindung zu centos6 auf der Virtualbox her
VScode-Umgebungskonstruktion (auf Mac) und Diagrammanzeige in Python (@ Browser)
Pyramid + Mongodb-Umgebung auf Mac
Anaconda-Umgebungskonstruktion auf CentOS7
Aufbau einer Python-Umgebung für Mac
Aktualisieren Sie die Python, die Sie auf Ihrem Mac hatten, auf 3.7-> 3.8
[Tensorflow] Aufbau der Tensorflow-Umgebung unter Windows 10
Aufbau einer Linux-Umgebung (in einer WSL-Umgebung)
Ansible Umgebungskonstruktion Für Mac
Schnelle Schritte zum Erstellen einer maschinellen Lernumgebung mit Jupyter Notebook unter macOS Sierra mit anaconda
[Google App Engine] Ablauf von der Erstellung der Entwicklungsumgebung bis zur Erstellung der Anwendung
Alles vom Erstellen einer Python-Umgebung bis zur Ausführung unter Windows
Erstellen einer Python-Umgebung auf einem Mac
Mac + Eclipse (PyDev) + Django-Umgebungskonstruktion
Python-Umgebungskonstruktionsnotiz unter Windows 10
Anweisungen zur Installation von matplotlib auf Ihrem Mac
Programmierung aus Büchern gelernt 10. Mai
Konvertieren Sie wma in mp3 auf dem Mac
Erstellen Sie eine Python-Umgebung auf dem Mac (2017/4)
Ich habe die Konstruktion der Mac Python-Umgebung überprüft
Installieren Sie Scipy unter Mac OS Sierra
So installieren Sie OpenCV auf einem Mac
[Linux] Aufbau einer Docker-Umgebung auf Redhat
Programmierung aus Büchern gelernt 7. Mai
Python3 TensorFlow für Mac-Umgebungskonstruktion
Schritte zum Installieren von python3 auf einem Mac
Erstellen einer Umgebung für "Tello_Video" unter Ubuntu
Installieren Sie Java2Python unter macOS High Sierra (10.13)
Rufen Sie C / C ++ von Python auf dem Mac auf
OpenCV3 & Python3 Umgebungskonstruktion unter Ubuntu
Deep Learning Tutorial aus dem Umgebungsbau
Dinge, auf die Sie beim Erstellen einer Python-Umgebung auf einem Mac achten sollten
Verwendung von gcc beim Kompilieren einer Erweiterung aus setup.py auf einem Mac
(Mac) Anzeigen auf Japanisch mit Matplotlib und Seaborn bei MacOS Sierra
Versuchen Sie, eine Python- und Anaconda-Umgebung auf einem Mac zu erstellen (mit pyenv, conda).
Von der Re-Environment-Konstruktion von Python bis zur grafischen Zeichnung (auf Visual Studio-Code)