動的演算適応

Chloros 1.1.0 では、インテリジェントなハードウェア検出機能と、処理戦略の自動選択機能が導入されました。処理エンジンは、Jetson Nano からマルチ GPU ワークステーションに至るまで、手動での設定を一切必要とせずに、お使いのハードウェアに適応します。


仕組み

Chlorosの起動時、システムのプロファイリングが自動的に行われます:

  1. オペレーティングシステムの検出 — Windows または Linux

  2. CPUコア数と総RAM容量を特定

3.GPUの有無を検出 — NVIDIA CUDA機能、VRAM、モデル 4. Jetsonモデルを特定(該当する場合) — /proc/device-tree/model経由 5. 温度センサーを確認(Jetson) — 温度を考慮した処理のため 6. 最適な演算戦略を選択 — 検出されたすべてのハードウェアに基づいて 7. ワーカー数、パイプラインタイプ、メモリ割り当てを 自動的に設定

結果はキャッシュされるため、以降の実行はより高速に開始されます。ハードウェアが変更された場合(例:GPUが追加された場合)、Chlorosは次回の起動時に再プロファイリングを行います。


コンピュート戦略

Chlorosは、お使いのハードウェアに基づいて3つのコンピュート戦略のうち1つを選択します:

戦略
GPUが必要
ワーカー数
パイプライン
最適な用途

GPU_PARALLEL

必要(12GB以上のVRAMまたは16GB以上の共有メモリ)

3-4

fused_gpu

12GB以上のデスクトップGPU、Jetson Orin NX 16GB、AGX Orin

GPU_SINGLE

はい(VRAM 12GB未満)

1~3

tiled_gpu

エントリーレベルGPU、Jetson Nano、Orin Nano

CPU_PARALLEL

いいえ

コア数 - 1

cpu_fallback

NVIDIA GPUを搭載していないシステム

パイプラインの種類

  • fused_gpu — フルGPU処理パス。 すべてのデベイヤー処理、補正、およびインデックス演算が、単一の融合パスでGPU上で実行されます。スループットは最高ですが、より多くのVRAMを必要とします。

  • tiled_gpu — メモリ効率に優れたGPUパス。限られたGPUメモリ内に収まるよう、画像をタイル単位で処理します。スループットは低くなりますが、メモリに制約のあるデバイスで動作します。

  • cpu_fallback — マルチスレッド並列処理を用いたCPUのみの処理。NVIDIA GPUが利用できない場合に使用されます。***

プラットフォーム固有の動作

プラットフォーム
戦略
ワーカー数
パイプライン
備考

Jetson Nano 8GB

GPU_SINGLE

1

tiled_gpu (シリアル化)

メモリ効率モード、画像を1枚ずつ処理

Jetson Orin NX 16GB

GPU_PARALLEL

3

fused_gpu (並列)

推奨エッジデバイス — 真の並列GPU処理

Jetson AGX Orin 64GB

GPU_PARALLEL

4

fused_gpu (並列)

最高のエッジパフォーマンス

8GB GPU搭載デスクトップ

GPU_SINGLE

3

tiled_gpu

メモリ効率の高いタイルによる優れたデスクトップ性能

12GB以上のGPUを搭載したデスクトップ

GPU_PARALLEL

3-4

fused_gpu

最適なデスクトップ性能

CPUのみのシステム

CPU_PARALLEL

コア数 - 1

cpu_fallback

GPU不要、ThreadPoolを使用

circle-info

Jetsonユニファイドメモリ: JetsonデバイスはGPUとCPUのメモリを共有します。Jetson Orin NX 16GBでは約15.3GBのVRAMが報告されますが、これはOSやCPUプロセスで使用される物理RAMと同じものです。Chlorosは、メモリ割り当てのしきい値を設定する際にこの点を考慮しています。


動的なGPUメモリ割り当て

Chlorosは、4スレッド処理パイプラインを使用します:

  • スレッド1 (検出) — 画像の読み込み、EXIF解析、ターゲット検出

  • スレッド2 (キャリブレーション) — 反射率キャリブレーションの計算

  • スレッド 3 (処理) — GPU デベイヤー、ヴィネット補正、インデックス計算

  • スレッド 4 (エクスポート) — ファイル書き込み、メタデータ埋め込み

先行するパイプラインのスレッドが処理を完了すると(例:すべての画像の検出が完了)、そのスレッドに割り当てられていた GPU メモリは解放され、残りのアクティブなスレッドに再配分されます。 つまり、パイプラインが進行するにつれて、スレッド3(GPU負荷の高い段階)が徐々に多くのメモリを確保できるようになり、最も計算負荷の高い作業のスループットが向上します。

割り当て段階

段階
アクティブなスレッド
GPUメモリの配分

初期

1, 2, 3, 4

すべてのスレッドに分散

初期

1, 2, 3, 4

すべてのスレッドに分散

中期-初期

2, 3, 4

スレッド1のメモリが再配分

中期-後期

3, 4

スレッド1+2のメモリが3+4へ

後期

3または4

残りのスレッドに最大メモリ

テクスチャ対応処理

テクスチャ対応デベイヤー方式(Chloros+ のみ)は、AI/ML ノイズ除去モデルのため、標準方式よりも大幅に多くの GPU メモリを使用します:

  • 7GB 未満の VRAM を搭載したシステムでは、テクスチャ対応モードにおいて同期処理ループ(1 画像ずつ)が強制されます

  • 7GB以上のVRAMを搭載したシステムでは、Texture Awareモードを並列処理できますが、Standardモードと比較してワーカー数が削減されます***

熱管理(Jetson)

Jetsonデバイスには、特に密閉環境や航空機搭載環境において、熱的な制約があります。ChlorosはGPUおよびCPUの温度を監視し、処理を自動的に調整します:

温度
対応

< 70°C

通常動作 — フルスピード

70°C (警告)

バッチサイズを縮小

80°C (危険)

強力なスロットリング — 並行処理数とワーカー数を低減

90°C (シャットダウン)

GPU処理を完全に停止

Jetsonプラットフォームでは、温度監視にtegrastatsが使用されます。十分な冷却機能を備えたデスクトップシステムでは、サーマルスロットリングがトリガーされることはほとんどありません。


メモリプレッシャーの処理

Chlorosは、処理中にシステムメモリの負荷を監視します:

  • メモリしきい値:使用率が85%に達すると、保守的な動作がトリガーされます

  • OOM時の削減:メモリ不足イベントが発生した場合、割り当て量を25%削減します(0.75倍の乗数)

  • パイプラインのフォールバック: 深刻なメモリ圧迫下では、パイプラインが fused_gpu から tiled_gpu へ自動的にフォールバックします

  • スワップの推奨: Jetson では、データセットのサイズに対してスワップ領域が不足している場合、Chloros が警告を表示します***

演算適応の監視

CLI のステータス出力

処理が開始されると、CLI は検出したハードウェアプロファイルを表示します:

システム診断

chloros-cli selftest を実行して、完全なハードウェアプロファイルを確認し、演算能力を検証します:

これにより、CUDAの利用可能性、GPUメモリ、ノイズ除去モデル、およびバックエンド接続性がチェックされます。


次の手順

最終更新