Aviutl GPUフィルタ(OpenCL/CUDA統合版) clcufilters

これまでAviutl用のGPUフィルタは、まずCUDAを使用したcufiltersを作り、それからOpenCLを使用したclfiltersを作ってきた。

ひとつのフィルタの中に、複数のGPUフィルタを含んでいて、これらを一括して使える、という点は悪くなかったのだが、いくつか問題点があったので、そうした問題点を改善したclcufiltersというのを作ってみた。



cufiltersの問題点



1. CUDAなのでNVIDIA GPUでしか使用できない
まあCUDAなので仕方ないのだが、Intel/AMDのGPUで使用したいとなるとOpenCLを使うことを考える必要がある。

2. 32bitのCUDAだとCUDAのフル機能が使用できない
だいぶんと前からCUDAは32bitは徐々にフェードアウトしていく感じで、いろいろな機能が64bitのみ対応になってきている。例えば、--vpp-colorspaceは32bit CUDAではnvrtcが対応していないため動かすことができなくて、64bit CUDAが必要になってしまう。

また、32bitでのコンパイル自体、CUDAの次のバージョンで対応されるか怪しくなってきている。古いCUDAを使い続けるのも手だが、それもいつかは限界が来るだろう。



clfiltersの問題点



cufiltersのNVIDIA GPUだけ、という課題を解消すべく作ったのがclfiltersで、OpenCLベースとすることで基本的にはすべてのGPUに対応できた。

ところが、これもいくつか課題があった。

1. NVIDIA GPUでOpenCLだとかゆいところに手が届かない
いくつかのIntel/AMDでは普通にサポートされている拡張機能に対応していなかったりで、これを回避するため結構NVIDIA GPU用にまわりくどい実装が必要になって、実装がややこしいうえに、処理も非効率になってしまったりした。

あとはまあ、CUDAでは細かい制御ができるけど、OpenCLだとそうはいかない、みたいなところもある。

2. 32bitプロセスであるAviutlのメモリ空間を食う
これはNVIDIA GPUに限らないけど、やはりGPUフィルタは使用するフィルタによってはそれなりにメモリを使用することがあり、貴重なAviutlのメモリ空間をかなり使用してしまっていた。ほかの処理で使えるメモリが減るのは、Aviutlが不安定化する原因にもなる。

とにかくAviutlのメモリ空間は貴重なので、エンコーダにしろフィルタにしろ、メモリ量を食うものはなるべく外に出したいという感じになってきている。



clcufiltersの作成



ということで、このあたりを課題を解消したいと思って、clcufiltersを作ってみた。

clcufiltersでは、フィルタ処理を64bitプロセスに分離して、Intel/AMD GPUではOpenCL、NVIDIA GPUではCUDAで処理を行うようにした。



こんな感じで自動的にIntel/AMD GPUはOpenCL、NVIDIA GPUはCUDAが使用される。



実装はかなりややこしくてかなり時間がかかったけど、この仕組みで

1. NVIDIA GPUでCUDAが使えるので細かい最適化が可能になる
2. 64bit対応により32bitと異なりCUDAのフル機能が使えるように
3. Aviutlのメモリ使用量を最小限に

という感じで、これまでのいろんな課題をだいぶ改善できたのではないかと思う。

ただ、プロセス間のやり取りや、追加のメモリコピーがどうしても発生するので、速度面で有利かというとおそらくそうではなく、やや遅いかもしれない。どちらかというと機能面や安定性のほうが期待できそう。



動作環境



Windows 10/11 (x64)
Aviutl 1.00 以降
Intel / NVIDIA / AMD のGPUドライバのインストールされた環境

NVIDIAドライバは452.39以降

なお、32bit OSでは使用できません。



使用方法



ダウンロードしたら、zipファイルの中身をすべてAviutlフォルダにコピーしてください。

clcufiltes_install.jpg



いつもの注意事項



無保証です。自己責任で使用してください。

clcufiltersを使用したことによる、いかなる損害・トラブルについても責任を負いません。



その他注意事項



申し訳ないですが、clfiltersとcufiltersは開発終了とさせていただき、clcufiltersを後継としたいと思います。



ダウンロード>>

clcufiltersの詳細


スポンサーサイト



コメントの投稿

非公開コメント

エラー解消

cufiltersの時にエラーが頻発していたMAS2です。
エラーは完全に解消されました。
ただノイズ除去のsmoothが全く動いていない様に見えます。
見えるだけで動いてはいるのかもしれませんが一応報告まで。

Re: エラー解消

無事動作するようになって安心しました。プロセス分離やCUDAの使用等で問題を解消できたのだと思います。

