30-Jul-2023
[GPU届きました(4)]

Windows Terminalの文字化け以外にも、エクスプローラでファイルやフォルダをマウスの右ボタンでドラッグすると画面が点滅する現象が起こることが判明しました(動画)。流石にこれは…初期不良?

代理店/販売店と連絡を取ってボードを返送することになるので、RX6400なボードは取り外すことにしました。今まで使ったことがなかったi3-13100内蔵GPU(Intel UHD Graphics 730)はどんな性能かを知るべく、この状態でオクトパストラベラーⅡやソフィーのアトリエ2を簡単に動かして遊んでいます。HD(1280×720)解像度でエフェクト控えめなら十分遊べるかなというのが率直な感想で、これはこれで良い気がします。

ただし、RX6400で動いていたOpenCL版distributed.net clientが、UHD Graphics 730だとError code -11, message: Program build failureで全く動きません(Build Logの表示もなく、おそらくCL_BUILD_PROGRAM_FAILUREが起こっていそうなのですが原因は分かりません)。RX6400だとCPU(252.56Mkeys/s)の10倍近い2898.24Mkeys/sというレートを叩き出すようですが…流石にそこまで行かなくとも、CPUに近いくらいの性能を出せるのではないかと期待してしまうんですよねえ。

折角なので、i7-7700(Intel HD Graphics 630)を載せたLinux機でもdistributed.net clientを試しています。こちらはCPUで225.70Mkeys/s、OpenCLで198.35Mkeys/sとなっていました。CPU版とOpenCL版を同時起動してもお互いの足を引っ張るようなことはなさそうなので、GPUの支援は非常に有用と言えそうです。

RX6400、もし初期不良だったらどうしましょうかね?流石にトラブルの起きた物と同じモデルで交換というのは縁起が悪いので、返品返金を希望してIntel Arc A380かGeForce GTX1630に乗り換えるか、全く載せないという選択肢もアリでしょう。

まったく、こんなトラブルで時間を食っている余裕は無いんですけどねえ…56.5kg(21:55)

26-Jul-2023
[GPU届きました(3)]

ASUS Pro H610M-C D4-CSM + ASUS Phoenix Radeon RX6400 4GB GDDR6の組み合わせでWindows11を動かすとWHEA-Logger event 17の警告が延々と発生する事態は、どうにか解決しました。以下の二つの設定が必要です。

UEFI Setupの設定変更だけではWindows起動時に発生するWHEA-Logger event 17が残るので、Windows側の設定と組み合わせる必要があります。

t20230726a.png

しかし…

t20230726b.png

Windows Terminalのコマンド操作でOpenBSD機へファイルをコピーしようとしたら文字化けを豪快に起こしてくれました。この後にイベントログを確認しても特に問題は見られなかったのですが、UEFI setup/Windowsの設定変更を行ってもまだまだ油断はできないようです。とはいえ、バス周りがちゃんとしていなければデバイスの安定した動作は望めないので、これは大きな前進と言えます。解決のためのヒントを下さった、@sleeping_coelacanthさんに感謝。

一方、販売代理店(テックウインド)から今日届いたメールのお返事は、CMOSクリア+ドライバ更新+OSのクリーンインストールを勧める内容でした。返事が来るまでの間にASUSへ相談しているのかどうかは不明です。

Windows Terminalにおける文字化けは、Windows Terminalでのレンダリング設定があるようなのでこれをいじって様子を見ることにします。今インストールされているバージョン1.17.11461.0においては、新しいテキストレンダラーを使用する("AtlasEngine")/ディスプレイの更新時に画面全体を再描画する/ソフトウェアレンダリングを使用する、全てoffとなっていたので…まずはAtlasEngineを使ってみるとしましょう。56.1kg(22:05)

23-Jul-2023
[Orange Pi Zero3届きました]

本当なら集中線エフェクトを入れて「どどーん」とやりたいものですが。

timg_20230722_060048_223.jpg

LPDDR4(1.1V)が搭載されているということなので、DDR3L(1.5V/1.35V)向けのディスクイメージを動かそうとすると動かない以前にボードを壊す可能性があります。それでもPMICの設定は見てみたいので、07-Jul-2023のdiffにあちこちwhile(1);を突っ込んで不要な部分を動かさないようにした上でレジスタダンプを取ってみました

Orange Pi Zero3でもAXP313AのREG 10H〜17Hの設定はMango Pi MQ-Quadと全く同じ状態になっており、DRAMに電源を供給するレギュレータ(DCDC3)のデフォルトは900mVです。で、これどうしましょう(何を)。57.6kg(22:20)

22-Jul-2023
[GPU換えました(2)]

WSL2からGPGPUできるらしいと聞いたので、Debianのパッケージ(これに限らず、最近のWSL向けLinux distroはWSL1ではなくWSL2を前提として配布されているようでWSL1の設定だと起動できません)をインストールしてWindows Terminalを開いてはみたのですが…

20230722a.png

何やら謎の激しい文字化けが。気になったのでWindowsのイベントマネージャを見てみると

20230722b.png

