インテル® FPGA SDK for OpenCL* はデザイン開発を開始するために必要なツールを多数提供しています。こちらのデベロッパー・ゾーンで、デザインを成功に導くための事例や開発プラットフォーム、パートナーをご覧いただけます。

関連リンク

 

Optical Flow & Pedestrian Detection Implemented with OpenCL* (英語版)


OpenCL* と FPGA への入門として、低コスト・低消費電力 SoC によって、動き予測および歩行者検出アルゴリズムを高速化します。

 

 

Object Detection and Recognition with Neural Networks (英語版)


当社のパートナーである iAbra が、OpenCL* を使用して FPGA に構築した畳み込みニューラル・ネットワークで物体の検出および認識シナリオを高速化する機械学習をどのように実証しているかをご紹介します。

 

 

Ray Tracing Demo Using OpenCL* on an SoC (英語版)

Cyclone® V SoC FPGA のエンベデッド ARM* プロセッサーを使って、ホストとアクセラレーターの両方をシングルパッケージに組み合わせることで、OpenCL* を使った光線追跡アルゴリズムを加速するために、インテル® 製品がいかにシステムの複雑さを軽減することが可能なのかについて解説します。

 

OpenCL* を利用した異機種システム向け統合プラットフォーム (英語版)

OpenCL* が異機種コンピューティング向けの統合プラットフォームとして適している理由をご覧いただけます。このデモでは、GPU 向けに記述された NVIDIA コードのターゲットを Stratix® V FPGA に変更します。

 

 

 

 

OpenCL* を使用し、機能を FPGA にオフロードさせることで実現するアルゴリズムの性能向上 (英語版)

 

演算を多用する反復的浮動小数点アルゴリズムであるマンデルブロー・アルゴリズムの性能が、OpenCL* によっていかに向上するかをご覧いただけます。

 

 

 

 

インテル® FPGA SDK for OpenCL* は、FPGA への OpenCL* アプリケーションの容易な実装を可能にする拡張された効率的なデザイン環境です。インテル® FPGA OpenCL* アプリケーション・デベロッパーは、OpenCL* ベースの製品開発を強化できるサービス、ソフトウェア、およびその他の IP (Intellectual Property) を提供します。インテルの開発パートナーは、以下のような幅広いアプリケーション分野の専門知識を有しています。

  • 高性能コンピューティング
  • 金融取引、シミュレーション、解析
  • 防衛、インテリジェンス、航空宇宙
  • 画像処理、医療システム、バイオインフォマティクス
  • 石油・ガス探査のための計算

 

デザイン例

以下に、インテル® FPGA SDK for OpenCL* をサポートする FPGA ボードを搭載したホストでコンパイルおよび実行できるさまざまなアプリケーションを OpenCL* で記述する方法を、それぞれに関連するホスト・アプリケーションとともに示します。

基本例

デザイン例 機能 利点 説明

Hello World

  • デバイスを初期化し、カーネルを実行するための OpenCL* API (Application Programming Interface)
  • スタートガイド
この単純なデザイン例は、printf 呼び出しとそれに対応するホストプログラムを含む基本 OpenCL* カーネルを示します。

ベクトル加算

  • OpenCL* API
  • 大きな問題を複数のデバイスに分割
  • OpenCL* イベントおよびイベントのプロファイリング
  • スタートガイド
この単純なデザイン例は、基本的なベクトル加算 OpenCL* カーネルとそれに対応するホストプログラムを示します。
マルチスレッド
ベクトル演算
  • マルチスレッド・ホスト
  • 高度なホストコード
2 つのホストスレッドで、2 つのカーネルが同時に起動します。
OpenCL* ライブラリー
  • OpenCL* ライブラリー
  • 高度なカーネルコード
Verilog および VHDL コードを含む OpenCL* ライブラリーを使用してカスタム機能を実装するデザイン例。

ネットワーク・プラットフォーム例

デザイン例 機能 利点 説明
OPRA FAST パーサ
  • 単一動作項目カーネル
  • I/O チャネル
  • 低レイテンシー
  • 10 G リンクの飽和