ノイズ除去のsmoothについては、効果が極めて弱くなっているようなので、次回修正いたします。

Re: Re: エラー解消

>次回修正いたします。
了解しました。

あともう一つ、フィルター順序を変更しても記録されないです。
仕様かも知れませんが記録された方が良いと思います。

No title

フィルタ順序の件ですが、現状は特に保存されない仕様となっております。

すでに次回の更新では保存する機能追加を行う予定となっておりますので、どうぞよろしくお願いいたします。

Re: No title

smoothの強度の調整とフィルタ順序保存機能の追加について、clcufilters 1.01で対応しました。
https://rigaya34589.blog.fc2.com/blog-entry-1797.html
プロフィール

rigaya

Author:rigaya
アニメとか見たり、エンコードしたり。
連絡先: rigaya34589@live.jp
github twitter

最新記事
最新コメント
カテゴリ
月別アーカイブ
カウンター
検索フォーム
いろいろ
公開中のAviutlプラグインとかのダウンロード

○Aviutl 出力プラグイン
x264guiEx 3.xx
- x264を使用したH264出力
- x264guiExの導入紹介動画>
- x264guiExの導入
- x264guiExのエラーと対処方法>
- x264.exeはこちら>

x265guiEx
- x265を使用したH.265/HEVC出力
- x265guiExの導入>
- x265.exeはこちら>

QSVEnc + QSVEncC
- QuickSyncVideoによるHWエンコード
- QSVEnc 導入/使用方法>
- QSVEncCオプション一覧>

NVEnc + NVEncC
- NVIDIAのNVEncによるHWエンコード
- NVEnc 導入/使用方法>
- NVEncCオプション一覧>

VCEEnc + VCEEncC
- AMDのVCE/VCNによるHWエンコード
- VCEEnc 導入/使用方法>
- VCEEncCオプション一覧>

svtAV1guiEx
- SVT-AV1によるAV1出力
- svtAV1guiExの導入>
- SVT-AV1単体はこちら>

VVenCguiEx
- VVenCによるVVC出力
- VVenCguiExの導入>

ffmpegOut
- ffmpegを使用した出力
- ffmpegOutの導入>


○Aviutl フィルタプラグイン
自動フィールドシフト (ミラー)
- SSE2~AVX512による高速化版
- オリジナル: aji様

clcufilters 
- OpenCL/CUDAのGPUフィルタ集
- 対応フィルタの一覧等はこちら

エッジレベル調整MT (ミラー)
- エッジレベル調整の並列化/高速化
- SSE2~AVX512対応
- オリジナル: まじぽか太郎様

バンディング低減MT (ミラー)
- SSE2~AVX512による高速化版
- オリジナル: まじぽか太郎様

PMD_MT
- SSE2~AVX512による高速化版
- オリジナル: スレ48≫989氏

透過性ロゴ (ミラー)
- SSE2~FMA3によるSIMD版
- オリジナル: MakKi氏

AviutlColor (ミラー)
- BT.2020nc向け色変換プラグイン
- BT.709/BT.601向けも同梱

○その他
Amatsukaze改造版
- AmatsukazeのAV1対応版

tsreplace
- tsの映像のみを置き換えて圧縮

rkmppenc
- Rockchip系SoCのhwエンコーダ

fawutil
- FAW(FakeAACWave)⇔aac変換
- 二重音声の取り扱いにも対応

x264afs (ミラー)
- x264のafs対応版

aui_indexer (ミラー使い方>)
- lsmashinput.aui/m2v.auiの
 インデックス事前・一括生成

auc_export (ミラー使い方>)
- Aviutl Controlの
 エクスポートプラグイン版
 エクスポートをコマンドから

aup_reseter (ミラー)
- aupプロジェクトファイルの
 終了フラグを一括リセット

CheckBitrate (ミラー, 使い方, ソース)
- ビットレート分布の分析(HEVC対応)

チャプター変換 (使い方>)
- nero/appleチャプター形式変換

エッジレベル調整 (avisynth)
- Avisynth用エッジレベル調整

メモリ・キャッシュ速度測定
- スレッド数を変えて測定
- これまでの測定結果はこちら

○ビルドしたものとか
L-SMASH (ミラー)
x264 (ミラー)
x265 (ミラー)
SVT-AV1 (ミラー)

○その他
サンプル動画
その他

○読みもの (ミラー)
Aviutl/x264guiExの色変換
動画関連ダウンロードリンク集
簡易インストーラの概要

○更新停止・公開終了
改造版x264gui
x264guiEx 0.xx
RSSリンクの表示
リンク
QRコード
QR