GeForce RTX 3060で天体画像処理を高速化

導入の経緯

現在私が自宅で天体画像処理などにメインで使っているPCは約4年前に組んだもの(詳細は下の記事)。

CPUはRyzen 7 3700X (3.6GHz・8コア)、メモリはDDR4・64GBで、グラフィックボードはファンレスのGeForce GT 1030だった(ASUS GT1030-SL-2G-BRK GDDR5/2GB)。これは当時のローエンド品で、「グラフィック機能を内蔵していないCPUで、とりあえず映像出力する」程度のものでしかない。一応CUDAは動作するがメモリは2GBと最低限。私は3Dのゲームはしないし、当時も画像処理でGPUを使うソフトはあったものの、それほど必要性を感じなかった。そのため価格と静音性を重視してこれに決めた。

ところが最近になって、PixInsightやPhotoshopのプラグインや動画編集ソフトなどでGPUが積極的に使われるようになってきた。これは画像処理分野で機械学習・AIの活用が広まってきたためと思われる。そうなってくるとさすがにGT1030では性能不足を感じるようになってきた。そこでもっと本格的なグラボを導入することにした。

機種選定

まずGPUのメーカーだが、CUDAを使うこともありNVIDIAが無難と思うので、GeForce RTXシリーズから選ぶことにした。ゲームはしないので、xx60かxx60Tiぐらいが良いのではと思った。ちょうど今、RTX4060の搭載品が発売されたところだが、その性能はともかく、各グラボ製品の評価はまだ分からない。静音性とか発熱などは口コミが増えないと何とも言えない。その点、3060はおおむねどのグラボも評価は良いようだ。もちろん新しいに越したことは無いようにも思う。

そういうわけで4060、4060Ti、3060、3060Tiあたりで色々迷った。特に4060の8GB品が5万円前後、3060の12GB品が4万5千円前後と値段があまり変わらず、最後まで迷ったが、メモリ12GBという方を優先して3060にした。その中で通常時は静かという口コミと、メーカー3年保証ということで「GALAKURO GAMING GG-RTX3060-E12GB/OC/DF」に決めた。

取り付け

早速注文して物が到着。

GALAKURO GAMING GG-RTX3060-E12GB/OC/DF
GALAKURO GAMING GG-RTX3060-E12GB/OC/DF

箱はなぜか無駄にでかい。中身を取り出して、これまで付けていたGT1030ファンレス品(ASUS GT1030-SL-2G-BRK GDDR5/2GB)と並べて比較。

RTX3060品(上)とGT1030ファンレス品(下)
RTX3060品(上)とGT1030ファンレス品(下)

大きさが全然違う。ケースに入るのか心配になってきた。一応ケースのスペック表を見て取り付けが出来るのは確認しているが・・・。

MicroATXケースに取り付け
MicroATXケースに取り付け

マザーボードが小さなMicroATXでケースも狭いMicroATX用なので、取り付けはかなり苦労した。スペース的には十分入るのだが、シリアルATAのコネクタ等との干渉が発生し、いくつかの配線をやり直す必要があった。しかしなんとか収めることができた。なお電源は80PLUS Platinumの850Wなので余裕、のはず。グラボの電源は8ピンコネクタ×1接続。

ドライバ・CUDA

ドライバはGT1030の取り付け時に最新版に更新しておいたので、そのまま認識。CUDA関連については、下記のソフトをインストールした。これも性能比較のため古いほうのGT1030が付いていた時点でインストールしていた。

  • Visual Studio Community 2019
  • CUDA 11.2
  • cuDNN 8.1.0
  • libtensorflow-gpu 2.6

実は最初、なんでも最新が良いのだろうと思ってVisual Studio 2022、CUDA11.8、cuDNN8.9を入れたら、libtensorflow-gpuのバージョンを色々変えてもBlurXterminatorが動かなかった。それで、とりあえず下のサイトに記されている、少し古めの組み合わせとした。

Windows 上のソースからビルドする,Windows 上のソースからビルドする  |  TensorFlow

ソフトウェア関連の設定はWEB上を色々検索して行ったが、下記のサイトの情報が最も参考になった(著者の方に感謝申し上げます)。

Starnet++をNvidia CUDAで高速化するのにいろいろ躓いた話
※PixInsight Ver 1.8.9でGPU支援が入らないことに対する対策を追記この記事は単体版Starnet++およびPixInsightのStarnet++モジュールをnVidia GPU(特にGeforce RTX 30xx世代)を使って高速化する手順および途中の躓きについて記載しています。今回の教訓は「CUDAはGeforce GPUの世代によって対応するバージョンが違うぞ!」ということです。では行ってみましょう。星消しツールStarnet++。効果は非常に高い...

処理性能評価

NoiseXTerminator(PixInsightプラグイン)

  • 処理対象:4144 x 2822 RGBカラー画像(ASI294MC Proで撮影・WBPPで処理・スタック後)
  • パラメータはデフォルト使用:Denoise:0.90 / Detail:0.15
  • PixInsightを立ち上げ、1回処理してからUNDOで戻し、もう1回処理、更に戻してもう一回処理(計3回)。
1回目2回目3回目
GPU無し39.221.820.5
GT103035.810.910.9
RTX306030.83.74.9
NoiseXTerminator 処理時間(秒)

まず、1回目の処理はGPUであまり高速化されていないように見える。しかしこれはPixInsightを起動後、最初のNoiseXterminator処理を行う際のイニシャライズ処理が長くかかるためである。2回目以降はGPU使用による加速が分かる。これについては処理のパラメータを変えても同等の速度が出ているので、実際にパラメータを変えながら数回試す場合、2回目以降の速さとなるので、効果は大きい。

