この記事は機械翻訳のミラー記事です。元の記事にジャンプするにはこちらをクリックしてください。

眺める: 12624|答える: 0

CUDAはOpenCLとは異なります

[リンクをコピー]
掲載地 2018/04/22 21:42:36 | | | |
ウェブサイトの情報によると、CUDAとOpenCLの違いを簡単にまとめたものです。 誤りがあれば教えてください。

逸話ですが、アメリカのサンディア国立研究所でのシミュレーションテストでは、ストレージ機構やメモリ帯域幅の制限により、16コア、32コア、さらには64コアプロセッサはスーパーコンピュータの性能向上をもたらすことができず、むしろ効率の大幅な低下につながる可能性があることが証明されました。

OpenCLとは何ですか?

これは、Appleが開始し、業界の多くの著名なメーカーが共同で開発した異種システムの並列プログラミングのためのオープンかつ無料の標準であり、同時に統一されたプログラミング環境でもあります。 高性能コンピューティングサーバー、デスクトップコンピューティングシステム、携帯端末向けにソフトウェア開発者が効率的かつ軽量なコードを書くのに便利であり、マルチコアプロセッサ(CPU)、グラフィックス処理ユニット(GPU)、セル型アーキテクチャ、デジタル信号プロセッサ(DSP)などの並列プロセッサで広く使用されており、ゲーム、エンターテインメント、科学研究、医療など多様な分野で広範な開発展望を持っています。

CUDAとは何ですか?

CUDAはNvidia GPU上の並列計算に基づくアーキテクチャです。 CUDAは主に2つの側面を含みます。1つはISA命令セットアーキテクチャです。 2つ目のハードウェアコンピューティングエンジン、 実際にはハードウェアと命令セットの問題です。 言い換えれば、CUDAはX86やセルに似たアーキテクチャと考えることができますが、従来のCPUではなくGPUに基づいています。




OpenCLとは具体的に何でしょうか?

OpenCLは実は異種システムの並列プログラミングのための全く新しいAPIであり、GPUを使って並列計算を行うことができます。
OpenGLはグラフ用、OpenCLは並列計算用です。
OpenCLの開発過程では、技術プラットフォームはすべてNVIDIA GPUであり、実際にはOpenCLはNVIDIA GPUプラットフォームに基づいて開発されています。 さらに、OpenCLの最初のデモもNVIDIA GPU上で動作していました。
本質的に、OpenCLはWindowsプラットフォームにおけるDirectXに相当する技術的な存在です。 正確には、ハードウェアとソフトウェアをつなぐAPIインターフェースです。 この点でOpenGLに似ていますが、OpenCLはOpenGLよりもはるかに広範で、3Dグラフィックスだけに使われるわけではありません。 一文で説明すると、OpenCLの役割はプロセッサとGPUの計算資源を呼び出し、プログラムをより速く、より良く動作させることでハードウェアの可能性を引き出すことです。
CUDAとは具体的に何でしょうか?

CUDAアーキテクチャはネイティブで、コンピューティングインターフェース向けに特別に構築されており、このハードウェアアーキテクチャは命令セットを含め、この種の並列計算および異種計算のために設計された完全なアーキテクチャセットです。 CUDAアーキテクチャはOpenCLやDirectXなどのAPIをサポートし、C、C++、Fortran、Java、Pythonなどの言語もサポートしています。



OpenCLとCUDAの関係はどうなっていますか?

CUDAとOpenCLの関係は対立関係ではなく、包括的な関係です。 OpenCLはAPIであり、まずはCUDAアーキテクチャがより上位レベルで、OpenCLであれDX11であれC言語であれ、FortranやDX11コンピューティングがサポート可能です。 プログラム開発者としては、一般的にこれらの言語やAPIしか理解できず、GPUの計算能力を使いたい限り、CUDAを使って自分のプログラムを開発できます。どの言語を選んでも構いません。
OpenCLとCUDAの技術的差異は主に実装方法に反映されています。 C言語に基づくCUDAは書きやすいコードにまとめられているため、チップ構造に詳しくない研究者でもCUDAツールを使って実用的なプログラムを作成できます。 OpenCLは文法的にはCUDAに近いですが、基盤となる操作により重点を置くため難しく、そのためOpenCLはプラットフォーム間で動作可能です。
CUDAは、命令セットアーキテクチャと対応するハードウェアエンジンを含む並列計算アーキテクチャです。 OpenCLは並列計算のためのアプリケーションプログラミングインターフェース(API)であり、OpenCLはNVIDIA CUDAアーキテクチャ上のCフォーCUDAに加えて新しいCUDAプログラム開発パスです。
ハードウェアをよりコントロールしたいならOpenCL APIを使ってプログラミングを行えますし、APIについてあまり知らなければCUDA Cでプログラミングすることもできます。CUDA Cは異なるプログラミング方法で、似ている点もあれば相違点もあります。 しかし、OpenCLとCUDA C言語が並列計算で開発される際には、概念が似ています。これら二つのプログラムはプログラムの類似点が非常に高いため、プログラム同士の移植は比較的簡単です。


CUDA C言語はOpenCLとは異なる位置づけで、つまり異なる人材を使っています。 CUDA Cはハードウェアに詳しくない非専門家でも簡単に使える高水準言語です。 OpenCLはハードウェア指向のアプリケーション開発インターフェースであり、プログラマーがハードウェアをよりコントロールできるようになり、開始や開発がより困難になります。
プログラマーの使用習慣も非常に重要です。X86 CPUプラットフォームでC言語を使う人は、CUDA GPUプラットフォームに基づくC言語を簡単に受け入れられます。 OpenGLのグラフィックス開発に慣れている人はOpenCLをより親しみやすく、その基盤でグラフィックスやビデオに関連するコンピューティングプログラムを開発するのが非常に容易になります。






先の:HttpRuntime Cacheはセットキャッシュ情報カプセル化を読み込みます
次に:なぜMBにアバターを設定させないのか
免責事項:
Code Farmer Networkが発行するすべてのソフトウェア、プログラミング資料、記事は学習および研究目的のみを目的としています。 上記の内容は商業的または違法な目的で使用されてはならず、そうでなければ利用者はすべての結果を負うことになります。 このサイトの情報はインターネットからのものであり、著作権紛争はこのサイトとは関係ありません。 ダウンロード後24時間以内に上記の内容を完全にパソコンから削除してください。 もしこのプログラムを気に入ったら、正規のソフトウェアを支持し、登録を購入し、より良い本物のサービスを受けてください。 もし侵害があれば、メールでご連絡ください。

Mail To:help@itsvse.com