NVIDIA Jetson TX2でCUDA driver version is insufficient for CUDA runtime versionが出たので解決した。

Jetpack を使用してCUDA Toolkitをインストールして、cupyを動かそうとしたときに出たエラー。 以下に実際にでた様子。 インストール時にはエラーが出ないのに、いざ、pythonからcudaを使おうと思ったときにでてたちが悪い。

$ python3
Python 3.5.2 (default, Nov 12 2018, 13:43:14) 
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import cupy
>>> a=cupy.arange(9).reshape(3,3).astype('f')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python3.5/dist-packages/cupy/creation/ranges.py", line 55, in arange
    ret = cupy.empty((size,), dtype=dtype)
  File "/usr/local/lib/python3.5/dist-packages/cupy/creation/basic.py", line 20, in empty
    return cupy.ndarray(shape, dtype, order=order)
  File "cupy/core/core.pyx", line 150, in cupy.core.core.ndarray.__init__
  File "cupy/cuda/memory.pyx", line 517, in cupy.cuda.memory.alloc
  File "cupy/cuda/memory.pyx", line 1064, in cupy.cuda.memory.MemoryPool.malloc
  File "cupy/cuda/memory.pyx", line 1084, in cupy.cuda.memory.MemoryPool.malloc
  File "cupy/cuda/device.pyx", line 19, in cupy.cuda.device.get_device_id
  File "cupy/cuda/runtime.pyx", line 165, in cupy.cuda.runtime.getDevice
  File "cupy/cuda/runtime.pyx", line 137, in cupy.cuda.runtime.check_status
cupy.cuda.runtime.CUDARuntimeError: cudaErrorInsufficientDriver: CUDA driver version is insufficient for CUDA runtime version

結論としては、すでにインストールされているCUDA driverに対してJetpackでインストールしたCUDA Toolkitのバージョンが高すぎたことが問題だったみたい。 以下のJetpack Arciveからl4tのバージョンを見て対応しているものを使ってインストールしなおせば動くようになるはず。 l4tのバージョンは head -n 1 /etc/nv_tegra_release でわかるはず

所感

動いた、Jetsonかっこいい(小並感)。そのうちやったこととかまとめたい。

とりあえず最新版ではだめなのか、、、

参考資料

JetPack Archive | NVIDIA Developer

  • NVIDIA® CUDA™ Architecture Introduction & Overview

http://developer.download.nvidia.com/compute/cuda/docs/CUDA_Architecture_Overview.pdf