鳥なき里のマイコン屋(80) VS CodeでJetson Nano

JosephHalfmoon

前回は、PC上で実行しているVS Code(エディタ)から、リモートのRaspberry Pi 3 model Bに接続し、ファイルが編集できる、できると喜んでおりました。ラズパイで出来たものなら、多分、そのまま Jetson Nanoでもできるのではないかと考えました。実際EDITできました。が、いろいろ試していくと、「楽ちん」といかない部分がありそうです。

前回、ラズパイでVS Codeを使える方法3つを列挙したうち、第1のRemote-SSH接続の方法を試してみました。今回は、Jetson Nanoについても同じRemote-SSH接続による方法を試してみます。前回、PC側についてはラズパイに接続するための設定が完了しています。また、手元のJetson Nanoについては、もともとTeratermでSSH接続して仮想端末で使用していたので、特にSSH接続に問題はない筈。実際、Remote-SSH接続で新ホストとしてJetson Nanoをターゲットにしてみたら、

IPアドレス、ユーザ名、パスワード

入力するだけであっけなくVS Codeでフォルダを開いて編集可能な状態になりました。あっけないです。これでは投稿になりませんな。そこで前回ラズパイのときよりは、僅かに一歩進めたいと思います。前回のラズパイでは、編集はVS Codeで行い、

VS Code内でターミナルとして開いたBash

でmakeやら実行やらをやっておりました。この方法であれば、接続さえできれば拡張機能等のRemote-SSH接続先へのインストールは不要だと思います。しかし、編集以外はSSH接続の仮想端末と何も変わりませぬ。

そこで、Remote-SSH接続先への拡張機能のインストールを行って、も少しVS Code「らしく」使用してみたいと思います。

最初に試みるのは、Pythonのcupyモジュール(Cudaを使って、GPUを用いて高速化したnumpy互換のライブラリ)を利用したPythonのスクリプトのデバッグです。Jetson Nano上のフォルダ(AIの片隅で第19回で作ったもの)を開いてみます。これでPythonコードの編集はできますし、Bach開いて実行もできます。しかし、折角あるVS Codeの「デバッグ」機能は使えません。そこでExtensionから

MicrosoftのPython

をRemote-SSH接続先にインストールしてみます。(ローカル環境にExtensionをインストールしてあれば、Remoto-SSH先にもインストールするかというボタンが現れていることと思います。)インストールしてあることをExtensionから確認してみるとこんな感じ。

Python拡張がRemoto-SSH先に入ると、今までなにも表示されていなかった、左下のSSH接続先の緑の表示の右横に使用可能なPython処理系のバージョンなどが表示され、「Python使える」ということが分かります。

さらに嬉しいのは、該当のPython処理系に未インストールだけれども、Extensionが必要とするモジュールを「インストールするか」どうか聞いてくれることです。インストールボタンを押せば、勝手にpip起動してインストールしてくれます。以下はpylintが不足していたのでインストールしているところ。pylintはVS Codeでpythonコードを編集していると、ツマラナイエラーをビシビシ指摘を入れてFIXさせてくれる良いものだと思います。

さて、セッティングが終わったところで、該当のコードをデバッグ実行してみます。例によって行頭に赤いブレークポイントを置けばそこで停止させて、変数の値などを吟味することができます。実際、やってみたらこんな感じ。

30行目でブレークし、そのときの変数などがダンプされてます。まあ、こんだけ見えたらデバッグも楽ちん。それに、今回このコードでは

  • CPUつかうnumpy
  • GPUつかうcupy

併用、混在していますが、Pythonレベルでは何も気にせずデバッグできる。いいじゃない。

Pythonの次は、やはり本丸(?)、CUDAのコードでしょう。試みに何の設定もしないまま CUDAの

.cu

拡張子のファイルが含まれるフォルダをVS Codeで開き、.cu拡張子のファイルを開いてみましたが、ハイライトもなされず素のテキストのままでした。そこで、C/C++拡張(Microsoftのもの)に加えて、CUDA用のハイライトとか、スニペットとかを追加してくれる拡張を探してRemoteに導入してみました。実は、CUDA用の拡張が沢山あって、どれを選んでよいやら迷うのじゃないかな、と予想していましたが、ほとんど選択の余地がなかったです。それで導入したのが以下のものです。

これを導入したことで、.cu 拡張子のファイルも通常のCPP同様に色付けされて編集できるようになりました。

cuda-gdbでのデバッグには特権が必要、なことは分かっているので、最低Jetson上でのビルドがVS Codeからできると良いかな~と思ってやってみました。が、以下のようなつれないエラーメッセージが。

これは、マイクロソフトのC/C++拡張では、Jetson Nanoのubuntu(arm64)上でのビルドに対応していない、ということだけなのだと想像します。別に手でmakeすればできるので、できないわけはないがな~と思いつつ、本日はここまで。

鳥なき里のマイコン屋(78) VS Codeで Raspberry Pi へ戻る

鳥なき里のマイコン屋(81) VS Code、Remote, MakeしてGdb へ進む