フェリー波之上

12年前の春先、僕はひとりで東京から沖縄へ渡りました。沖縄へは数えるほどしか(それも旅行ではなく学会で)行ったことがなかったし、沖縄県民になるなんて思ってもみなかったのです。それが琉球大学工学部にお招きいただくことになり、翌年にはまた思いがけず結婚することになって、妻が海を越えて島にやってきました。それから、海沿いの小さな集落に引っ越して、そこで子供たちが生まれたり。そんなこと、夫婦のどちらも考えもしなかったけど、一度しかない人生、つねに冒険旅行であるべきだ、と思うのです。

それで、そろそろどこか次のところへ行くのも悪くないね、と、あちこち次の職場を探してきましたが、熊本大学に採用していただけることになったのがこの年の初め。それから研究室を片付け、自宅を片付け、荷物をコンテナに詰めて九州へ送り、最後は車をフェリーに乗せて鹿児島へ渡ります。那覇と鹿児島はフェリーでだいたい25時間、一隻のフェリーが往復すると4日おきの運航になり、マルエーフェリーとマリックスラインで各2隻がローテーションで毎日運航になっています。

年度末だったこともあり、フェリーは大変混雑していて車両航送の予約がとれるのは1日だけ。那覇港を7時に出港なので、6時には埠頭にいなければ、ということで、朝3時くらいに起きて那覇へ。那覇から乗る人数はそれほどでもなかったけれど、出航前になるとフォークリフトが慌ただしく走り回ってコンテナを積み、僕らはその合間に誘導されてそれぞれ所定の位置に車を載せます。

午前7時、船が港を離れると意外なほど速く、那覇をあとにします。旅行の人もそれなりにいるけど、僕とおなじように島を離れるのかな、という人もちらほら。船尾で泣きそうになっちゃったり、泣いていたり。船はね、いいよね。

本部、与論、徳之島、沖永良部、奄美大島、と、各駅停車で鹿児島に向かうけれど、3月の終わりなので、島の学校を離任する先生や就職する卒業生の見送りで、どこの港もいっぱい。そのたびに船上の僕らもうるうるする。みんな、愛されているなあ… その脇でわーっとフォークリフトが集まってきてコンテナを乗せたり下ろしたり、車も乗ったり降りたり。荷役は見ていて飽きなかったです。

夜、奄美大島を出ると船内の照明も落ちて、そのあとは鹿児島までノンストップ。目が覚めると左舷に開聞岳がみえて、やがて右舷に桜島。

船はその速さも、揺れ方も、世界から隔絶される感じも(最近は Wi-Fi もとんでるし、けっこう携帯電話もつながったけど)いいよね。次は妻の車をのっけて、またフェリーで渡るか。

MacのiCloud drive syncが止まったら

学生さんといっしょに Keynote でスライド作ったりするのに iCloud べんりべんり〜って使ってるのですが、たまに同期が進まなくなっちゃうことがあって、むむむ、ってなってた。

で、ちょっと調べると bird っていうのが同期を担当しているプログラムのようだ。

なので、これをkill してやればOK.

% killall bird

いままで再起動したりしてたけど、これ、楽勝じゃん!

Linux の dd

Linux なマシンに USB でハードディスクをつないで消去しようとおもって dd したら、no space left on device になっても止まらなくて、わわわってなった。Ctrl+C も kill -9 も効かなくて、乱暴だけど USB のケーブルを抜いたら止まった…

正しいのはこれらしい。FreeBSD や Mac では ctrl+t で USR1 か何かが飛んで進捗見えるのだけど、status=progress いいですね:

dd if=/dev/zero of=/dev/sdb bs=10M conv=noerror,sync status=progress

FreeBSD 13

ちゃんと新しいものに移っていかないといけないなあ、と思いまして、FreeBSD 13.1-RELEASE を入れてみた。研究室では NAS とかを mount するのに FreeBSD では amd (am-utils) を、Linux と Mac では autofs を使っていたのだけれど、/etc/rc.d/amd が、ない…!

Removed the amd(8) automount daemon. Its functionality is provided by autofs(5)13f7dbe822d5 (Sponsored by The FreeBSD Foundation)

