2021年5月11日火曜日

小ネタ

 西暦2021年なんだが!? 440Mbps対応エリアなんだが!? 4桁も落ちるとかベストエフォートふざけんなし。。。

 ウェブの回覧には支障ないとかそんなアホな。埋め込まれた画像1枚読み込むのに0.16秒かかるんだぞ。

***

 World of GunsのFN SCAR、16と17で別扱いなんだな。ゲーム内の操作もだいぶ違う。

 アメリカの民間市場で新品のSCAR買ったのに削った(加工した)跡が付いてるぞ、みたいな話題どっかで見た気がするんだけど、どこで見たか思い出せない。World of Gunsにはそれらしい傷跡は見えないが。軍用をモデルにしてるのならそもそも無いか。 確か欧州の銃規制(単発銃なら規制がゆるい)の関係で弾倉を挿入できなくするインサートが入ってて、アメリカに輸入した時点で削り落とす、みたいな話だったような気が。

 G36ってバレルの固定変なやり方だな。そりゃー命中精度云々言われるよな、みたいな感じ。

***

 僕が読みたいのは異世界召喚現代兵器チートで俺TUEEEじゃなくて、まったりスローライフみたいなやつなんだよ…… RQ-11で飛び回ったり、ときどき7.62mm持って狩猟クエストこなしたり、たまに害獣駆除クエストこなしたり、救援要請が入ったらUH-60で駆けつけたり、ちょっと遠出するならV-22使ったり、ヤバそうになったら155mmやGLSDBを要請したり。そういうスローライフを……


 将来的に兵站負荷の軽減を目的として金属積層造形とかが前線に配備されるようになったら、現場でいろいろ作れるようになるはず。例えば映画S.W.A.Tに出てきたエイリアンの爪みたいなやつを、軍の前線でも作れるようになる。今必要な装備品を、1週間くらいで。本国に伝えて企画会議やって試験やって評価やって……みたいな速度感でなく。

「魔法陣って形を書くだけで使えるの? じゃぁ金属積層造形で集積度高く作ったらすげー強い武器作れんじゃね!? これで勝つる……ッ!!」

 DMGなら積層造形で立体的に作ってレーザーで彫刻してターニングで形整えたりできるのでつよそうだなって(小並感


 積層造形で内側まで魔法陣を超高密度に書き込んだチタン製の155mm砲弾型の弾体にガイダンスキットを取り付けて敵陣へ撃ち込んでエクスプロージョンッ!! 爆裂魔法って、どこで発現するんだろう? 表面から出てくるなら積層造形で密閉構造を作れば破壊力マシマシできそう。

 いくら前線で作れるとはいえ、積層造形は時間がかかるからなぁ。偵察部隊とか活躍させて時間稼ぎする必要がある。ま、チート主人公の俺TUEEEと違って、一人で全部やる必要はないから、うまいこと人員を配置して偵察とか遅滞とかやればよかろう。1発も撃たずに帰ってくる偵察隊とか、僕の好み。ま、艦砲射撃要請するみたいなシーンも好きなんだけどね。そういうシチュエーションが描かれてる作品ってあんまり無いので、もっと出てこいや!という願いを込めて。

***

 戦闘機が使うFox-1とかFox-2とかFox-3のコール、1から3まで順にセミアクティブ、熱追尾、アクティブ、の意味らしいんだけど、どうも技術の採用順に番号が伸びてるっぽい。もっとも、空軍と海軍で意味が違う、みたいなヤバそうな話題もあるんだけど。

 で、順当な技術発展で行けば、CEC(EoR)がFox-4になるんか? とか思ったり。まぁ、「CECで撃ったから気をつけろよ」と言われても、何に気をつければいいのやら。データリンクでちゃんと流れてれば、F-35であればTDSに弾体と目標と予想軌道を表示して、自分はそこに近寄らないように、みたいにできるのかもしれないけど。

***

 某機構のコーディングガイドラインのPDF読んでたら、適切な例として if (!ptr) { delete ptr; } みたいなコードが書いてあったわけだが、このコードは何を期待しているんだろう? メモリリーク対策みたいなコード例で出てくるんだが。


 メモリの動的確保、Hoge *const fuga = new Hoge();みたいに確保すると、普通に使う分にはポインタを書き換える危険性が無いので安心だけど、delete fuga; fuga = 0;みたいなコードがエラーになるので、二重開放とか解放済みを参照する危険性が出てくる。かといって「解放済みですよ」みたいなフラグを別に持つのも、今度はそのフラグをどうやって保護するかという問題があるし。

 結局「動的メモリ確保なんてやるな(やるなら初期化時でだけ確保して開放するな)」という組み込みガイドラインによくあるやつに従うのがいいんだろうか。動的開放禁止ルールは単純なフラグメンテーション対策以外や非決定的対策以外にも、ポインタをconst化できるメリットが強そう。

***

 Cortex-M4のSIMD、arm_math.hにC実装が入ってるのでちょっとした動作確認はPCでできるんだけど、一部の命令は実装されてなくて不思議。結局実機で走らせなきゃいけない。Keilのドキュメントもいまいち分かりづらいしなぁ。QEMUでNucleoボード使う例もあるようだけど、さすがにそれは大げさかなって。Eclipse必要みたいだし。

 とりあえずざっくりした動作確認だけやるなら、必要な命令は自分で実装してみて、動きそうなら実機で走らせてみる、って感じかなぁ。分岐命令とか使うわけじゃないし。


 ためしにarm_cmplx_mult_cmplx_q15で1024ポイントの複素数の積をやってみたら、108us@170MHzくらいだった。1組の複素数の積を計算するのに18命令(ループ処理含む)くらいか。arm_cmplx_mult_cmplx_q15はimに0.5くらいのオフセットが乗ってるっぽい。

 自分でSIMD実装してforループさせたら114us、8ブロックずつ回すようにしたら95us、reとimに0.5のオフセットを許容して81us、くらいだった。付属のソースだとシンプルにa*c-b*d;a*d+b*c;みたいな実装だけど、ライブラリ(バイナリ)自体は各コア毎にいろいろ提供されているので、C-M4向けならちゃんとSIMD化されてるっぽい。

***

 いくつかやりたいネタがあるんだけど、やる気が出ない。5月病かな? いや、通年同じような気もする。

0 件のコメント:

コメントを投稿