土木でエレキ(21) 台風19号、橋梁崩落、損傷

今も必死で復旧作業に取り組んでいらっしゃる皆さま方、非常にお疲れのことと思います。くれぐれも事故の無いようお気をつけください。そして、あの大雨の夜の闇の中で各地で悲劇が起きていたことがようやく判明してきたようです。未だ全貌は分かりませんが、亡くなられた方が増え続けています。痛ましいことであります。

あまりに多数の河川の多数の箇所で決壊が起きたようです。決壊にいたらないまでも越水したところはさらに多いようです。今も水が引いていないし、まずは堤防の復旧と排水を急がないとならない状況だと思います。しかし、ニュースを見ると、橋梁の流出、落橋、損傷もまた多数。橋の復旧は堤防の後でしょうが、取り急ぎ場所だけでも書きとめておく必要を覚えました。ニュースになったような鉄道橋、道路橋あたりを中心として、後日の控えとして列挙しておきます。あまり増えてほしくはないリストですが、何か判明すればまた戻ってきて書き込みたいと思います。(追記10/20)

“土木でエレキ(21) 台風19号、橋梁崩落、損傷” の続きを読む

ぐだぐだ低レベルプログラミング(14) 変数アクセスのコードを眺めてみれば2

前回は、Cコンパイラの吐き出した単純な大域変数へのメモリアクセスのコードを眺めてみました。今回は、大域変数でも構造体と配列へのアクセスを見てみます。今回も環境は、Raspberry Pi 3 model B+上のRaspbian OS、コンパイラはgcc 8.3.0 です。なお、生成されたアセンブリ言語コードの読みやすさを優先に、最適化オフ、デバッグ情報ありです。

“ぐだぐだ低レベルプログラミング(14) 変数アクセスのコードを眺めてみれば2” の続きを読む

ぐだぐだ低レベルプログラミング(13) 変数アクセスのコードを眺めてみれば

第10回でgccがメモリアクセスするのにどのようなコードを吐き出しているのか確認しようと考えたものの、第10回から第11回第12回とずっと回り道をしてしまいました。今回ようやくcコンパイラの吐き出すメモリアクセスのコードの確認に入ります。例によって環境は ラズパイ上のRaspbian, コンパイラはgcc  (Raspbian 8.3.0-6+rpi1) 8.3.0 です。

“ぐだぐだ低レベルプログラミング(13) 変数アクセスのコードを眺めてみれば” の続きを読む

ぐだぐだ低レベルプログラミング(12) オブジェクトファイルその2

前回は、オブジェクトファイルと言いながら、絶対番地のHEXファイルなど、ついついFlashライタでもなければ使わないようなものにフォーカスしてしまいました。今回は、心を入れ替えて(どう?)、本道のリンク可能なオブジェクトファイルを調べてみたいと思います。コンパイル、アセンブルした後のオブジェクトファイルとリンクした後の実行可能なオブジェクトファイル、例によってRaspbian上のArmの32ビットコードで見てみます。

“ぐだぐだ低レベルプログラミング(12) オブジェクトファイルその2” の続きを読む

トホホな疑問(12) Python3移行、文字列数値変換にハマる

昨日に続いてPythonネタです。数か月前にPython3へ移行始めた件、何かの投稿の中に書きました。今年いっぱいでPython2.7のサポート終了、来年からはPython3に天下統一、ということで急に不安になったがためですね。ま、もともとそんなに特殊なものは書いていなかった(筈)なので、順調に移行(というか手動移植による両用化)できていると思っていたのです。が、やっぱりね、ハマりました。それもとてもプリミティブなところに。

“トホホな疑問(12) Python3移行、文字列数値変換にハマる” の続きを読む

トホホな疑問(11) Python、空listの繰り返し

普段、あまりモノを考えずにPythonのコードを感覚的に書いているからだと思うのですが、時々、ハマります。今回は、便利な *演算子、掛け算だけでなく、文字列やリストにも使えるアレ、を考え無しに空リストに使ってハマった件を書かせていただきます。ま、後で見てみれば馬鹿馬鹿しい、けれども、ハマったときには見えていない。。。

“トホホな疑問(11) Python、空listの繰り返し” の続きを読む

ぐだぐだ低レベルプログラミング(11) オブジェクトファイルその1

前回、コンパイラの出力を元とするオブジェクトファイルのアセンブリリストをながめておりました。そこで現れてくるメモリアクセスを読み解くときには、セクションなる存在を無視することはできません。ただ、セクションなるもの、多面的な顔を持っていますな。全てを一度に知ろうとしても膨大すぎるかも。多分、列挙する前に速攻で忘れそうです。裏では活躍されているのでしょうが、実際、とりあえず知らんでも済むセクションの方々も多数。しかし、だいたいセクションとは何に含まれておるのかや?その在りかを知らずしてセクションの理解には至らぬであろう(本当か)。今回はその手前のオブジェクトファイルについてぐだぐだ書いてみました。 “ぐだぐだ低レベルプログラミング(11) オブジェクトファイルその1” の続きを読む

