OpenCLとは何ですか?
並列プログラミングのための OpenCL 標準は、マルチコアおよびヘテロジニアス コンピュート プラットフォームのプログラミングの課題に対処するために Khronos Group 産業コンソーシアムにより開発されました。 OpenCL 仕様は、単一のプログラミング モデルと、標準に準拠するすべてのハードウェア プラットフォームでサポートされるシステム レベルの抽象化セットを定義しています。 つまり、ソフトウェア エンジニアは単一のプログラミング モデルを習得し、それを複数のベンダーのデバイスで直接使用できます。
OpenCL は、効率性と移植性を備えた close-to-the-metal ソフトウェアの開発をサポートするプログラミング言語とランタイム API を提供します。 さらに、OpenCL は、OpenCL 実装が基礎となるハードウェアの多くの詳細を公開することを可能にする低レベルのハードウェア抽象化を提供します。 これらの低レベルの抽象化とは、OpenCL 仕様に記述されているプラットフォーム、メモリ、および実行モデルです。 これらの概念が FPGA 上の物理的な実装にどのように変換されるかを理解することは、アプリケーションの最適化に必要です。
この章では、OpenCL プラットフォーム モデルとその FPGA デバイスへの拡張について概説します。 OpenCL プラットフォーム モデルとメモリ モデルの SDAccel 生成実装へのマッピングを説明します。 また、ザイリンクス SDAccel ツールを使用して、最新の FPGA を活用し、高レベルのパフォーマンスを実現する方法についても言及します。