このデザイン例は、一般に高頻度取引アルゴリズムに使用されるストリーミング・パーサを示します。このパーサは OPRA FAST データストリームを受け入れ、アップストリームで使用するためにフィールドを展開します。ストリーミング・メッセージを効果的に処理して 10 G リンクを飽和させる方法を説明します。

HPC プラットフォーム例

デザイン例 機能 利点 説明
チャネライザー
  • カーネルチャネル
  • 複数の同時カーネル
  • 単一動作項目カーネル
  • 性能
  • カーネルチャネルのスタートガイド
このデザイン例は OpenCL* を使用した高性能チャネライザーのデザインを示します。チャネライザーは、PFB (Polyphase Filter Bank) を高速フーリエ変換と組み合わせて、得られた周波数スペクトルでのスペクトルリークの影響を低減します。
ドキュメント・フィルタリング
  • 24 ビット整数での動作
  • パフォーマンス
このデザイン例では、高性能のドキュメント・フィルタリングを実現する ブルームフィルターの使用方法を示します。

有限差分計算 (3D)

  • 単精度浮動小数点の最適化
  • 単一動作項目カーネル
  • メモリーの冗長使用最小化への最適化
  • 性能
このデザイン例は OpenCL* を使用した高性能 3D 有限差分ステンシルのみの計算と、スライド・ウィンドウ・データの再利用パターンの効率的な記述方法を示します。

FFT (1D)

  • 単精度浮動小数点の最適化
  • 単一動作項目カーネル
  • 性能
このデザイン例は、OpenCL* を使用した高性能 1D Radix-4 複素高速フーリエ変換 (FFT) または逆高速フーリエ変換 (IFFT) エンジンを示します。この例は、効率的なスライド・ウィンドウ・データの再利用パターンの利点を生かしたものです。

FFT オフチップ (1D)

  • 単精度浮動小数点の最適化
  • カーネルチャネル
  • メモリーアクセスの最適化
  • 性能
  • カーネルチャネルから始める
このデザイン例は、100 万ポイント FFT の高性能実装です。このような大規模 FFT は FPGA 上で完結できないため、この例はメモリーアクセスの効率的な管理方法を示します。
FFT (2D)
  • 単精度浮動小数点の最適化
  • カーネルチャネル
  • メモリー・アクセス・パターンの最適化
  • 複数の同時カーネル
  • 単一動作項目と NDRange カーネルの混合
  • 性能
  • カーネルチャネルのスタートガイド
このデザイン例は、OpenCL* を使用した高性能 2D Radix-4 複素 FFT/IFFT エンジンを示します。このエンジンは大きな問題サイズ (デフォルトでは 1024 x 1024) をターゲットとし、グローバルメモリーに中間転置を格納します。この例で強調している 1 つの側面は、グローバルメモリーで行列を効率的に転置する方法です。
Gzip 圧縮
  • 単一動作項目カーネル
  • ストリームに似た処理
  • 発行された論文、実装、および結果
  • 高性能 (対 CPU、RTL、および ASIC)
  • 性能と圧縮品質をパラメーター化可能

 

このデザイン例は、インテル® FPGA 向け OpenCL* を使用した高性能 Gzip 圧縮の実装を示します。
JPEG デコーダー
  • 単一動作項目カーネル
  • カーネルチャネル
  • メモリー転送とカーネル呼び出しのオーバーラップ
  • 視覚的出力
  • パフォーマンスの拡張性
  • カーネルチャネルのスタートガイド
このデザイン例は、性能が向上した JPEG デコーディング・ソリューションを示します。
マンデルブロー・フラクタル・レンダリング
  • 倍精度浮動小数点の最適化
  • 複数デバイスへの分割
  • 視覚的出力
  • パフォーマンスの拡張性
このデザイン例は、マンデルブロー・フラクタル・コンバージェンス・アルゴリズムを実装して結果を画面に表示するカーネルを含んでいます。
行列乗算
  • 単精度浮動小数点の最適化
  • ローカルメモリーへのバッファリング
  • コンパイラーの最適化
  • 複数デバイスでの実行
  • パフォーマンスの拡張性
  • 最適化方式のスタートガイド
