トホホな疑問(8) Raspbianで ltrace 動きませぬ

しばらく前にRaspbian上でAudioインタフェース用のコマンド群がトラブったときに活躍したのが、システムコールをトレースしてくれる

strace

コマンドでした。お陰で何故止まってしまったように見えるのか理由が分かり、解決につながりました。ありがたい限り。この strace に似たコマンドで、ライブラリ呼び出しをトレースしてくれる

ltrace

というコマンドもあります。これをRaspbianの上で不用意にインストールして動かそうとしたところ、ハングしました。なぜ? “トホホな疑問(8) Raspbianで ltrace 動きませぬ” の続きを読む

ぐだぐだ低レベルプログラミング(4) ARM, THUMB切り替え

前回はArmの32ビットと64ビットのモードと命令セット(機械語命令の幅は、どちらも32ビット)の件でした。Arm(腕)には、Thumb(親指)あり、今回は、32ビットモードのArmプロセッサの多くが備えるThumbという名の16ビット幅の機械語命令セットにどうやって切り替えるのか、というところを実際に動かして確認してみたいと思います。

“ぐだぐだ低レベルプログラミング(4) ARM, THUMB切り替え” の続きを読む

ぐだぐだ低レベルプログラミング(3) Arm、32ビット?64ビット?

x86は増築に増築を重ねた複雑なモードと命令セットを持っています。その昔、比較的シンプルな命令セットから出発したArmもまた、重ねた歴史の中で命令セットは複雑化してきています。それどころか、用途が幅広く、かつカスタマイズ可能なArmの方がターゲットによって使用可能な命令セットの選択範囲はx86よりバリエーションが多様にも思えます。アセンブラ書きをするにあたって、ターゲットにするボードやらOS上でどんな範囲の命令が使えるのかまず知らなければなりますまい。今回は、32ビットか、64ビットかという基本中の基本のところから調べて行きます。

“ぐだぐだ低レベルプログラミング(3) Arm、32ビット?64ビット?” の続きを読む

ぐだぐだ低レベルプログラミング(2) ラズパイでアセンブラ、最初の一歩かな?

遥かな昔、結構アセンブラ書いていた時期があるのですが、この頃(といっても多分二十年くらい前から)はあまり書かなくなりました。仕事のせいもあるけれど、多分、昔に比べたら書かなくても済むことが多いから。そのせいもあってArmには時折お世話になっておりながら、ほとんどArmでアセンブラ書いたことがありませぬ。最近、Raspberry Pi 3 model B+ を触ることが結構多く、この際、ちょっとArmのアセンブラを勉強しておこうと思い立った次第。 “ぐだぐだ低レベルプログラミング(2) ラズパイでアセンブラ、最初の一歩かな?” の続きを読む

ぐだぐだ低レベルプログラミング(1) Raspberry Pi 3, PMC利用カーネルモジュール改版

前回、Raspberry Pi 3のカーネルモジュールがビルドできるようになったので、つい嬉しくなって、ユーザモードで ArmコアのPMCCNTRレジスタを読み取れるようにするモジュールを書いてみました。しかし、マルチコアのことを棚にあげて書いたせいで、使い勝手が悪すぎました。今回は、マルチコア問題を回避しつつ、多少使いでを改良してみました。 “ぐだぐだ低レベルプログラミング(1) Raspberry Pi 3, PMC利用カーネルモジュール改版” の続きを読む

トホホな疑問(7) Arm, PMCCNTRへのUSERモードアクセス

ちょっと思い立って、Raspberry Pi 3 model B+で、x86のRdtscみたいなサイクル数カウントをとろうとしたのです。Armにもサイクルカウンタはあるのですが、通常は特権アクセス。しかし、USERモードでもアクセス可にできるビットがあったので、これをONにしてUSERプログラムで測定すべし、と思ったところがまたまたハマリました。Pi 1 model B+であったならば顕在化しなかった問題であります。 “トホホな疑問(7) Arm, PMCCNTRへのUSERモードアクセス” の続きを読む

AIの片隅で(16) block, thread, warp, lane

AIをタイトルにしながら、低レベルな話ばかり書いていますが、それもこれも

Jetson Nano

は、AIネタと決めたからなんであります。先は長いですが、やっていく先にはAIにもつながりましょう。さて、月曜日に cuda-gdb でハマった話を投稿いたしましたが、デバッガが立ち上がったところでおしまいになってました。CUDA用のデバッガらしい話題皆無。というわけで今回は、実際にcuda-gdbを動かして、CUDAのサンプルプログラムの中身をのぞいてみます。 “AIの片隅で(16) block, thread, warp, lane” の続きを読む

