ブログ移転のお知らせ

はてなブログに移転しました

nonbiri-stars.hatenablog.com

 

Sirilのスタック処理の高速化

天体撮影って、撮影後の処理に時間が結構かかります。

私は100枚以上撮影する事が多く、いつもは30秒×240枚を目標に撮影しています。
これの前処理をすると2~3時間は平気でPCがフル稼働になっています。

基本的には空いた時間に処理をしておくのですが、やっぱり処理がさっさと終わることに越したことはありません。

ハイスペPCを買えば解決できますが、軍資金がありません!
何とかならないかなぁと考えていました。

今回、windowsでSirilを使っている場合限定ですが、前処理を高速化する方法を見つけました。

WSL2を使ってLinux上で処理をすれば速くなります!

どれくらい速くなる?


私のPCの構成は下の通り。

CPU:ryzen 5 5600G
RAM:16GB DDR4-2133
ストレージ:3TB HDD 7200rpm

CドライブはSSDですが、今回は全てHDD内で処理しました。
公平に評価するため(というかデータが入り切らないので)仮想ドライブもHDDに移動しています。


まずはその効果です。

417万画素×128枚
2424万画素×128枚
2424万画素×370枚

上記の構成の画像に対して、それぞれ同じ処理をしてみました。



通常のwindows環境に比べて、WSL環境ではどれも処理が高速化しているのが分かります。

417万画素×128枚でトライしたときには20%程度だったので、それでも凄い差だなと思っていました。
が、2424万画素×128枚になると差が27%まで広がり、2424万画素×370枚に関しては45%に迫る処理速度の向上がありました。


正直驚いています。
同じファイル、同じハードでこれだけの差が出るとは。


傾向として、ファイルサイズが大きくなるよりも、ファイル数が多くなった方が速くなっています。


AIに理由を聞いてみると、WindowsとLinuxのファイルシステムによる差だと言うことです。
linuxが採用しているext4は、windowsのntfsよりもファイルのopen / closeが速いので多量のファイルを読み書きする前処理はLinuxが有利らしいです。

結果とAIの回答に矛盾は無さそうです。



ただし、両手を上げて「linuxを使おう!」と言う訳ではありません。
個人にはlinuxに興味はありますが、半年ほどubuntuをメインOSとして試してみましたが諦めた事があります(10年以上前の話)。

が、「Sirilの処理だけlinux」が手軽に使えれば素晴らしいかなと。

このハードルを大きく下げる仕組みがWSL2です。

WSL2とは?

そもそもWSL2って何よ?という方も多いと思うので簡単に説明します。

Windows Subsystem for Linux 2の略です。
1言で言えば、windows内でlinuxを動かす仕組みです。


hyper-vという仮想化技術を使っているらしいのですが、詳しくないのでスルーします。


本来windowsとLinuxの両方を使おうと思うと、デュアルブートやVirtualboxを使います。
これでwindowsと切り替えながら使うのは面倒です。


そこでWSL2の出番です。
多少のコマンドラインの入力は必要なものの、一旦起動してしまえばwindows中にlinux版のsirilがシームレスに操作できます。

同時に起動しているところのスクリーンショットを撮りました。
左奥がwindows版、右手前がlinux版です。


いくつかボタンの位置が違うだけで違和感ないですよね。
いつもなら下側にあるボタンが上にあったりするので一瞬悩みますが、よく周りを見れば大丈夫。


windows上で同時に動いているのに、linux版は裏で動いているOSが違うという驚きの仕組みです。

一旦インストールしてしまえば、スタート画面のアプリ一覧からwindows版のSirilとlinux(のUbuntu版)のSirilが選べれるという状態。


わざわざWSL2を立ち上げてというレベルではなく、1つのアプリの様にLinux版Sirilが使えます。

windowsも進歩したんだなぁと、しみじみ思いました。


では、どうやって導入するかに移ります。

WSL2導入方法

ホントに簡単です。
インストール方法はリンク先の通り。Linuxの中のubuntuがインストールされます。



インストールを終えたら、日本語化とSirilのインストールを行います。
WSLを起動し、ターミナル画面で下のコマンドを1行ずつ入力&実行します。
sudo apt install -y language-pack-ja
sudo update-locale LANG=ja_JP.UTF8
sudo apt install fonts-noto-cjk fonts-noto-cjk-extra
1行目で日本語パックのインストール、2行目でロケールを日本に設定、3行目で日本語フォントのインストールです。
これで日本語化が完了です。

変更を適用させるため、再起動します。
一旦windowsのターミナルに戻り次のコマンドを実行します。
wsl --shutdown

スタートメニューの中にあるubuntuのアイコンをクリックして、ubuntuに戻ります。

続いてSirilのインストールです。
ubuntuはアプリの管理にaptという仕組みを使っているので、aptにSirilを登録します。
sudo add-apt-repository ppa:lock042/siril
sudo apt update
sudo apt install siril
1行目でSirilのリポジトリを登録し、2行目でaptを更新し、3行目でインストールしています。


なお、Sirilのバージョンアップなどがあった場合は
sudo apt update && sudo apt upgrade -y 
と入力すればアップデートされます。
(同時にaptに登録されている各種アプリのアップデートもされるのでちょっと時間かかるかも)


これでひとまず使える状態になりました。


使う前に注意する点として、ubuntuの仮想ドライブはCドライブに保存されています。

Cドライブの容量が充分ある方は気にしなくて良いですが、Cドライブに余裕がない人は要注意です。
私のCドライブは256GBなので空き容量は100GB程度しかなく、ここでSirilの処理をするとあっという間にパンクします。

OS起動用と処理・保存用でストレージを物理的に分けている場合は、仮想ドライブを保存用のストレージに移動した方がよいと思います。

windowsのターミナルから、下のコマンドを入力して仮想ドライブを処理用のドライブに移動しておきます。

wsl --shutdown
wsl --manage ubuntu --move ファイルパス 

1行目でWSLをシャットダウンさせ、2行目で指定のフォルダに仮想ドライブを移動させています。
--manageの後にはインストールしたOSを、--moveの後には仮想ドライブを置く場所のファイルパス記載します。

これで準備完了。



linuxとwindowsのファイルの受け渡しは、エクスプローラー上から行えます。
左下にインストールしたOSの名前が表示されており、ここをクリックすると仮想ドライブを見ることが出来ます。
(クリックした時にWSLが裏で動いているのか、表示するまで少し時間がかかります)


linuxではhome/user/の下にファイルなどを置くことが多いので、ここに処理用のデータを保存すればOK。

もちろん、スクリプト等も移動させる必要があります。

あとはSirilを起動させて処理をするだけです。



GraXpertのlinux版もあるので、AI処理を含めたリニア処理、ノンリニア処理も出来ますが、高速化は望めないと思います(試していません)。

むしろWSL稼働の為にメモリやCPUを若干使うので、その分だけ処理が遅くなるためです。
AI処理は膨大な量の演算処理のため、ファイルシステムによる読み書きのアドバンデージは意味を成しません。


もうひとつ、WSL環境だから発生すると思わる不都合な点があります。

画像の描写を線形か自動イコライゼーションかを選択するドロップダウンが、全画面モードでも下に開くので選択できません。
全画面モードを解除して選択する必要があります。

前処理が終われば、よく切り替えるのでちょっと困ります。

という事で、スタックまでの前処理だけに使える高速化テクニックでした。


コメント

にほんブログ村

PVアクセスランキング にほんブログ村 にほんブログ村 写真ブログ 天体写真へにほんブログ村 科学ブログ 天文学・天体観測・宇宙科学へ