この例は、計算固有のデータ再利用性を活用したループタイリングによって基本行列乗算を最適化するものです。
モンテカルロ・ブラック・ショールズのアジア向けオプション価格設定
  • 倍精度浮動小数点の最適化
  • カーネルチャネル
  • 複数デバイスでの実行
  • 複数の同時カーネル
  • 拡張可能な電力効率に優れたパフォーマンス
  • カーネルチャネルのスタートガイド
このデザイン例では、モンテカルロ・ブラック・ショールズのアジア向けオプション価格設定シミュレーションを実装します。この例は、それぞれがシミュレーションのさまざまな部分 (乱数発生、パス・シミュレーション、および累積) を実行し、インテルのチャネルベンダー拡張を使用して通信する複数のカーネルが同時に実行する場合を示します。
ソーベルフィルター
  • 整数計算
  • 単一動作項目カーネル
  • 効率的な 2D スライド・ウィンドウ・ライン・バッファー
  • 性能
このデザイン例は、イメージのエッジを検出してフィルター後のイメージを画面に表示する、OpenCL* で記述されたソーベルフィルターのシームレスなソフトウェア・ソリューションを示します。

タイムドメイン FIR フィルター

  • 単精度浮動小数点の最適化
  • 効率的な 1D スライド・ウィンドウ・バッファーの実装
  • 単一動作項目カーネル
  • 最適化方式
  • 性能
  • 最適化方式のスタートガイド
このデザインは、HPEC チャレンジ・ベンチマーク・スイートからタイムドメイン FIR フィルター・ベンチマークを実装します。このデザイン例は、浮動小数点 FIR フィルターの性能を向上させるのに FPGA が GPU アーキテクチャーよりはるかに優れていることを示す好例です。

ビデオのダウンスケーリング

  • カーネルチャネル
  • 複数の同時カーネル
  • メモリー・アクセス・パターンの最適化
  • 視覚的出力
  • 性能
  • カーネルチャネルのスタートガイド
このデザイン例では、1080p のビデオを入力して 720p のビデオを 110 フレーム/秒で出力するビデオ・ダウンスケーラーを実装します。この例では、複数のカーネルを使用してグローバルメモリーとの間で効率的にリード/ライトします。

Cyclone® SoC プラットフォーム例

デザイン例 機能 利点 説明

多機能プリンター誤差拡散

  • 単一動作項目カーネル
  • スライド・ウィンドウ・デザイン・パターン
  • 多機能プリンタ・システムの一部
  • 性能
このデザインはコア・プリンター・パイプラインの一部であり、Floyd Steinberg 誤差拡散アルゴリズムの一種を実装します。カーネルが CMYK イメージを取り込み、すべてのピクセルをハーフトーン化した同等のイメージを作成します。そのような出力は、レーザーシステムに送る前のプリンタ内イメージ処理の最終ステージです。この例には、「FPGA Acceleration of Multifunction Printer Image Processing Using OpenCL*」というタイトルのホワイトペーパー(英語版)が用意されています。

オプティカル・フロー

  • 単一動作項目カーネル
  • スライド・ウィンドウ・デザイン・パターン
  • リソース利用率低減技術
  • 視覚的出力
  • 性能
このデザイン例は、Lucas Kanade オプティカル・フロー・アルゴリズムを OpenCL* で実装したものです。Cyclone® V SoC 開発キットで 80 フレーム/秒超で動作する、ウィンドウサイズが 52x52 である非ピラミッド型の高密度非反復バージョンが示されています。

OpenCL と OpenCL ロゴは Apple Inc. の商標であり、Khronos の許可を得て使用しています。

* 製品は、公開されている Khronos 仕様に基づいており、Khronos 適合性試験プロセスに合格済みです。現在の適合状況については www.khronos.org/conformanceをご覧ください。

FPGA の柔軟性と実装できるさまざまなカスタマイズ可能ハードウェア・アーキテクチャーを活用するために、弊社は OpenCL* (Open Computing Language) の評価、カスタム OpenCL* アプリケーションの開発、および FPGA アクセラレーターを搭載したカスタムボードの開発を素早く体験できるリファレンス・プラットフォームの概念を取り入れました。リファレンス・プラットフォームは、リファレンス・デザインがボードと通信するのに必要なハードウェア・レイヤーとソフトウェア・レイヤーの両方を含んでいます。

