Jetson TX1 (JetPack 3.2) に Amazon Alexa をインストールしてSmapleAppで遊ぶ

ラズパイほどインパクトないんで、なぜTX1に?という疑問は置いといて、Amazon Alexa (Alexa Voice Service)をインストールした。いろいろハマったし、いまだ解決してない問題もあるのが、メモしておく。なお、AVSはUbuntu 16.04 LTSが条件なので、必然的にJetPackは3.2となる。 私は以下を参照した。 CQ出版インターフェス 2018/4月号 (AIスピーカー特集、ラズパイを使用) Alexa AVS-Device-SDK Wiki Ubuntu Linux Quick Start Guide  (上記、Wiki内) Audio 入出力 TX1は、HDMIでAudioを出力できる。私は最初、手持ちの古いUSB DACをつないだが問題なく使えた。入力は安そうなUSBマイク(エレコム HS-MC05USBK)を買って接続、問題なく使えた。いずれも、Soundで、入出力先を指定すればすぐ使えた。インターフェースからの引用だが、以下のコマンドでテストしておく。 #出力テスト $ speaker-test -t wav #入力テスト マイクで5秒録音、それを聞いてみる。 $ arecord --format=S16_LE --duration=5 --rate=16000 --file-type=raw out.r $ aplay --format=S16_LE --rate=16000 out.raw Amazon開発者登録は、以下を参照したがハマった。 失敗しないAlexa開発者アカウントの作り方 Amazon.co.jpとAmazon.comのどちらにも登録済みのメールアドレスを使うと問題が起きるらしい。なので、大昔から持っているAmazon.co.jpしか登録してないアドレスを使ったのだが、Amazon 開発者ポータルにログインできない。そんなアドレスは見つからないといわれ、思い余ってアカウントの新規作成をやったら(これはやってはいけない)そのアドレスは既に登録済みだといわれ.... 結局、co.jpで別メールアドレスを使って新しいアカウントを作成してみたら、あっさりと問題解決。 製品情報の登録をインターフェースを見ながらやったら、Amazonのページが変わっている。特にセキュリティプロファ...

NVIDIA Optimusを搭載したノートPCでUbuntu 16.04 +「最新」CUDAをインストール

数年前に買ったノートPCにUbuntu 16.04をインストールし、プロプライエタリなNVIDIAのドライバーをインストールして、「最新」CUDAをインストールして、そこそこハマッタので、メモを残しておく。

Ubuntu 16.04をインストール後、プロプライエタリなNVIDIAのドライバーをインストールしたら、ブートしなくなった(頭が痛い…)Ctl+Alt+F1で仮想コンソールに移行し、
$ sudo apt purge "インストしたドライバーパッケージ”
で何とか回復した。あるいは再起動後、GRUBメニューでUbuntuを選択した状態で'e'キーを押し、起動オプションをいじる。'quiet splash'と書いてあるところの直後に'text 3'を追加してF10キーを押す。するとランレベル3でCUIログインになりpurgeできるようになる、という、どこかに出ていた技を使ったかも。(までに何度、Ubuntuを再インストしたことやら…)

どうも私のノートPCは、NVIDIA Optimusとか言って、GPUがNVIDIAのものと、インテルのものが2つ入っているのが原因らしい。で、この場合、bumblebeeを使った方法が紹介されているページがチラホラあったが、さらに調べてみると、bumblebeeは2013年から開発が止まっていて、ubuntu 16.04からはdeprecatedになっているらしい。そこでnvidia-primeを使う。参照したページをメモし忘れた(オイオイ…)

まず、プロプライエタリなNVIDIAのドライバーのバージョンを決める。
$ sudo apt-cache search 'nvidia-[0-9]+$'
で、出てきたもので選ぶ。私は”nvidia-384”を選択した。その理由は忘れた。(オイオイ、そこが肝心だろ…)確か、NVIDIAのサイトで、私のGPUに対応したLinux 64用のドライバーのバージョンを調べて、それか、それ以下のものにした記憶がある。次に、
$ sudo apt install nvidia-384 nvidia-prime nvidia-settings
で、リブート後、Dashから”Nvidia X Server Settings"を起動する。PRIMEのプロファイルがメニューにあるはずだから、それをクリックすると、「NVIDIAのGPUを使う」「インテルのGPUを使う」の2択ができる。Windowsのように、自動的に切り替えはできない。

次にCUDAのインストールである。何も考えずに最新の9.1をインストールしたら動かない(またまた頭が痛い…) 色々調べてみたら、まず、私のノートPCについているGPUが古い。以下のページでどのGPUがどのCompute Capability なのか調べることが出来る。
私のGPUは Compute Capability 2.1である。一方、なかなかわからなかったのだが、
によれば、
  • CUDA SDK 8.0 support for compute capability 2.0 – 6.x (Fermi, Kepler, Maxwell, Pascal), last version with support for Compute Capability 2.x (Fermi)
  • CUDA SDK 9.0/9.1 support for compute capability 3.0 – 7.x (Kepler, Maxwell, Pascal, Volta)
古すぎて9.0以降、サポートされていない。しょうがないのでCUDA 8.0を再インストールする。なんか、CUDAの中に、ドライバーのバージョンがハードコーディングされてるところがあったかなんかで、インストール中にエラーが出る。エラーが出たソースのディレクトリーにある、findgllib.mkの中のUBUNTU_PKG_NAME = "nvidia-390" とかを、自分が実際使ってるドライバーのパッケージ名に書き換えた、ような気がした。(ちょっと前だったのでもう忘れ始めている)

CUDAインストール後、.bashrcに以下の行を加える。

## CUDA and cuDNN paths export PATH=/usr/local/cuda-8.0/bin:${PATH}
export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64:${LD_LIBRARY_PATH}
で、テスト。(どっかのページからのコピペだが、参照元を忘れてしまった。失礼)
$echo $PATH             # 出力に"/usr/local/cuda-8.0/bin"が含まれているか?
$echo $LD_LIBRARY_PATH  # 出力に"/usr/local/cuda-8.0/lib64"が含まれているか?$
$which nvcc             # 出力が"/usr/local/cuda-8.0/bin/nvcc"になっているか?
$nvidia-smi             # nvidiaのGPUの情報が表示されているか?
$cuda-install-samples-8.0.sh ~ # ホームディレクトリにサンプルコードをコピー。
$cd ~/NVIDIA_CUDA-8.0_Samples/
$make
$cd 2_Graphics/volumeRender    # サンプルの実行ファイルがあるディレクトリに移動。
$./volumeRender



コメント

このブログの人気の投稿

Jetson TX1 + JetPack 3.2 + OpenCV 3.4.0 コンパイル with CUDA and OpenGL

Jetson TX1 (JetPack 3.2) に Amazon Alexa をインストールしてSmapleAppで遊ぶ