CUDAとは何ですか? OpenCLとOpenGLはどうですか?そして、なぜ私たちは気にする必要がありますか?これらの質問への答えを特定するのは困難です—形而上学的な答えのないものと同等のコンピューター—ですが、おそらく少し内省を加えて、わかりやすい言葉で明確な説明を試みます。
ビデオ編集者の生活の中で、彼らが必然的に基本的な質問を熟考する時が来ます。「これは私が持っているすべての速度ですか?これ以上何もありませんか?」人生の意味や大統一理論の探求のように、この単純な考えは、あなたが真の答えを得ることができない質問に必然的に着陸するまで、熟考と研究の無限で無限に深い溝にあなたを導きます、そこに検索の屋台があります。
現在、大統一理論を支援することはできませんが、ビデオ処理速度の検索で最終的に打撃を受ける情報の壁は、最終的には次のようになります。「CUDAとは何ですか、OpenCLとは何ですか。なぜ気にするのですか?」
「今待って」とあなたは言います。 「見出しにはOpenGLと書かれています。タイプミスがあるに違いありません。」いいえ、命名基準に共感しない人はたくさんいます。真実は、CUDAとOpen GLを理解するには、OpenCLについても知る必要があるということです。これで、インターネットにアクセスしてこれらの用語をすべてwikiに表示し、すべてのフォーラムを読んで、これらの標準を維持しているサイトにアクセスできますが、それでも混乱してしまいます。この記事では、可能な限り単純な言語で形而上学的なビデオの難問を救済します。ここでは、「アプリケーションプログラミングインターフェイス」などの用語についての回覧はありません。ですから、すべての答えの探求と同様に、論理的に始めましょう…途中で。
CUDAとは何ですか?
グラフィックカードメーカーのNvidiaによって作成されたCUDAを使用すると、プログラムでグラフィックカードの頭脳をサブCPUとして使用できます。 CPUは特定のタスクをCUDA対応カードに渡します。グラフィックカードは、照明、動き、相互作用などを可能な限り迅速に計算することを専門としています。グラフィックカードは、スーパーマーケットに1つのショッピングカート用に4つのチェックアウトレーンがある場合のように、一度に複数のレーンを介して情報を送信する場合でも、そのような情報を可能な限り高速に処理するように特別に設計されています。その後、この作業の結果はCPUに戻され、CPUはより大きくより良いものになります。
メリット
プログラマーにとって、統合は比較的簡単です。ソフトウェアベースであるため、システムの多くはプログラムのコードにプログラムする必要があります。したがって、その機能は変更したり、カスタマイズしたりできます。ユーザーにとって、CUDAの主な機能は計算、データ生成、および画像操作にあるため、特にアップスケーリングまたはダウンスケーリングの場合、エフェクトの処理、レンダリング、およびエクスポートの時間を大幅に短縮できます。流体力学のようなシミュレーションや気象パターンのような予測プロセスと同様に、画像分析も改善することができます。 CUDAは、光源とレイトレーシングにも優れています。これはすべて、レンダリングエフェクト、ビデオエンコーディング、変換などの機能がはるかに高速に処理されることを意味します。
欠点
最初の段落に1つの小さな免責事項があることに気づきましたか?これは、「CUDA対応」のグラフィックカードでのみ機能します。 CUDAはNvidia独自のものであるため、それを利用するには、その会社が製造したグラフィックカードが必要です。たとえば、ゴミ箱スタイルのMac Proをお持ちの場合は、AMDグラフィックカードしか付属していないため、これは選択肢になりません。ここにはサードパーティのオプションがありますが、AppleはパッケージでAMDのみを提供しています。また、CUDAをサポートするプログラムは他のプログラムよりも少ないことがわかるので、他のオプションについて話しましょう。
では、OpenCLとは何ですか?
OpenCLは比較的新しいシステムであり、私たちの議論では、CUDAの代替と見なすことができます。ただし、これはオープンスタンダードです。つまり、独自のテクノロジやライセンスを購入しなくても、誰でもハードウェアまたはソフトウェアでその機能を使用できます。 CUDAはコプロセッサーにグラフィックカードを使用しますが、OpenCLは情報を完全に渡し、グラフィックカードを別の汎用ピアプロセッサーとして使用します。これは哲学的な小さな違いですが、最終的には定量化可能な違いがあります。プログラマーにとって、コーディングは少し難しいです。ユーザーとして、あなたはどのベンダーにも縛られておらず、サポートは非常に広範であるため、ほとんどのプログラムはその採用についてさえ言及していません。
最後に、OpenGL
OpenGLは本当に物語の始まりです。グラフィックカードを汎用プロセッサとして使用することではありません。代わりに、画面上にピクセルまたは頂点を描画するだけです。これは、グラフィックカードがCPUよりもはるかに高速にコンピュータ用の2Dおよび3Dディスプレイを作成できるようにするシステムです。 CUDAとOpenCLが互いに代替であるように、OpenGLはWindows上のDirectXのようなシステムの代替です。簡単に言うと、OpenGLは画面上のすべてのものを非常に高速に描画し、OpenCLとCUDAは、ビデオがエフェクトや他のメディアと相互作用するときに必要な計算を処理します。 OpenGLは、ビデオを編集インターフェイス内に配置して再生する場合がありますが、色補正をスローすると、CUDAまたはOpenCLが計算を実行してビデオの各ピクセルを適切に変更します。
OpenGLはハードウェアレベルで実装できます。つまり、コーダーはプログラムにコードを含める必要はなく、コードを呼び出すだけで済みます。さらに、ハードウェアベンダーには、拡張機能を使用してコア機能を拡張するオプションがあります。つまり、一部のハードウェアは、特定のタスクで他のハードウェアよりも優れている場合があります。これにより、非常に具体的なカスタマイズが可能になります。
ユーザーがOpenGLの利点を理解できるのは、ソフトウェアの運用パフォーマンスです。プレビューは特に高速にレンダリングされます。多くのプログラムでは、タイムライン、フッテージ、ウィンドウ、グリッド、ガイド、定規、バウンディングボックスなど、高速化されたインターフェイスやオーバーレイにも使用されます。
結局、OpenCLとCUDAの両方がOpenGLシステムを利用でき、実際に利用できるため、ユーザーにとってのOpenGLは問題ではありません。ここで理解する必要があるのは、最新のOpenGLサポートを備えたグラフィックカードを使用している場合、CPUと統合グラフィックスのみを備えたコンピューターよりも常に高速に作業できるということです。
一言で言えば
では、これはあなたとあなたのワークステーションにとって何を意味するのでしょうか?どちらが良いですか—CUDAまたはOpenCL?最初のステップを実行してソフトウェアをチェックし、使用するものはすべて両方のオプションをサポートすると想定します。 Nvidiaカードをお持ちの場合は、CUDAを使用してください。多くの場合、OpenCLよりも高速であると考えられています。 NvidiaカードはOpenCLをサポートしていることにも注意してください。一般的なコンセンサスは、AMDカードほど得意ではないということですが、常に近づいています。 CUDAサポートのためだけに外出してNvidiaカードを購入する価値はありますか?これは、ここで取り上げるにはあまりにも多くの特定のケース要因に依存します。あなたはあなたのニーズを見て、あなたの研究をする必要があるでしょう。あなたの会社がどのような仕事をしているのかだけでなく、個々のマシンやそのワークロードと機能に至るまでです。そして、可能であれば、投資する前にテストしてください。
たとえば、Adobeは、そのWebサイトで、ごくわずかな例外を除いて、CUDAがPremiereProに対して行うすべてのことをOpenCLでも実行できると述べています。また、エンコードにもデコードにもこれらのどちらも使用しないと述べています。ただし、プレビューや最終的なエクスポートのレンダリングには使用できます。 2つを「比較」した人の大多数は、アドビ製品の方がCUDAの方が速いことに傾倒しているようです。 CUDAには、自己完結型であるという利点があります。これは、最適化が優れているため、パフォーマンスが向上する可能性があります。
個人的な経験
また、珍しい動きをして、ここで私の個人的な経験を共有したいと思います。ただし、具体的なテストは行っていないことに注意してください。私は自分自身のために厳密に話しているので、それが価値があるものと考えてください。私の経験では、CUDAが利用可能であれば、それは素晴らしく、速度を著しく向上させることができます。ただし、レンダリング、トランスコーディング、およびエクスポート時に、さらにいくつかのクラッシュまたはグリッチが発生したと考えています。また、まれに、オプションが不足し、CUDAをオフにすることに頼ったことがあり、最終的には成功した結果になりました。反対のことをする必要はありませんでした。 CUDAでの私の時間は非常に限られていると言って、これを修飾する必要があります。また、問題はソフトウェアベンダーがそれを利用した方法である可能性が高いため、私はCUDAをノックしていません。しかし、私は複数のプログラムでこれらの問題を経験したので、おそらく古いバージョンのCUDAを持っていました。そのようなことに気をつけるべきだと言うことは十分に重要だと感じました。繰り返しになりますが、最終的にはどちらの選択でも間違いはなく、どちらを使用するかは完全にケースバイケースで決定する必要があります。
したがって、記録に戻ると、最終的に自信を持って言えることは、ワークフローを遅くしているシステム全体ではなく、実際にグラフィックカードである位置にいる場合は、次のようにアップグレードする可能性があるということです。最近のカードは、現在経験しているものよりも大幅に改善されます。選択するパスに関係なく、これらのシステムが何をするかを理解することは、ワークステーションを可能な限り最悪にするために投資する必要がある場所を特定するのに役立ちます。 GPUを使用してCPUからの作業を補完またはオフロードすることをサポートするカードに投資すると、ワークフローが大幅に高速化されます。
Peter Zunitchは、ニューヨークを拠点とする受賞歴のある動画編集者です。