従来の OpenCL* モデルのホストは、PCI Express* (PCIe*) を介してアクセラレーター・システムにデータを渡していました。高性能コンピューティング (HPC) プラットフォームを使用するシステムには、ホストがアクセラレーターに送信するデータを処理するための大容量ローカルストレージが必要です。そのようなアプリケーションは、広いメモリー帯域幅を必要とし、コンピューティング能力が最も重視されるシステムです。このプラットフォームは、OpenCL* アクセラレーターの標準プラットフォームです。

標準 HPC プラットフォーム・アーキテクチャーの評価は、以下のいずれかの方法で開始できます。

  • HPC プラットフォーム上で動作するリファレンス・デザインをダウンロードし、OpenCL* アプリケーションの開発フローを学習する。
  • インテルの推奨ボードベンダーのボードの 1 つで HPC プラットフォームをダウンロードする。
  • 以下のインテルの推奨ボードベンダーのいずれかのロゴをクリックして、HPC プラットフォームをサポートする市販の商用 (COTS) ボードを購入する
弊社 OpenCL* パートナー 日本国内でのお問い合わせ先


株式会社アルティマ

お問い合わせ: 
こちらのページよりお問い合わせください。

 


株式会社フィックスターズ

ボード詳細およびお問い合わせ:
Stratix® V FPGA アクセラレーターボード



株式会社アイダックス

ボード詳細およびお問い合わせ:
OpenCL* 向け Stratix V FPGA 評価ボード

 


株式会社アルティマ

お問い合わせ: 
こちらのページよりお問い合わせください。

 


株式会社アルティマ

お問い合わせ: 
こちらのページよりお問い合わせください。



Terasic

お問い合わせ:
Echo Yjxiao
Eメール:yjxiao@terasic.com

 


Pico Computing, Japan

お問い合わせ:
Masanobu Kawaminami
Eメール:
mkawaminami@picocomputing.com

 
GIDEL

立野電脳株式会社

お問い合わせ
Eメール:
sales@dsp-tdi.com

リファレンス・プラットフォームを使用して独自のカスタムボードを開発する方法については、「カスタム」タブをご覧ください。

ネットワーク・プラットフォームが従来の OpenCL* モデルと異なる点は、PCIe* のコマンドおよびステータスパスからデータパスを抽出することです。データは、2 つの 10 Gb UDP (User Datagram Protocol) ポートを介して、ホストとやり取りせずに I/O チャネルを使用してカーネルにストリーミングされます。このストリーミング・アーキテクチャーにより、ホストがデータパス・パイプラインをコンフィグレーションし、従来の FPGA 開発者が行っていたものよりはるかに低レイテンシーのデータ処理パスを実現できます。このプラットフォームは、低レイテンシーが重視されるアプリケーションに適しています。

低レイテンシー・ネットワーク・プラットフォーム・アーキテクチャーの評価は、以下のいずれかの方法で開始できます。

  • ネットワーク・プラットフォーム上で動作するリファレンス・デザインをダウンロードし、OpenCL* アプリケーションの開発フローを学習する。
  • インテルの推奨ボードベンダーのボードの 1 つでネットワーク・プラットフォームをダウンロードする。
  • 以下の弊社推奨ボードベンダーのいずれかのロゴをクリックして、ネットワーク・プラットフォームをサポートする COTS ボードを購入する。
弊社 OpenCL* パートナー 日本国内でのお問い合わせ先
BittWare

株式会社アルティマ

お問い合わせ: 
こちらのページよりお問い合わせください。

 
Nallatech

株式会社フィックスターズ

ボード詳細およびお問い合わせ:
Stratix® V FPGA アクセラレーターボード


Notes:

リファレンス・プラットフォームを使用して独自のカスタムボードを開発する方法については、「カスタム」タブをご覧ください。

SoC プラットフォームは、従来の OpenCL* モデルと同様に ARM* ホストと FPGA アクセラレーターの間のデータ受け渡しに共有グローバルメモリーを使用しますが、SoC プラットフォームの共有グローバルメモリーは同じパッケージです。オプションバージョンとして、FPGA アクセラレーター側にスクラッチ DDR3 DRAM インターフェイスを追加したアーキテクチャーもあります。

