LoginSignup
8
6

More than 3 years have passed since last update.

Jetson NanoでCuPy

Last updated at Posted at 2019-05-24

はじめに

Chainerを使う前にCuPyをGPUで動かすことが必要なのでその為の実験。

事前準備

環境を分けることを考えてpipenvを用いる。

yamamo-to@jetson-nano:~$ sudo apt install python3-pip
yamamo-to@jetson-nano:~$ pip3 install pipenv --user

pipenv$HOME/.local/binにインストールされるが既にPATHは通っていた。~/.profileに同パスを読み込むようになっていた。.bash_profileを使う場合はPATHが通らないので、その場合は下記のコマンドで通す必要がある。

yamamo-to@jetson-nano:~$ export PATH=$HOME/.local/bin:$PATH

またインストール前に周波数を上げる。

yamamo-to@jetson-nano:~$ sudo jetson_clocks

さらにメモリが不足したとき用にスワップを用意する。

yamamo-to@jetson-nano:~$ sudo fallocate -l 4G /swapfile
yamamo-to@jetson-nano:~$ sudo chmod 600 /swapfile
yamamo-to@jetson-nano:~$ sudo mkswap /swapfile
yamamo-to@jetson-nano:~$ sudo swapon /swapfile

インストール

1時間近く時間がかかったがインストールはできたようだ。

yamamo-to@jetson-nano:~$ mkdir ~/Documents/Chainer
yamamo-to@jetson-nano:~$ cd ~/Documents/Chainer
yamamo-to@jetson-nano:~/Documents/Chainer$ pipenv --three
yamamo-to@jetson-nano:~/Documents/Chainer$ pipenv install cupy

cupy_src.png

動作確認

とりあえずpython3でCuPyが動く。

yamamo-to@jetson-nano:~/Documents/Chainer$ pipenv run python3 -c 'import cupy as cp; print(cp.__version__)'
6.0.0

サンプル1を参考に下記のようなcupy_test.pyを作成し動作確認を行う。

cupy_test.py
import cupy as cp

cp.cuda.Device(0).use()
x_gpu = cp.array([1, 2, 3])
l2_gpu = cp.linalg.norm(x_gpu)
print(l2_gpu)

このプログラムを実行すると

yamamo-to@jetson-nano:~/Documents/Chainer$ pipenv run python3 cupy_test.py
3.7416573867739413

なお存在しないGPUを指定すると確かにエラーとなる。

yamamo-to@jetson-nano:~/Documents/Chainer$ pipenv run python3
Python 3.6.7 (default, Oct 22 2018, 11:32:17) 
[GCC 8.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import cupy as cp
>>> cp.cuda.Device(1).use()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "cupy/cuda/device.pyx", line 135, in cupy.cuda.device.Device.use
  File "cupy/cuda/device.pyx", line 141, in cupy.cuda.device.Device.use
  File "cupy/cuda/runtime.pyx", line 193, in cupy.cuda.runtime.setDevice
  File "cupy/cuda/runtime.pyx", line 145, in cupy.cuda.runtime.check_status
cupy.cuda.runtime.CUDARuntimeError: cudaErrorInvalidDevice: invalid device ordinal

おまけ

wheel版をインストールしようとしたら見事に失敗した。
cupy_wheel.png

8
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
6