インテル® FPGA SDK for OpenCL™ (Open Compute Language) は、従来のハードウェア FPGA 開発フローを抽象化して、はるかに迅速でハイレベルなソフトウェア開発フローを実現します。x86 ベースのホストで OpenCL* C アクセラレーター・コードを数秒間でエミュレートしたり、詳細な最適化レポートで特定のアルゴリズム・パイプラインへの依存関係情報を得たり、仮想 FPGA ファブリック上でアクセラレーター・カーネルを数分間でプロトタイピングしたりして、時間のかかるコンパイルは満足できるカーネルコードを得た後に回すことができます。最適化済みの OpenCL* または RTL 機能を活用すると、ホストから、またはOpenCL* カーネルから直接呼び出すことが可能です。

カスタム・ボード、またはパートナーのボードと、インテル® FPGA SDK for OpenCL™ を使って、今すぐ開発を開始できます。

OpenCL* とは?

OpenCL* 規格は、異機種システムにおけるアルゴリズムの高速化を実現する、業界初のオープンかつロイヤルティー・フリーの統合プログラミング・モデルです。OpenCL* では、C ベースのプログラミング言語を使用して、中央処理装置(CPU)、グラフィック処理ユニット (GPU)、デジタル信号プロセッサー (DSP)、そして FPGA をはじめとする各種プラットフォームで実行可能なコードを開発できます。


OpenCL* は、ソフトウェア・エンジニアにとってはプログラミング・モデルであり、システム・アーキテクトにとってはメソドロジです。OpenCL* は、標準 ANSI C (C99) をベースとして並列処理を抽出するように拡張したものです。OpenCL* には、ホストとハードウェア・アクセラレーターが通信したり (従来は PCI Express* を経由)、ホストとやり取りせずにカーネル間で通信したりするための API も含まれています。アルテラはさらに、10 Gb イーサネットなどのストリーミング I/O インターフェイスからカーネルにデータを直接ストリーミングするための I/O チャネル API もベンダー・エクステンションとして提供しています。OpenCL* の主な利点はロイヤルティー・フリーの移植可能なオープン・スタンダードであることですが、これが独自プログラミング・モデルからの主な差別化要因です。


OpenCL* モデルでは、デバイスごとに 1 つ以上あるコマンドキューへのタスクのスケジューリングをユーザーが行います。その後、OpenCL* ランタイムがデータ並列タスクを分割し、デバイスの処理エレメントに送信します。ホストは、どのハードウェア・アクセラレーターともこの方法で通信を行います。ベンダー固有の実装を抽象化するかどうかは、個々のハードウェア・アクセラレーター・ベンダーに任されます。インテル® FPGA SDK for OpenCL*  では抽象化を行い、OpenCL* 1.0 規格に適合しています。

OpenCL* 1.0 規格については、Khronos の OpenCL* Specification (英語版・PDF) を参照してください。
OpenCL* は、Khronos Group に参加する多くのベンダーによってサポートされています。詳細については http://www.khronos.org/opencl/ をご覧ください。

 

インテル® FPGA SDK for OpenCL™ とは?

インテル® FPGA SDK for OpenCL™ を使用すると、FPGA デザインの複雑性を抽象化し、アプリケーションを FPGA に簡単に実装できるため、ソフトウェア・プログラマーは、OpenCL* 構造を追加した ANSI C ベースの言語である OpenCL* C において、ハードウェアで高速化したカーネル関数を作成できます。インテル® は、ソフトウェア・プログラマーの高速開発フローにさらに迫る、以下のようなツールのスイートも SDK の一部として提供しています。

  • x86 でコードをステップ実行して、正常に機能することを確認するためのエミュレーター
  • ロード/ストア内部ループ依存関係の把握に役立つ詳細な最適化レポート
  • FPGA の構築に伴う長時間のコンパイルを後回しにして、プリビルト FPGA テンプレート上でカーネルコードを実行するためのラピッド・プロトタイピング・ツール
  • 適切なメモリー合体とストールしないハードウェア・パイプラインの確保に役立つカーネル性能に関する知見を提供するプロファイラー
  • カーネルコードで 300 を超える最適化を実行し、FPGA イメージ全体を一度に生成できる OpenCL* コンパイラー

インテル® FPGA SDK for OpenCL™ は完全な製品版で提供されており、インテル® は、FPGA 製造業者として初めて OpenCL* 仕様に適合する OpenCL* ソリューションを提供しています。インテル® FPGA SDK for OpenCL* は、SoC デバイスのエンベデッド ARM* Cortex*-A9 プロセッサー・コア、IBM Power Series コア、標準的な x86 CPU をはじめとする各種ホスト CPU をサポートしています。また、複数の FPGA や複数のボードにまたがるスケーラブルなソリューションをサポートする他、シーケンシャル・アクセス用の DDR SDRAM、ランダムアクセス用の QDR SRAM、低レイテンシー・アクセス用の FPGA 内部メモリーなど、さまざまなメモリーターゲットもサポートしています。さらに、単精度、倍精度に加えて半精度の浮動小数点演算もサポートしています。