Jetson Nano에서 CuPy

소개



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



동작 확인



우선 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 버전을 설치하려고하면 훌륭하게 실패했습니다.




h tps : // css 쿠 py. 짱 r. 오 rg/엔/s타 bぇ/단독 l/바시 c. HTML 

좋은 웹페이지 즐겨찾기