Cyclone® V SoC プラットフォームの評価は以下の方法で開始できます。

  • ネットワーク SoC プラットフォーム上で動作するリファレンス・デザインをダウンロードし、OpenCL* アプリケーションの開発フローを学習する。
  • Cyclone® V SoC 用 SoC リファレンス・プラットフォームに付属するインテル® SDK for OpenCL* をダウンロードする。
  • 以下に挙げる推奨ボードベンダーから、ネットワーク・プラットフォームをサポートする COTS ボードを購入する。
Terasic Arrow

関連リンク

必要な FPGA アクセラレーターのアーキテクチャーが上記の既存カテゴリーに該当しない場合は、これらのリファレンス・プラットフォームが独自のカスタム FPGA の開発を支援する出発点になります。既存の SoC プラットフォームまたはネットワーク・プラットフォームから出発し、コンポーネント・インターフェイスを削除または変更して必要なものを得て再構築するだけです。これは、従来の FPGA デザインを使用して OpenCL* カーネルがカスタム・ボード上の I/O インターフェイスと通信するための「I/O リング」を構築します。


以下を用意するだけで独自のカスタム FPGA アクセラレーター・ボードを開発できます。

資料

カスタム・プラットフォーム・ツールキットWindows または Linux* ダウンロード

  • プラットフォーム用ロー・テンプレート
  • I/O インターフェイスの機能を果たすボード・テスト・カーネル
  • ドライバーの構築を開始するための MMD ヘッダーファイル
  • PC プラットフォーム・マイグレーション・テキスト・ファイル (バージョン 13.1 以降)
     

既存のプラットフォームを使用して変更するために現時点で利用可能なリファレンス・プラットフォームは以下のとおりです。

インテル® Arria 10 GX FPGA 開発キット・リファレンス・プラットフォーム

 Stratix® V FPGA ネットワーク・リファレンス・プラットフォーム: s5_net (w/ PLDA UDP stack):

Cyclone® V SoC リファレンス・プラットフォーム

弊社パートナーの一部はすでにボードを開発し、リファレンス・プラットフォームを移植して評価用または量産用として販売しています。サードパーティの量産ボードは、インテルの OpenCL* 対応推奨ボード・パートナー・プログラムの厳格な要件に従ってテストされます。推奨ボードだけが、9,000 を超える地搗お回帰テストにより、インテルの最新デバイス・アーキテクチャーとデザイン・ソフトウェアに最適化されています。インテルは、これらの厳選されたパートナーと密接に協力して推奨ボードが継続して基準を満たすようにしています。インテルの OpenCL* 対応推奨ボードには、一般に以下が含まれています。

  • 個別の OpenCL* ボード・デザイン・ファイル (プラットフォームを含む)
  • インテル® Quartus® Prime 開発キット・エディション・ソフトウェア (1 年間の評価ライセンス)
  • インテル® FPGA SDK for OpenCL* のライセンス
  • リファレンス・デザイン
  • 提供資料

サードパーティー・ボード

サードパーティーの推奨ボードは、インテルの推奨ボードパートナーから直接購入していただきます。各認定ボードのライセンス条件はパートナーによって異なります。インテルの推奨 OpenCL* ボードは、サードパーティー・パートナーが慎重に開発して可能な限り高い品質を保証しています。問題が推奨ボードまで遡ることが判明した場合は、パートナーが問題を解決する責任を負います。インテル® FPGA SDK for OpenCL* に問題が発生した場合は、インテルが適切な技術サポートを提供します。

保証

サードパーティーのインテル® FPGA SDK for OpenCL* 推奨ボードは、インテルによる保証なしで提供されます。インテルは、パートナーが提供するボードに関する商品性、特定目的への適合性、権原、非侵害の黙示的な保証など、明示的または黙示的を問わず一切の保証を否認します。インテルの推奨ボードパートナーがデザイン性能または機能に対する保証を提供する場合があります。詳細については、個々のパートナーにお問い合わせください。

最適化のトレーニング

 