https://www.freebsd.org/releases/13.0R/relnotes/

ほんとだ、なくなってました。autofs のマップ、Linux と同じでええんかな、ぼちぼち試します。

Fediverseなるもの

Twitter がアレな感じになったおかげで Mastodonというのを触ってみたら、Fediverse というのがあるそうで、Wordpress のプラグイン (activitypub) というので接続できるらしい、ということを学んだ。

というわけで、テストテスト。これフォローしてると Mastodon のタイムラインに出たりするのかな。@yasu です。

ThinkPad P14s 買った

ここ数年はレーダーやってるおかげで、出先でFPGA設計をごりごりやることが多いわけですが、いままで使っていた ThinkPad T495 (Ryzen 5 PRO 3500U) だとちょっとパワー不足を感じることも多くて、P14s Gen2 AMD (Ryzen 7 PRO 5840U) というのを買いました。マイクロアーキテクチャが Zen+ から Zen3 ということで、なんだかえらくなった気分です。

で、EDA ツール使うのが目的なので、プリインストールの Windows には目もくれずに Ubuntu 20.04 LTS を入れるわけですが、いくつか忘れてたりしてはまったので、誰かの役に立つかも、ということでメモしておきます。

まず WiFi ですが、Realtek の WiFi 6 なチップが載っており、標準のカーネルではサポートされません。ありがたいことに GitHub で公開されている (https://github.com/lwfinger/rtw89) ので、説明の通りにインストールしました。ドライバ署名はできましたが、なんだかうまくロードできず、結局 BIOS で Secure Boot をオフにしてしまいました、くやしい。

Suspend/Resume は、これも BIOS で Sleep mode を Linux (suspend to RAM) にしてやらないとダメでした。あと、/etc/systemd/logind.conf で HandleLidSwitch とか HandleLidSwitchExternalPower とかを suspend にして、ちゃんと動くようになりました、このあたりはわりとハマった・・・

そんなものですかねえ、あと、裏蓋開けてメモリ増設したり SSD 交換したら、ネジが1本入らなくなってしまった・・・なんで? まあ、しっかりした作りなのであまり問題なさそうですし、あんまり開けたり閉めたりしないほうがよさそうなので、しばらくこのままいきます。Vivado とかがどれくらい速くなるかは、ま、そのうち。

さいきんのお仕事

なんか気がつくと blog もすっかり放置なので、たまには最近やってることでも書いておこうと思いました。そういえば沖縄にきて10年ですし。

本業はあいかわらず計算機アーキテクチャというか、custom computing とか reconfigurable computing とよばれることをやっているつもりです。すごく簡単に説明すると、みんなが同じハードウェアのコンピュータを使うんじゃなくて、やりたいことに応じたハードウェアをぱっとその場で手に入れて、より高速でより省電力なシステムを実現する、みたいな研究です。

これ、学生時代にやり始めたころはわりとぶっ飛んでる部分もあったのですが、最近はスパコンの人たちもちょっとずつこっちに流れてきて、そうすると、僕ひとりと学生さん数名でやってる研究室では、予算規模とか実装能力で全然太刀打ちできないので、さすがにしんどいなーと思ったり、まあ僕は僕で他の人のできないところを攻めればいいかーっていうことで、高速データ通信のハードウェアをごりごりいじってみたりしています。もちろん市販の製品を使うので、ものすごい新規性があったりするわけじゃないのですけれども、中身を理解してなくても使えてみんなそうやってるものを深く掘り下げて理解するの、めちゃめちゃ楽しいしそれがないと始まらない楽しい(あるいは、まわりの追随を許さない)こともいろいろあるなーと思っています。

あと、最近は学科のえらい先生にお誘いいただいて、短波海洋レーダーというのをはじめました。僕は無線とか全然わからないのですが、FPGAならちょっとだけわかるので、それでレーダーの送受信機を作っています。1台目は新潟大の屋上に設置した24MHz帯のレーダーで、こちらは新潟大の学生さんのオペレートで新潟の海を見ています。波長12m なのですが、まあ、アンテナはでかい。めっちゃでかい。

沖縄にちょっと来る前に納豆菌のゲノム読むプロジェクトのお手伝いをさせていただいたのですけれど、「まだ人類の他の誰も手にしたことのないデータ」が自分の Mac に入っている、ってめちゃめちゃ面白いな、ってそのときに思いました。納豆、毎日食べてる人は僕以外にも1億人くらいはいそうだけど、納豆菌のゲノム配列ならおれのMacに入ってるぜ、っていう人はそれまでたぶん、ミツ○ンとかタカ○フーズの研究の人で、配列はあるけど社外秘、みたいな感じだったんだと思いますが、それをオープンな形で、しかも当時出たばかりの NGS で読んでいくの、めちゃめちゃ興奮しました。ただ、あの頃の NGS は長いリードがとれないから納豆菌のリピート配列を越えられなかったんじゃ・・・(そのあと鎌田先生が僕のホネをひろってくれました、PacBio のシーケンサすごい。)

あ、それで、すっかり話がそれましたが、昨年から今年にかけては新しく 13.5MHz 帯のレーダーを作らせていただく機会を得ました。静岡は御前崎に設置で、年末は海辺でヘルメットに作業着安全靴着用でひたすらアンテナ組み立てておりました (立てたのは主に学生さんたちです、すごいよみんな。) 御前崎からだと駿河湾のほぼ全域が見える、という目論見ですが、いろいろの事情で送受信機の調整と検査は年明けに延びてしまって、今回はそのために教員二人だけで出張。連日延々といろいろ直したり測定したり議論したりデバッグしたり。

デジタルフィルタもフーリエ変換も交流回路も電波もなにもかも、学生時代に全然わからなくて避けて通ってきたことなんですけども、ちゃんとやっときゃよかった、という気持ちでいっぱいになりつつちょっとずつ勉強していく日々です。めっちゃたのしい。

学生の皆さんは「これ全然わかんないし、なんの役に立つんだよ!」っていうこと、けっこうたくさんあると思うんですよね、でもできれば踏ん張ってほしいし、少なくとも「こういうことがあるのか・・・」ということは覚えておいてほしい、それさえ知ってれば、必要になったときに、なんとかなるんだ、たとえ学生時代に単位が取れなかったとしても!

あと、素粒子とかは全然わかりませんが、CERN でご活躍の先生にお声がけいただいて、加速器のデータ収集システムとかもちょっと始めています。物理ぜんぜんわかんないんですけど、僕がちょっとだけできる計算システムの設計技術が、人類が新たに手に入れる知識の手助けになるのとか、めっちゃかっこいいじゃないですか。

生物も海洋も物理も全然わかんないんですけど、

最高のエンジニアリングの先にある新たな人類の地平線、みたいなの最高にクールだし、そういうのをずっと見ていきたいなあ、というのが、最近ちょっと考えていることです。

ThinkPad x61 のファン

ThinkPad x61 をしばらく家でサーバとして使っていたのだけれど、起動時に Fan error が出るようになってしまった。ファンは回っているし、Esc 連打で起動するのだけど、さすがに10年を超えているし、別の機材に役目を交代させました。

で、サーバとして使っている間はずっとフタ閉じてたのですが、久しぶりに引っ張り出してみるとキーボードも本体の作りもしっかりしてるし、やっぱり捨てるにはもったいないので、とりあえず Fan error だけでもなんとかしようと。

あけてみると、外から見えているヒートシンクのところとは別に、パームレストの下、PCカードスロットの右に小さいファンがついていて、これが固着している模様。なお、その隣はモデム (!) と WiFi/Bluetooth モジュールです。もう一つ PCI っぽいなにかが出ているのは、WiMax 用のスロットな模様。

非常に薄いファンなのですが、外して眺めると、3箇所金属のツメでとまっていたので、ラジオペンチの先でぐいっとやると、あきました。ファンの羽根の部分もえいやっと引き抜いたら、抜けた。

で、軸受けのところにシリコンオイルを軽く挿したら、ファンが指で軽く回るようになりました。電源を入れたときにも回る模様。その日は Fan error 消えなかったのですが、後日ちゃんと消えました、しばらく子供用にでも使おうと思います。

Ultra96v2 にファンをつけた

新しい Ultra96v2, ファンレスになって静かだわー って思ってたけど、かなり熱くなりますね。ファンをつけるための電源は出ているので、つけましょう。回路図をみると、ファンは 5V なので、いつも使っているNidecの F310R-05LLC にしました。

用意したものは以下の通りです。

– ファン (Nidec F310R-05LLC)
– M2.6の六角スペーサー (20mmだけどたぶん25mmくらいがよい)
– 3mm x 16mm のトラスタッピングねじ (ファン固定用)

基板の4隅のネジを外して一旦ヒートシンクから外してハンダ付けします。TP25が5V, TP26がGNDです。

もともとついているスペーサーだとちょっと短いので、手元にあった 20mm の M2.6 スペーサーに付け替えました。ネジが長いので、ヒートシンクから基板側に飛び出していますが、基板に接触はしていないことを確認しています。自分で交換する時は気をつけましょう。なお、F310Rをつける場合、20mm でもまだちょっと短いです。

3mm x 16mm のトラスタッピングねじで、ヒートシンクの溝の部分にファンを固定します。

下から上、ヒートシンクに向かって吹き付ける向きでつけています。スペーサが短いので、机とファンの間の隙間はネジの頭の分くらいになってしまいましたが、ファンなしと比べると各段に冷えています。やったー!

Alveo U50のHBM

ひきつづきAlveo U50を動かすお話です。以前、FixstarsさんのところでU50のXDMAを動かした記事 を拝見して、同じように UltraRAM を接続して Core i3-6100 + DDR4-2133 Dual channelで動かしてみたら、こんな感じでした。

Write Performance 
** Average BW = 8388608, 10296.580078
Readback and Compare
** Average BW = 8388608, 4462.804199
Read Performance
** Average BW = 8388608, 9191.814453

Fixstars さんの POWER8 なホストでは 12GB/s とか出ているので、この差は CPU パワーだったりメモリシステムだったりするのでしょうか。単に DMA 転送しているだけだと CPU 使用率がスカスカで、すぐクロックが下がって DMA まで遅くなってしまうので、裏で yes > /dev/null してクロック周波数を維持しています (本当はちゃんとクロック周波数のコントロールを設定すればいいのですが。)

それで、HBM を XDMA に接続するのはなんとなくめんどくさそうで二の足を踏んでいたのですが、そろそろ本気出さないといけない感じになってきましたので、とりあえずやってみることにしました。方針としては、

  • あとで並列アクセスをする気がするので、とりあえず HBM IP コアの global addressing の機能はつかわない
  • とりあえず 1ch、512MB だけ動かす
  • HBM reference clock (100MHz) は SYSCLK3  (BC18, BB18) から
  • それ以外のクロックは SYSCLK2 (G16, G17) と、それで駆動する MMCM から
  • HBM IP の AXI インタフェイスは MMCM で 450MHz を作ってそれで駆動

ということにしました。いろいろと紆余曲折があって、今日も半日くらい使ったのですが、ブロックデザイン全体・HBM IP のチャネルの設定・アドレスマップは以下のようになっています。


CLK100 とか RST100_N はブロックデザインの外側の RTL で、CMC_CLK から作っています。アドレスマップをみると unmapped slaves があるので、あれ、と思う方もいらっしゃるかもしれませんが、global addressing を切ってしまうと、8つあるメモリチャネル (512MB) を半分ずつにした 256MB の (pseudo channel に対応した) 領域が 16あるAXIインタフェイスと1:1の関係になるようで、SAXI_00 だけでは正しく動作しませんでした。転送速度を UltraRAM のときと同じように測定すると、

Write Performance
** Average BW = 536870912, 10075.326172
Readback and Compare
** Average BW = 536870912, 4533.174316
Read Performance
** Average BW = 536870912, 9016.518555

ということで、ひとまずバンド幅はちゃんと出ているようですが、AXI Interconnect を性能側に振った設定にして、出力の register slice などを on にしないとタイミングが meet しなかったので、左右両スタックの HBM をこのまま 16ch + 16ch で AXI interconnect に直結するのはちょっと性能的に厳しそうで (AXI interconnect のポート数の制約もあるし) 、やはり global addressing を利用するのが賢いのかなあ、という気がしています。