WHEA-Loggerによるイベント17なる警告がずらーーっと並ぶ事態に。こんなのGeForce GT1030使ってた頃には全然見なかったんですけど。

この辺の操作を試してはいるのですが、何も改善しません。

どうもIntelの12世代以降とAMDのGPUとの食い合わせが悪いのかも?って話が出ているんですが、それ聞いてたら電源と一緒にIntel Arc買ってたかも。とりあえず、現在起こっている事象をサポートに連絡して反応待ちです。56.7kg(05:50)

20-Jul-2023
[GPU換えました]

2020年5月くらいからGeForce GT1030を使ってはいたのですが、オクトパストラベラーⅡは問題ないものの、ライザのアトリエ2やソフィーのアトリエ2は街やフィールド等の移動で時折異様にガクつく現象が気になっていたのでここらが交換時かなと。折角なのでIntel Arc A750の8GB物を載せてAI関連のコードを動かしてみたかったのですが、そんなリッチなGPUを動かせるだけの電源容量はないのでRADEON RX6400にしました。

RX6400はいくつかのメーカーからボードが出ていますが、ASUS Phoenix GTX 1650 RX 6400 Fan Replacementがあるという理由でASUSのボードにしています。多分他のメーカーもきちんと探せば交換用のファンを見つけることはできるのでしょうけど、簡単に探した範囲では見つけられなかったので。

GPUいじりということで、Linux機ではOpenCLを触っています。IntelのCPU用OpenCLランタイムをUbuntu 15.10で使うを参考に、apt-get install clinfo intel-opencl-icd ocl-icd-opencl-devで必要なパッケージを入れて、/dev/dri/renderD*のパーミッションを適切に設定しておきます(ユーザグループrenderに加わるのが早いかも)。clinfoで問題が無さそうなら、Examples for OpenCLをCMakeしたりOpenCLを使ったHello World(C言語編)をcc -lOpenCLでコンパイルするとか、OpenCL-Benchmarkで性能を見る等できるようになっているはずです、多分。

以前からGPGPUって何だろうどうやって触れるんだろう機材の調達から実行環境の用意までとっても難しいんじゃないのと思っていたのですが、案外簡単に動かせたので今後は色々いじってみようと思います。56.9kg(06:45)

16-Jul-2023
[U-bootおぼえがき]

とりあえずU-BootのAXP313Aドライバ(ボード固有…Mango Pi MQ-Quadの設定は一旦抜いとく)のパッチを送るにもどうしたもんかねと四苦八苦していたのがこの一週間。結論から書くと、Patman patch managerにあるpip install patch-managerはせずに直接tools/patman/patmanを、Raspberry Pi Desktop for PC and Mac(2022-07-01-raspios-bullseye-i386.iso)上で動かすという方法を使いました。なんとなくですが、Python 3.9.2と古めのPythonを必要としていそうな気がします。

とはいえこれもこれで一筋縄ではいかず、apt-get install libgit2-dev; pip install pygit2==1.6.0とし、libgit2-dev(1.1.0)に合うpygit2をインストールする必要があります。pygit2のsrc/types.hを見るに、

と対応するlibgitのバージョンが固定されている(〜以上、という要件ではない)点に注意が必要です。

なお、patch-managerがpatmanという名称になっているからといって、pip install patmanとしてはいけません。こちらのpatmanは全く別物で(Easy Client Library for Pythonと言われても何をするものか分からない)、さらに依存するパッケージを大量にインストールする/インストールしようとしてエラーを起こすので、pip install patmanとしてはいけません(大事なことなので二度書きます)。

あとは、tools/patman/patman -c1とすればパッチをファイルの形にまとめたりコードスタイルのチェックをしてくれるので、問題ない形に直したら投げるだけです。今回はpatman sendを使わずにメーラーで送りましたが…お返事来てますね(書かなきゃ)。

Orange Pi Zero3についてはGoogle Driveにディスクイメージが置かれ、Androidのソースコードも出てきていますが、mainline U-Bootをどのように改造してLPDDR4に対応したかという情報は今のところ見当たりません。57.0kg(21:00)

09-Jul-2023
[これは…]

Orange Pi Zero3が出ましたね。Allwinner H618とAXP313A、1GB/2GB/4GBのLPDDR4を載せたやつ。

各種ディスクイメージ、これを書いている時点では英語版のページではGoogle Driveへリンクしているもののまだ何も揃っていないようなので、中国語版のページからBaidu Drive経由で引っ張ってくる必要があります(それでもAndroidのソースは無い)。とりあえず入手したOrangePi_Zero3_Android12_v1.0.tar.gzとOrangepizero3_1.0.0_debian_bookworm_server_linux6.1.31.7zを覗いていますが、AndroidのイメージはAllwinnerのBSPを使ったboot0版のU-Boot、Debianのイメージはmainline U-Bootで起動しているように見えます。

boot0版のU-Bootからは30-Jun-2023のコードを使ってSDRAMのパラメータが取れます…とはいえ、既にメモリの初期化コードやPMICドライバの入っているmainline U-Bootが動いているのを見るに、これがマージされるのも時間の問題という気がしています。Debianのディスクイメージからはsun50i-h616-orangepi-zero3.dtbを拾って、MQ-Quadのdevice treeの参考にするとしましょう。

