せっかく4コア8スレッドのPCを組んだので、手元にある天文関連の画像処理ソフト3種について、マルチコアへの対応具合を実際に調べてみました。誰かにとって、今後の参考になれば。
ステライメージ Ver.6.5
まずは定番。アストロアーツのステライメージから。Ver.6.5でマルチコアに対応したことになっていますが、実際のところはどの程度までマルチコア環境を生かせているでしょうか?
ベイヤー形式での「ファイルオープン」→「ダーク補正」はちゃんと8スレッド使い切ってますね。
RAW現像もOK。
しかし「コンポジット」は4スレッドしか使えていないようです。
「レベル補正」も4スレッド止まりですね。もっとも、このあたりは処理としては比較的軽いので、それほど遅い感じはしません。
一方、「周辺減光・カブリ補正」、「デジタル現像」、「トーンカーブ調整」、さらに「マルチバンドシャープ」や「マルチバンドウェーブレット」といったあたりはきっちり8スレッドで処理されています。
「バックグラウンドスムース」や「ネビュラスムース」、「スターシャープ」、そしてフィルター処理中最も重い部類である「スターエンハンス」も8スレッドで処理。これは助かります。
一方、「画像復元」に関しては残念ながら4スレッドしか使えていない模様。ステライメージの全機能中、最も重い処理の1つであるだけに実に残念です。
ステライメージVer.6.5の紹介では「マルチコアCPUに対応して各種フィルタなどの画像処理を高速化(コンポジットや画像復元など一部の処理を除く)」とありましたが、結局、ほぼその通りの対応ということのようです。
RegiStax6
次は惑星撮影でもはや必須となった感のあるRegiStax。PCカメラなどで捉えた動画のフレームを重ね合わせ(スタッキング)、ウェーブレット変換などの鮮鋭化処理を施すことで高精細な静止画を得るためのソフトです。何しろ数千〜数万にもおよぶコマ数の画像を、位置を合わせながら重ね、処理していくわけですから基本的にはかなり重い作業。マルチコアにきっちり対応していてくれれば、その恩恵は大きいといえるでしょう。
まずは動画フレームを品質順に並べる「Align」ですが、4コアしか使われていないようです。
そして、動画フレームをスタッキングする場面でも残念ながら使われているのは4コアのみ。しかも各コアがフル回転しているわけでもなく、効率としてはあまりよくなさそうです。
スタッキングの完了した画像に対してウェーブレット変換をかける場面でも、やはり有効に使われているのは4コアのみです。
どうやらRegiStaxの場合、有効に使えるのは4コアまでの模様。スクリーンショットの右上を見ると分かる通り、せっかく8コアを認識しているのに、もったいない感じです。
AviStack2
こちらも上のRegiStaxと同様のスタッキングソフト。もともと月面写真の処理を念頭に開発されたもので、強力なマルチポイントアライメント、歪み補正機能を備えているのが特徴です。その実力は先日の月面写真の通りで、月の画像を処理するならRegiStaxよりこちらの方がお勧めです。ただし、高度な機能を備えているだけにRegiStaxよりさらに重く、マルチコア化の恩恵にぜひともあずかりたいところです。
まずは、位置合わせに用いる「特徴点」がフレームごとにどう移動しているかを解析する「Frame alignment」。8コアではなく、なぜか中途半端に7コアほどが動いているようですが、一応、4コアを超えたコア数に対応してはいるようです。
次いでフレームの品質チェックを行う「Quality analysis」。そこそこ重い作業ですが、こちらは残念ながら4コアしか動いていない模様。
指定以上の画質のフレームについて歪み補正のための移動量をチェックする「Reference point alignment」でも、動いているのはやはり4コアのみ。
実際に歪みを補正しながらフレームをスタックしていく「Frame stacking」の段階でも、4コアしか働いていません。「Quality analysis」〜「Frame stacking」までのプロセスはAviStackで最も重い作業だけに、ここで4コアしか使えていないのは痛いです。
スタッキングの完了した画像に対してウェーブレット変換をかける「Wavelet sharpning」では、最初の「Frame alignment」同様、7コアが動作。微妙に中途半端です(^^;
というわけで、ステライメージではかなりマルチコア対応が進んでいるものの、RegiStaxやAviStackは少々物足りない結果となりました*1。4コア8スレッドのCPUが普及価格帯で出てからずいぶん経ちますし、できればもう少し頑張ってほしいところです。まぁ、プログラミングが相当厄介なんだろうとは思いますが…。
理想としては、何らかの形でGPUを活用できれば最高ですね。素人考えでは、どうせ画像全体に同じような処理を施すのですし、GPUでの並列化に向いていると思うんですが。
*1:血迷ってSandyBridge-Eとかに行かなくて本当によかったw