前回は、PC上で実行しているVS Code(エディタ)から、リモートのRaspberry Pi 3 model Bに接続し、ファイルが編集できる、できると喜んでおりました。ラズパイで出来たものなら、多分、そのまま Jetson Nanoでもできるのではないかと考えました。実際EDITできました。が、いろいろ試していくと、「楽ちん」といかない部分がありそうです。
※「鳥なき里のマイコン屋」投稿順Indexはこちら
前回、ラズパイで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すればできるので、できないわけはないがな~と思いつつ、本日はここまで。