…さてどうしましょうかね、4GBのメモリを持つAArch64なボードがお安く買えるのは確かなので手にしておきたいのは確かなのですが。56.0kg(09:05)

07-Jul-2023
[ついカッとなって(3)・Mango Pi MQ-Quad (Allwinner H618)を(4)]

18-Jun-2023にabricot(Windows)/framboise(OpenBSD)の組み換えを行いましたが、framboiseの組み換え後にSSDから起動しない状態が散見されるようになり、boot時のdelayを3秒から増やして様子を見ていました。4秒では多少減った感じがあり、5秒では問題が解決したように見えるものの、8年以上使っていることもあり何かの拍子にSSDが壊れてしまっても困りますのでCrucial MX100(512MB)→Crucial MX500(500MB)に交換することにしました。お財布がああああああああ軽くなるううううううううう

とはいえ、まだMX100が壊れたと決まった訳ではありませんから、secure eraseをかけた後にいつ壊れても困らないような用途で使うことになると思います。

SSDを交換後にOpenBSDの再インストールを行い、U-Bootのビルドを行ってはみましたが、速くなった感じは全くありません。度重なるOpenBSDのバージョンアップで蓄積していったゴミを一掃できたことと、/etc/mygateの設定を忘れていたためにautoconfなIPv6でのみネットが繋がるという不思議な現象を体感できたことが収穫になるでしょうか。

Mango Pi MQ-QuadのPMIC(AXP313A)、初期値がどうなっているかが気になったのでこんなコードをaxp313a.cに突っ込んで、レジスタダンプを取ってみました。DRAM認識処理の前にaxp_init()が呼ばれますから、デフォルトの状態を示しているという理解で良いはずです。以下のレジスタを見ておきます。

REG 10H:电源输出开关控制寄存器
0x1f→全て(DLDO1, ALDO1, DCDC3, DCDC2, DCDC1) on
REG 13H:DCDC1电压设置寄存器
0x28→500mV+40×10mV=900mV
REG 14H:DCDC2电压设置寄存器
0x28→500mV+40×10mV=900mV
REG 15H:DCDC3电压设置寄存器
0x28→500mV+40×10mV=900mV
REG 16H:ALDO1电压设置寄存器
0x0d→500mV+13×100mV=1800mV
REG 17H:DLDO1电压设置寄存器
0x1c→500mV+28×100mV=3300mV

Mango Pi MQ-QuadはDLDO=3.3V, ALDO1=1.8V, DCDC1(SYS/GPU)=0.81〜0.99V, DCDC2(CPU)=0.81〜1.1V, DCDC3(DRAM)=1.5Vとする必要があるため、DCDC3が900mVでは問題が発生しても当然と言えそうです。なお、DDR3Lのチップ(ELPIDA EDJ8416E6MB/Micron MT41K512M16)が搭載されているのでDCDC3は1.35Vでも良いはずです(実際、1.35Vの設定でU-Bootが起動することは確認しています…OS等の動作は未確認です)。

Allwinner H616を搭載するOrange Pi Zero2については、SEC K4B4G1646E-BYMA(DDR3L)が搭載されていますが、DRAM電圧の設定は1.5Vになっています。その一方で、X96 MateはMicron MT41K1G4(DDR3L)を1.36Vで動かしています(U-Boot/Linuxの電圧設定に違いはありません)。評価用ボードと量産品とで、作り込みが違うとでも考えておくのが良いのでしょうか。

パッチの相談に関しては未だにお返事が来ないので、自分で然るべき場所へ投げてみるしか無さそうです。55.7kg(22:00)

01-Jul-2023
[Mango Pi MQ-Quad (Allwinner H618)を(3)]

PMIC(AXP313A)の操作ができていない→SDRAMの電源電圧が正しくないんじゃないかな→じゃあPMICドライバとりあえず書いてみますかね→そうなるとボードの設定やら何やら細かい部分も用意しないといけませんね(うぅ面倒な…)→とりあえずこんな感じかなー?と足掻いたら、なんか動くようになっちゃいました※パッチは然るべき人に送って、今後どういう扱えば良いか相談しています(返事が来るかどうかは知らない)。

意外なことに、U-BootのPMIC操作ってDevice Treeの記述を見ていないんですね。arch/arm/mach-sunxi/{board.c,pmic_bus.c}越しにやっているので、ここを直さないと動きません…逆に言えば、U-Bootが動いてもOSが動くかどうかはDevice Treeの内容次第ということになります。

Yuzuki ChameleonのDockerイメージを動かすためにDockerをDebian-12機に入れて気付いたのですが、07-Aug-2022の設定と相性が悪いようで、QEMU上の仮想マシンから一切の通信ができなくなりました。Dockerで作業する用事が無くなったのでとりあえずapt-get remove docker.ioで解決したものの、Dockerの使用頻度が増えた場合は適当な対策を考えないといけません。55.2kg(18:35)