これを見ると、GT1030も古いローエンドGPUと言われながらも、それなりに仕事をしているようだ。

なお、RTX3060でのGPUメモリ使用は最大8.2GB。

BlurXTerminator(PixInsightプラグイン)

  • 処理対象:4144 x 2822 RGBカラー画像(ASI294MC Proで撮影・WBPPで処理・スタック後・上でNXT処理後)
  • パラメータはデフォルト使用:Sharpen Stars: 0.25 / Adjust Star Halo: 0.0 / Automatic PSF / Sharpen Non-Steller: 0.90
  • PixInsightを立ち上げ、1回処理してからUNDOで戻し、もう1回処理、更に戻してもう1回処理(計3回)。
1回目2回目3回目
GPU無し137.3125.1127.1
GT1030159.889.289.6
RTX306043.613.113.1
BlurXTerminator 処理時間(秒)

これについても1回目はイニシャライズ処理の長さのためGPUによる加速が目立たない。それでもRTX3060はかなり速い。特に2回目以降はRTX3060が圧倒的に速い。これもパラメータを変えて実行しても2回目以降の速さの数値となる。実際にBXTはパラメータ値を変えて良い具合になるまで何回も試行するので、これだけ速くなるとありがたい。

なお、RTX3060でのGPUメモリ使用は最大7.7GB。

StarNet V2(PixInsightプラグイン)

  • 処理対象:4144 x 2822 RGBカラー画像(ASI294MC Proで撮影・WBPPで処理・スタック後・上でNXT&BXT処理後)
  • パラメータ:Sharpen Stars: 0.25 / Linear dataのみON
  • PixInsightを立ち上げ、1回処理してからUNDOで戻し、もう1回処理、更に戻してもう1回処理(計3回)。
1回目2回目3回目
GPU無し192.8192.5192.2
GT1030140.8130.4131.8
RTX306045.336.736.6
StarNet V2 処理時間(秒)

これについては1回目と2回目以降の差があまりない。そしてやはりRTX3060はかなり速い。これも画像処理中で待ち時間が長かった処理なので、ありがたい。

RTX3060でのGPUメモリ使用は最大9.4GB。メモリ12GB品にした甲斐があったか?

Adobe Camera RAW ノイズ除去

最近Adobe Camera Rawに実装されたAIによるノイズ除去処理でも試した。

  • 処理対象:6016 x 4000 RAW画像(PENTAX KPで撮影)
  • パラメータはデフォルト:ノイズ除去適用量50%のみ。
  • 1回だけ試行。
  • GPU無しでは未実施(GPU使用をOFFにすると動作せず)。
1回目
GT1030250
RTX306016
Camera Rawノイズ除去 処理時間(秒)

これはRTX3060が圧倒的に速い。現像時に数分かかると作業のリズムが崩れて使いにくいが、十数秒で終わるのなら気軽に使えそうだ。

Neat Video (DaVinci Resolveのプラグイン)

動画処理ではDaVinci Resolveを使っているが、その中で特に処理時間がかかるのが「Neat Video」によるノイズ低減。これもGPUによる処理加速が出来るので試してみた。

  • 処理対象:FullHD(1920×1080)の動画約1分
  • DaVinci Resolve本体のGPU設定:GPU処理モード=自動
  • Neat Video パラメータ
    • Temporal Filter: Enabled
    • Quality Mode: High
    • Radius: 5 frames
    • Dust and Scratches: Disabled
    • Repeat Rate: 0% of repeated frames
    • Jitter Filtration: Normal
    • Spatial Filter: Enabled
    • Quality Mode: High
    • Frequencies: High, Mid, Low, Very Low
    • Artifact Removal: Enabled
    • Edge Smoothing: Disabled
    • Sharpening: Disabled

これについてはNeat Videoのパラメータ設定画面にパフォーマンス最適化機能があるので、それを使ってみた。

Neat Video (DaVinci Resolve) 処理速度
Neat Video (DaVinci Resolve) 処理速度

これを見ると、GT1030はCPU並列より遅いので使わないほうがマシのようだ。CPUと併用するとCPUの足を引っ張る。一方、RTX3060は単体でも速く、CPUを12コア併用すると少し向上する。ただ向上幅が小さいので、RTX3060単体で済ませ、CPUパワーは節約しても良いかもしれない。特に長時間動画の場合はCPUを12並列動かさずに済むなら、そのほうが良さそうだ。

そして実際に約1分の動画をレンダリング出力すると、下記の処理時間となった。

  • CPUのみ16並列:726.9 [sec.]
  • RTX3060+CPU12並列: 275 [sec.]

時間がかかる処理が、2.5倍ぐらい速度向上した。

なお、Neat Videoによる星空動画のノイズ低減については下記記事参照。

発熱・音

音に関しては、アイドル時、WEB閲覧、文書作成時など軽い処理の場合は、GPU温度は40度ぐらいでファンの音はしない。ユーティリティ(Xtreme Tuner)で確認するとファンが1100rpmで回っていた。Xtreme Tunerのファン回転のカスタム設定では1100rpm以下には下げられないようだ。ただ、カスタムではなくAUTOでしばらく放置していると回転が停止していた。設定は出来ないけど自動停止はするセミファンレスという事だろうか。このあたりの説明は何もなく、良く分からない。

DaVinciでレンダリング処理をしている際にはGPU使用率が80%弱まで上がり、温度が75℃ぐらいになってファンが高速で回り出したが、それほど大きな音ではなくあまり気にならない

結果

これまでに比べて画像・動画処理の速度が格段に向上した。。

もう少し待っていれば4060の値段も下がっていったのかもしれないが、とりあえず今の段階でこの速さを手に入れ、ストレスなく処理できるようになったのは良かったと思う。

コメント

タイトルとURLをコピーしました