ぐだぐだ低レベルプログラミング(10) アセンブラ・リスティング

前回に引き続き、gasを用いてArmのアセンブラやっていこうと思ったのです。個別の命令をいくつか見てきたので、今回は、メモリアクセスに進もうかと。そこでちょっと魔が差しました。最初からアセンブラでサンプルを書くのではなく、gccがどんなコードを吐いているのか「参考」にさせてもらうのはいかがかと。Cであれば、大域変数、ローカル変数、単純変数、配列、構造体、いろいろあります。そういうモノどもをコンパイラはどんなコードで扱っているのか調べておこうと。でもね、その前に、大体逆アセンブルとか、メモリとか、セクションとかの調べ方押さえておかないと意味わかんなくない、ということに思い至りました。 “ぐだぐだ低レベルプログラミング(10) アセンブラ・リスティング” の続きを読む

土木でエレキ(20) 台湾橋梁崩落

昨日10月1日の台湾の橋梁の崩落事故、衝撃でした。かなりな数の方が亡くなる大事故となってしまったので日本のニュース番組でもあちこちで取り上げられていました。御覧になった方も多いのではないかと思います。なんと言っても、見通しの良い昼間、複数台のカメラが監視している目の前で崩落が起きました。実映像のインパクトは半端ないです。 “土木でエレキ(20) 台湾橋梁崩落” の続きを読む

ぐだぐだ低レベルプログラミング(9) Armらしい命令その2

前回は、Armらしい命令ということで、オペランドの取り扱いで特徴でてるじゃないかと思われるところ数点を取り上げさせていただきました。今回は、フラグですね。如何にもArmっぽいフラグの取り扱いをする命令です。 “ぐだぐだ低レベルプログラミング(9) Armらしい命令その2” の続きを読む

ぐだぐだ低レベルプログラミング(8) Armらしい命令?

前回は、.syntaxとかコメントとか、Armのアセンブリ言語をgasの上で書くときにちょっと「引っかかった」あれこれをいくつか投稿いたしました。今回は、Armのアセンブリ言語命令そのもので、ちょっと独特だな~と思った部分をメモっておきたいと思います。 “ぐだぐだ低レベルプログラミング(8) Armらしい命令?” の続きを読む

ぐだぐだ低レベルプログラミング(7) .syntax, コメント、ローカルラベル

一歩引いて眺めたら、アセンブラなんて、どのCPUでも同じようなもんだ、と思います。最初に何か一つのCPUでアセンブリ言語を覚えたら、後は以下同文的に、いろいろなCPUで書けるんじゃないでしょうか(個人の感想です)。ただ、実際にコードを書く段になると、CPU毎の違い、アセンブラ処理系のクセなど「細かい」ところが気になります。また、そこを理解しないと、やりたいことは分かっていても、実際には「どう書いたら良いかね」と手が止まってしまうもの。このところ、不慣れなArmのアセンブラに取り組んでいるので、他のCPUなどから移ってきたときにちょっと戸惑うポイントをメモって行きたいと思います。使用するアセンブラは今回は gas (コマンド名的には as )です。 “ぐだぐだ低レベルプログラミング(7) .syntax, コメント、ローカルラベル” の続きを読む

AIの片隅で(17) n,c,h,w,k,p,q,u,v,r,s なんのこっちゃ?

前回、cuDNNのサンプルプログラムを動かしていて、Jetson nanoでは残念ながら動かないところがある話を書きました。しかし、それ以上に分からなかったのが、サンプルプログラムの引数です。こんな感じ。

-c2048 -h7 -w7 -k512 -r1 -s1 -pad_h0 -pad_w0 -u1 -v1

まあね、これがコンボリューション・レイヤの計算のための引数であると分かっているので、cはchannel、hはheightなどと想像も多少はつくのです。しかし、何だか分からない引数もあり。多分、AIプロの人はこういう記号を見ただけで分かりあえるのかもしれません。しかし、私などは、まず記号の使い方からちゃんと調べて頭に入れて置かないとダメだな、と思い至りました。 “AIの片隅で(17) n,c,h,w,k,p,q,u,v,r,s なんのこっちゃ?” の続きを読む

トホホな疑問(10) cuDNN, サンプル動かないのもある

Jetson Nano楽しく使っております。JETPACK SDKという名のもとにインストールされているライブラリなどを順次確かめてみてもおります。今回は、DNN用のcuDNNというライブラリのサンプルプログラムを動かしてみていたときの疑問です。まあ、インストールイメージに含まれていたソースと言えども、必ずしも全てがJetson Nanoでは動かない、というだけのことなんでありますが。動かす前に気が付かないでいると、動かした後で何で?となるのです。 “トホホな疑問(10) cuDNN, サンプル動かないのもある” の続きを読む