トホホな疑問(6) なぜハング、cuda-gdb

このところ、Jetson Nano用のOSイメージに最初から含まれているJetPackの中のツール類をあれこれ当たってみているのですが、ハングしました。デバッグに必須

cuda-gdb

です。これがハングしているのではデバッグもままなりません。いろいろ調べた結果、動くようになったので書き留めておきます。ま、ちゃんと調べずにとりあえず使ってみて、問題起きたらようやく調べるという、泥縄式がまずい、という自覚はあり、しかし、やめられまへん。 “トホホな疑問(6) なぜハング、cuda-gdb” の続きを読む

AIの片隅で(15) nvccとgprof, oprofile

前回はJetson nano上で nvprof を使い、GPU実行部分のプロファイリングをちょっとだけ触ってみました。しかし、本来はCPU部分のプロファイリングもできる筈の nvprofですが、このプラットフォームではCPUのプロファイリングは駄目だと警告がでます。そこで、CPU部分のプロファイリングについては nvcc生成のCUDA使用の実行ファイルを、定番のgprof と oprofile の2つでプロファイリングしてみました。 “AIの片隅で(15) nvccとgprof, oprofile” の続きを読む

AIの片隅で(14) Jetson Nano、nvprof

Jetson Nanoを使っていくために、大事な

/usr/local/cuda (私の環境では実体は /usr/local/cuda-10.0)

の中のコマンドなどについて順に実際に動かして確かめておこうと思い立ちました。一番といえばやはり nvcc でしょうが、サンプルプログラムをコンパイルするのに既に使っているし、かといってその機能を網羅しようとしたりすればどれだけかかるか分かりません。今回は、使う人は使うけれども、使わない人は使わないんじゃないかと想像する、

nvprof

から動かしてみることにいたしました。コマンドラインのcuda用プロファイラですね。

“AIの片隅で(14) Jetson Nano、nvprof” の続きを読む

トホホな疑問(5) aplay -L、返ってこない

Jetson Nanoに、音声ファイルを食わせたいと思ったのであります。音から判定するようなAIも多いしね。既にRaspberry Pi上でテスト済のUSBオーディオインタフェース(大特価ウン百円)をつなげれば即OKと考えたのですが、あれれ

aplay -L

aplay -l

も戻ってきません。無限ループでもしている感じ。でも意外な所に原因がありました。1箇所直したら再生、録音問題なし。 “トホホな疑問(5) aplay -L、返ってこない” の続きを読む

AIの片隅で(13) Jetson NanoでLチカ

前回、AI業界の “Hello World!” である MNISTをやってしまったので、遅ればせながらマイコン業界の “Hello World!”である Lチカを Jetson Nanoにもやっていただくことにいたしました。128個のCUDAコアをもつJetson Nanoには恐れ多い仕事ですが、エッジでAI狙いのJetsonですからIOくらい制御していただいても文句は言いますまい。 “AIの片隅で(13) Jetson NanoでLチカ” の続きを読む

AIの片隅で(12) Jetson NanoでChainer

前回は Jetson Nanoを立ち上げて CUDA が使えることを確認いたしました。今日は、CUDAにそれらしいことをやらせたい。やっぱりAIネタですね。それであれば、既にOSイメージに含まれている

NVIDIA JetPack SDK

というライブラリを使うことになります。JetPackには肝心のCUDAも含まれているので勿論使わせていただくのですが、こちらはこちらで、以前 Raspberry Pi にChainerをインストールし、人工知能業界のHello World! である MNIST を動かして、モデル間の速度を比べてみたりしております。そこで、 Chainer+MNISTの組み合わせで Raspberry Piと速度を比べてみました。 “AIの片隅で(12) Jetson NanoでChainer” の続きを読む

AIの片隅で(11) NVIDIA Jetson Nanoセットアップ

8月14日の投稿で、NVIDIA Jetson Nano到着、と書きました。しかし時はお盆。15日は作業を中断、本日再開であります。結論から言えば、特に大きな問題もなく、セットアップを完了し、CUDAが使えるという確認をとるところまで行えました。でも、細かい事を言えば、引っかかるところいろいろありました。 “AIの片隅で(11) NVIDIA Jetson Nanoセットアップ” の続きを読む