2023年12月20日水曜日

小ネタ





 2214年の札幌を舞台にしたゲーム『Soul Tolerance: Prologue』がリリース 人類滅亡後の世界でロボットに自我が芽生える設定

 ……札幌? ナンデ??



 NC旋盤で主軸の回転数の整数倍でX軸を振動させてポリゴン加工を行うような感じだと思うんだけど、荒削り&仕上げパスで鏡面まで仕上がるらしい。


「文句を言うなら対案を出せ」vs「こっちはプロだぞ、その程度の案を検討していないわけがないだろう。素人は黙ってろ」の構図。あるいは、「プロとして(プロジェクト進行の苦労を知っているから)他人が作ったものに文句を言うのはダサい」というスタンスもあるらしい。誰にも発言権がない状況。


 Vlogカメラ、マイクアレイで話者の位置を認識してオートフォーカスのゾーニングに渡す、みたいな機能ってないのかな。大まかにエリアだけでも認識できれば、その周辺で顔認識して、そこにフォーカスを合わせるとか。あるいは、最近だと映像データ単体で顔認識からAIで口の動きを見て話しているかを認識する、みたいなほうがやりやすいか。


 アバター フロンティア オブ パンドラ、ゲームとしては、人類が悪役として書かれている点を許容できて、空を飛ぶのが期待したほど楽しくない、銃が弓より遥かに劣る武器、という点に目を瞑れば、十分楽しいよ。とりあえずここ1周間は問題なく動いているし。


 前に使っていたPC、Win10で結構長いこと使っていたので、起動時間がめちゃくちゃ長くかかっていた。今使っているPC(Win11)も、基本的には起動しっぱなしで、Windows Updateとかのタイミングでしか再起動していなかったから、起動には時間がかかるイメージ。だけど、最近1日毎に再起動をかけるようになって、PCの起動ってめっちゃ早いんだな、という実感を得ている。再起動をクリックしてからデスクトップまでも1分もかからない。

 作業中のファイルの保存とかが手間だから再起動が面倒ってのはあるけど、そもそもファイルはこまめに保存しておけって話だし、1分くらいでPC完全にリセットしてメモリ解放できるなら、PCの再起動って便利だな。ブラウザのタブを大量に開きすぎなのでブラウザを再起動するのが嫌、というのはあるけど、最近のChromeは開いていない画面は後で(開いたときに)読み込まれるし、そもそも回線速度が数Mbps、レイテンシが数十秒、みたいなクソ回線とはもう決別したし、ブラウザはあまり気にせんでも。


 C#12のコレクション式、Visual Studio 2022で折り畳めないとか、ドキュメントのフォーマットで崩れるとか、いろいろ使いづらい。後者については、全部を1行に書くか、1行に1個を書くか、のどちらかしか選べず、例えば256個の要素を持つ配列を作るときは、1行に256個全部書くか、256行で書くか、しか選べない。しかも折りたたむことができないから、256個の要素が全部表示される。もっと多いとさらに悲惨。どうしたものか。今後改善されるのかな? あるいはオプションの中にある可能性も…… とりあえずは従来どおり{ ... }で作る感じかな。

 気の所為かもしれないけど、データ列に加工して同じ形のデータにするときに、元の配列に戻すより、別の配列に書き込む方が処理が早い気がする。元の配列に書き込むとキャッシュの問題で遅くなったりとかするのかな?

 ビタビ復号、配列のランダムアクセス的な処理が多いので、C#の範囲判定で遅いんじゃないか、ということで試しにunsafeでポインタ経由でテーブルにアクセス。結果、15%弱早くなったけど、微妙なところ。わざわざfixedとかいろいろネストして1割ちょっとしか変わらない。ハミング距離の計算をAvx2で8組並列して計算したり、ループを展開してfor回数を8分の1にしたりして、ようやく最初の2倍くらいまで高速化。結構大きく書き換えて35%くらいしか変わらないかと思えば、微妙な変更で20%くらい変わったり、プログラムのチューニング難しい。。。ベタ書きしているコードをAggressiveInliningで切り出して並べると一気に遅くなる。MethodImplを消しても遅くならないから、インライン展開してくれていないっぽい。C言語とかなら#defineで書くという悪魔の所業が可能なわけだが、C#はそういうことはできないはずだからな。カリカリにチューニングしたいならちゃんと言語仕様を把握してILやMLを読んで、みたいなことになるんだろう。難しい。

 あるいは処理速度が必要な部分はC++で書いてインポートするみたいな方法もあるんだろうけど。それはそれでSIMDとか触るのが面倒くさそうな気はするけど、C#のSIMDも細かいところに手が届かなかったりするしな。

 ビタビ復号は同じような細かい操作が大量に並ぶし、それを数十個とか並列して回せるから、GPUで処理したら相当早くなりそうではある。まあ、そこまで速度が重要な用途でもないし、気が向いたら……


 今更だけど、『宇宙のランデヴー』を読んでみた。初版は50年前の作品。

 アーサー・C・クラークの作品はあまり読んだことはなかったけど、とはいえ御高名はかねがね……という感じだったのだが、設定としては結構アレな感じがする。物理法則が違ったり、惑星間スケールでの距離感が近かったり、人類より遥かに進んだテクノロジーの宇宙船(おそらく複数の恒星でパワードスイングバイを経ている)の速度がたかだか30km/s程度だったり。宇宙船の速度はその設定じゃないと物語として成立しないからという理由はあるにしても。

 作品としては読んでいて面白いけど、やはり時代を感じるというごく平凡な感想になってしまう。

 ’21年に映画化の話が出ていたらしいけど、どういうふうになるんだろうか。物語の根幹部分で我々の暮らす宇宙と異なる物理法則が出てくるけど、そのあたりは作品内の物理法則としてそのまま映画化するのかな。


 今週はジャック・リーチャーのドラマ版シーズン2の公開が始まったりとか、色々コンテンツが増えている。おかしいな。いつもこんなに暇してるのに、どうしてこんなに時間が足りないんだろう。

0 件のコメント:

コメントを投稿