OpenCL* Optimization Techniques: Secure Hash Algorithm (SHA-1) Example ( 7分 )

このトレーニングでは、SHA-1 (Secure Hash Algorithm) を例にしながら、OpenCL* 実装を FPGA 向けに最適化するために使用する最適化手法を簡単に概説します。

 

OpenCL* Optimization Techniques: Image Processing Algorithm Example ( 8分 )

このトレーニングでは、画像処理アルゴリズム用の FPGA における OpenCL* を対象としたアーキテクチャー上の最適化アプローチを簡単に概説します。

 

Single-Threaded vs. Multi-Threaded Kernels ( 17分 )

ループ・パイプラインと並列スレッドの違いを理解し、シングルスレッド (タスク) とマルチスレッド (NDRange) パイプラインの使い分けの方法を習得します。

 

Optimization and Emulation Flow in Intel® FPGA SDK for OpenCL* ( 6分 )

FPGA で高速化したアプリケーションをエミュレーターや詳細な最適化レポート機能で最適化する方法を紹介します。

 

How to Do Reductions (英語版・PDF)

 

Being Careful with Memory Access Part 1 (英語版・PDF)

 

Being Careful with Memory Access Part 2 (英語版・PDF)

 

Optimizing OpenCL* for Intel® FPGAs ( 1日 )

このインストラクターによるトレーニングでは、インテル® FPGA に最適化したカーネル関数の記述を重点的に学習します。実習も行います。

 

OpenCL* のトレーニング

 

Introduction to FPGA Acceleration for Software Programmers Using OpenCL*™
(ソフトウェア・プログラマのための OpenCL* を使用した FPGA のアクセラレーション)
 ( 23分 )

このトレーニングでは、OpenCL* を使用し FPGA をターゲットにして、競合アクセラレータの平均 1/5 の消費電力で高速化したカスタム・システムを開発する方法、FPGA がソフトウェア実行を高速化するためのリソースとして重要視される現状、および OpenCL* がアクセラレーションをソフトウェア開発者に利用しやすいものにしている理由を解説します。

 

FPGA vs GPGPU (英語版・21 分)

このビデオでは、FPGA が GPGPU よりはるかに少ない制約条件とはるかに高い柔軟性によって電力効率に優れた高速化をどのように実現するかを解説します。インテル® は、GPGPU の固定されたアーキテクチャーにはない、この柔軟性を生かして問題を解決する手法を比較して対照させます。

 

OpenCL* on Altera SoC FPGA (Linux Host)

Part 1 – Tools Download and Setup ( 5分 )

Part 2 – Running the Vector Add Example with the Emulator ( 4分 )

Part 3 – Kernel and Host Code Compilation for SoC FPGA ( 4分 )

Part 4 – Setup of the Runtime Environment ( 7分 )

これらのトレーニングでは、Linux* 環境において SoC で OpenCL* の使用を開始する手順を順番に説明します。

 

Introduction to Parallel Computing with OpenCL* ( 30分 )

OpenCL* 規格の概要とアルテラの OpenCL* ソリューションを使用する利点について解説します。

Writing OpenCL* Programs for Intel® FPGAs ( 1時間 )

OpenCL* 規格の基本を理解し、簡単なプログラムの作成方法を学習します。

Running OpenCL* on Intel® FPGA ( 30分 )

インテル® の SDK for OpenCL* について学習し、インテル® FPGA で OpenCL* プログラムをコンパイルして実行する手順を学びます。

 

Building Custom Platforms for Intel® FPGA SDK for OpenCL*
(インテル® FPGA SDK for OpenCL* 向けカスタム・プラットフォームの構築)
 ( 1時間 )

ボードとインテル® SDL for OpenCL* に使用する、カスタム・ボード・サポート・パッケージの作成方法を学習します。

 

Parallel Computing with OpenCL* Workshop ( 1日 )

このインストラクターによるトレーニングでは、並列コンピューティング、OpenCL* 規格、および FPGA デザインフロー向け OpenCL* の概要について解説します。このトレーニングでは、カーネルを記述することではなく、ハードウェア高速化向け OpenCL* 環境を構築するための FPGA 固有の部分を重点的に学習します。