Adobeのビデオ製品には
Premiere Pro
AfterEffects
MediaEncoder
Rush
・・・などがあり
できることなら
レンダリングなど
やはり、最速で処理をさせたい。
その一役を担う機能として
CS5(一部CS4)の頃から
Mercury Playback Engineという
Adobe社とNVIDIA社が共同開発した
64ビット処理の
映像再生処理エンジンが搭載されています。
そのなかには
ソフトウェア処理
と
ハードウェア処理
があって
ソフトウェア処理は
CPUでガリガリ動かすという事ですが
(マルチコアCPUもハードと言えばハードだけど)
ハードウェア処理として
GPU等を使って速くさせようということで
CUDA
OpenCL
OpenGL
Metal
などの処理方法があります。
GPUをグラフィックだけではなく
その能力を計算にも使ってしまおうっていう
GPGPUでやろう!・・・ってことなんですね。
ここで少し備忘録として
キーワードをおさらい。
GPGPU(General-purpose computing on graphics processing units)は
GPUの演算資源を
画像処理以外の目的に応用する汎用計算技術で
こうしたレンダリング処理や
HPC(High-Performance Computing)の分野で活躍。
Metalは
Apple社のOS(OSX、iOS)上で
サポートされるもので
OpenGL/CLのような機能を
一つのAPIに統合したもの。
iOSはA7チップ搭載以降の機種
OSXはEl Capitan(10.11.x)以降で対応するけれど
Metal/Metal2に対応するには
MBP2012Mid以降や
MacProMid2010以降
(Kepler搭載nVIDIA等)
などの制限があり
そのGPUが下記に示すような
macOS GPU Familyに
リストアップされていないといけない。
さらにAppleは
macOS10.14 Mojaveから
OpenGL/CL・・・などを非推奨として
今後Metalを押してゆくとされました。
そうなると、プログラムの開発は大変ですね。
せっかくOpenですすめられていたのに
マルチプラットフォームで作成していたものは
今後Macへ実装するにはMac独自のMetalで
再度コーディングする必要があるのでしょう。
ほ〜んと、たいへん!
なお、現時点での最新
macOS10.15 Catalinaでは
WWDC2019で発表されたように
Metalも3.0になっているのです
(macOS GPU family2で対応)。
・・・ということは
Metal3.0に対応できるのは
MacPro2019
MBP2016以降
MB2016以降
iMacPro2017以降
iMac2015以降
Mac mini2018
などとなりますね。
Metal1/2は
macOS GPU family1で対応とのこと。
ちなみに、
macOS GPU familyのチェックは
ユーティリティの中にある
”システム情報”プログラムで
ハードウェア項の中の
グラフィックス/ディスプレイの
Metal項で確認できます。
Metalkit.orgの情報によると
Metal3は
OpenGLの100倍の描画
現在約14億のデバイスで稼働
MacPro(2019)のDual Vega2Duoで
最大56 TFLOPSの単精度!
・・・という。
ここまで凄い?技術となると
Metalのほうがヤバイくらい高速?
・・・と思えるのですが
以前の結果からすると疑問点もあるのです。
そして Mojaveとの比較
詳細はのちほど。
OpenGL(Open Graphics Library)は
オープンのCGライブラリで
CPUソフトウェア処理と比較して
高精細な3D描画を
高フレームレートで処理できる。
Windows、Mac、Linuxなど
クロスプラットフォームで利用可能なもの。
OpenCL(Open Computing Language)は
Appleによって提唱された
オープンの並列処理API。
オープンとは言っても
Adobeアプリではmac版で出てきますね。
マルチコアCPU、GPU、DSPなどの処理を
活用できる。
Direct3D API相互運用(DirectX 10世代目以上)
などもあるが拡張機能依存もある?
CUDA(Compute Unified Device Architecture)は
NVIDIA社によるGPU用のGPGPU開発・実行環境
汎用並列コンピューティングプラットフォームで
NVIDIA製のGPUは
OpenCLなどの類似APIコールは
すべてCUDAを経由する。
AMD製やIntel製には無いワケですね。
さて、そこで、Premiere Proの
特に2018年10月以降リリースの
GPU/GPUドライバ対応については
いくつかのお作法があるようです。
詳しくはこちらのAdobeのサイトにもありますが
ウチでもWindows環境で問題となっている
ファイル/プロジェクト設定/一般と移動すると
レンダリングオプションがグレー表示になる問題など
問題があります。
・・・それには
macもWindowsも
NVIDIA CUDAを利用するには
CUDA 9.2 ドライバーが必要とのこと。
サイトを読むと・・・
”CUDA はAdobeのビデオアプリケーションを
実行するための要件ではありませんが
CUDA グラフィックアクセラレーションを
希望される場合は
Premiere Pro バージョン 13.0 およびそれ以降への
アップグレード前に、
ご使用のシステムに
NVIDIA の CUDA 9.2 ドライバーを
インストールしておく必要があります。”
・・・とあります。
上述のキーワードのとおり
OpenCLなどの類似APIコールは
すべてCUDAを経由するということなので
CUDA9.2ドライバが必須ってことなんですね。
さらにMacOSの項には
”Mac0S 10.14 (Mojave)は
現在 CUDA をサポートしていません。”
・・・とあります。
なんじゃこりゃ??
これはnVIDIA GPUを搭載した
macユーザは大変です。
ま、もっぱら現在のmacはIntel/AMD化していますが。
・・・となると、サイトの表記にも矛盾点が???
”OpenCL グラフィックアクセラレーションを使用して
macOS 10.12 上で Premiere Pro を
実行することは可能ですが
Metal の方がレンダリングの速度が 15~20% 速いため
最適なパフォーマンスを得るには Metal を推奨します”
とあります。
・・・ホントか?
また、Intel製GPUの場合は
”Premiere Pro 2019 年版
(バージョン 13.0 およびそれ以降)では
最新バージョンの
Intel グラフィックドライバーが必要です。
安定性とパフォーマンスの問題を回避するため、
Adobe Premiere Pro では、
Intel ドライバーバージョン 100.6286 を
ベースラインとしています。
Intel ドライバーをベースライン以上のドライバーに
アップグレードすることをおすすめします。”
”100.6286 は、Intel ドライバーの
バージョン番号の最後の 2 つの部分になります。
完全なバージョン番号は
24.20.100.6286 のようになります。”
とあります。
しかしながら、ここで注意があって
”ドライバーが 100.6286 より古く、
ご使用の PC の製造元が互換性のあるバージョンを
提供していない場合は、
Intel のサイトから100.6286 より新しいバージョンを
インストールしないことをおすすめします。
ドライバーバージョン 100.6444 は
Windows DCH ドライバーで、
古いドライバーに上書きできません。”
良く読まなければいけませんね。
そして、デュアルGPU環境の場合は
1.OpenCL を使用する Premiere Pro
Premiere Pro は最初に
Intel/AMD ドライバーがあるか確認します。
2.CUDA を使用する Premiere Pro
Premiere Pro は最初に
NVIDIA ドライバーがあるか確認します。
とあります。
はい、nVIDIAのドライバも最新だし
BIOSもOSも他のドライバも全部最新だし
設定ファイルにGPUの名称もしっかり入れたし
リモートデスクトップのOpenGLの有効化も
Developerサイトからダウンロードして
問題無く動いているようだし。
さて、あとは何をすればいい?
もしや、CUDA9.2ドライバを
明示的に入れればいいのか?
・・・次に、やってみようかな。