インテル® FPGA SDK for OpenCL™プロ・エディション: プログラミング・ガイド

ID 683846
日付 4/01/2019
Public
ドキュメント目次

B. インテル® FPGA SDK for OpenCL™ プロ・エディション・プログラミング・ガイドの改訂履歴

ドキュメント・バージョン インテル® Quartus® Primeのバージョン 変更内容
2019.04.01 19.1
2018.12.24 18.1.1
2018.09.27 18.1
2018.09.24 18.1
2018.08.03 18.0
2018.06.14 18.0
2018.05.23 18.0
2018.05.04 18.0
日付 バージョン 変更内容
2017年12月 2017.12.08
2017年11月 2017.11.06
  • トピックを各章へ移動しました。
  • リファレンスの商標を次のように変更しました。
    • マクロALTERA_CLINTELFPGA_CL
    • 環境変数ALTERAOCLSDKROOTINTELFPGAOCLSDKROOT
    • 環境変数 CL_CONTEXT_PROGRAM_VARIABLES_TOTAL_SIZE_ALTERA CL_CONTEXT_PROGRAM_VARIABLES_TOTAL_SIZE_INTELFPGA
    • clGetExtensionFunctionAddressclGetExtensionFunctionAddressIntelFPGA
    • 環境変数 CL_CONTEXT_EMULATOR_DEVICE_ALTERA CL_CONTEXT_EMULATOR_DEVICE_INTELFPGA
    • write_channel_alterawrite_channel_intel
    • write_channel_nb_alterawrite_channel_nb_intel
    • CL_MEM_BANKCL_CHANNEL
    • CL_MEM_BANK_1_INTELCL_CHANNEL_1_INTELFPGA
    • CL_MEM_BANK_2_INTELCL_CHANNEL_2_INTELFPGA
    • Arria 10を インテル® Arria® 10
    • Quartus Primeをインテル Quartus Primeへ
    • インテル® FPGA SDK for OpenCL™ Profilerを インテル® FPGA Dynamic Profiler for OpenCL™
    • TimeQuestタイミング・アナライザーをTiming Analyzer
    • Qsys ProをPlatform Designer
  • インテル FPGA SDK for OpenCLのFPGAプログラミング・フロー に、FPGAデータフローのアーキテクチャー図と関連する記述を追加しました。
2017年5 月 2017.05.08
2016年10 月 2016.10.31
  • Altera SDK for OpenCLを インテル® FPGA SDK for OpenCL™ に商標を変更しました。
  • Altera Offline Compilerを インテル® FPGA SDK for OpenCL™オフライン・コンパイラーに商標を変更しました。
  • ビッグエンディアン・システムに対するサポートが廃止、削除されたため、次の内容が変更になっています。
    • ビッグエンディアン・システムのためのカーネルのコンパイル (--big-endian) の項目を削除
    • ビッグエンディアン (64ビット) を、ホスト・アプリケーションがターゲットにできるアーキテクチャーのリストから削除
  • OpenCLバイナリーのコンパイル環境の表示の項目を追加し、aoc envコマンドを導入しました。
  • 最適化レポートへのソースの参照先追加 (-g) を削除しました。オフライン・コンパイラーは自動的にソース情報をコンパイラー・レポートに含め、x86 Linuxマシンでのエミュレーション中のシンボリック・デバッグを有効にします。
  • コンパイラー・レポートのデバッグデータの削除および.aocxファイルのソースコードの削除 (-g0) の項目を追加し、-g0 aocコマンドオプションを導入しました。
  • インテル® FPGA SDK for OpenCL™ エミュレーターの制限事項から、「エミュレーターはハーフデータ型をサポートしません」という記述を削除しました。
  • ホスト・アプリケーションとKhronos ICD Loader Libraryのリンクにおいて、サポート内容を更新しました。インテルが提供するICD Loader Libraryは、OpenCL Specification version 1.0および、OpenCL Specification version 1.1、1.2、2.0で実装されているAPIをサポートします。
  • FPGAボードの管理における以下内容を更新しました。
    • SDKが複数のカスタム・プラットフォームのインストールをサポートすることを明記。複数のボードをインストレールする際にSDKユーティリティーを各ボードに使用するには、AOCL_BOARD_PACKAGE_ROOT環境変数設定が関連するボードのカスタム・プラットフォームのサブディレクトリーに対応している必要があります。
    • カスタム・プラットフォームが複数あるシステムでは、MMDライブラリーに直接リンクするのではなく、ホストプログラムがACDを使用しボードを検出する必要があることを明記
  • カーネルのreport.htmlファイルのレビューの章を追加し、analyze-areaユーティリティー・オプション廃止の通知を追加しました。HTMLレポートの導入により、以下の項目を削除しました。
    • エリアレポートでのカーネルのリソース使用率情報のレビュー
    • エリアレポートへのアクセス
    • エリアレポートのレイアウト
  • 複数のステップによるデザインフローのデザイン手順および複数のステップによるインテルFPGA SDK for OpenCLデザイン・フローの図を更新し、エリアレポートをHTMLレポートに置き換えました。また、-gを有効化するための情報を削除しました。
  • レジスターの推論のコード例に続く文章において、ハードウェアでの配列の実装をオフライン・コンパイラーが決定する方法の説明を訂正しました。
  • WindowsでのICD Loader Libraryのリンクの内容をより明確化しました。
  • OpenCL機能のサポートの章に次の更新を行いました。
    • Altera SDK for OpenCLを インテル® FPGA SDK for OpenCL™ に商標を変更
    • Altera Offline Compilerを インテル® FPGA SDK for OpenCL™オフライン・コンパイラーに商標を変更
    • インテル® FPGA SDK for OpenCL™ 割り当ての制限の章の次の内容を修正
      • ランタイムの最小メモリー割り当てに関する情報を更新
      • 最大キュー数を70から256へ更新
      • FPGAデバイスあたりの最大カーネル数の64を変更。ハードウェアにコンパイルする場合の静的な制限はなくなり、エミュレーターにコンパイルする場合は256になります。
    • OpenCL 1.0 Cプログラミング言語の実装の半精度浮動小数点の備考欄に、この機能はエミュレーターでサポートされているという注記を追加。さらに、半精度浮動小数点のサポート状況を「X」から「○」へ更新。
    • OpenCL 2.0機能のサポート状況に、OpenCL 2.0のヘッダーを加え、OpenCL 2.0のヘッダーを使用しサポートされていないAPIを呼び出すとエラーの原因になることを追記
2016年5月 2016.05.02
  • AOCLプログラミング・モデルの回路図をAltera SDK for OpenCL FPGA Programming Flowの章に追加しました。
  • AOCL FPGAプログラミング・フローの図を、Altera Offline Compiler Kernel Compilation Flowsの章へ移動しました。
  • 複数ステップでのAOCLデザインフローの図とそれに関連する内容を、エリアレポートのレビュー手順を含めて更新しました。
  • 単一ワークアイテム・カーネルに向けた単一サイクル浮動小数点アキュムレーターの機能に関する情報を追加しました。詳細は、単一ワークアイテム・カーネルに向けた単一サイクル浮動小数点アキュムレーターの章を参照ください。
  • OpenCLカーネルのエミュレーションの章に、ICDを使用する他のOpenCL SDKとともにエミュレーションを行うための複数のデバイスサポートに関する情報を追加しました。
  • 強化されたエリアレポート機能に関する情報を追加しました。
    • analyze-area AOCLユーティリティー・コマンドを呼び出し、HTMLエリアレポートを生成するオプションを追加
    • HTMLエリアレポートのレイアウトを説明する項目を追加
  • WindowsでのICD Loader Libraryのリンクにおいて、変更後のMakefileのコード例から、$(AOCL_LDLIBS) を削除しました。
  • チャネルおよびパイプの複数のワークアイテムの順序付けの章において、チャネルまたはパイプ呼び出しがワークアイテムに対し不変であることを確認するためにAOCLが使用する特性を変更しました。
  • インテル FPGA SDK for OpenCLアドバンスト機能の章を追加しました。
  • OpenCL機能のサポート状況の章のOpenCL 1.2のランタイムの実装に、AOCLがclSetEventCallbackclGetKernelArgInfoclSetMemObjectDestructorCallback のAPIをサポートすることを注記しました。
2015年11月 2015.11.02
  • aocコマンドを引数なしで呼び出し、Altera Offline Compilerのヘルプメニューにアクセスするオプションを追加しました。
  • 複数のホストスレッドの章を更新し、OpenCL™ホストランタイムはスレッドセーフであることを明記しました。
  • 複数のカーネルのソースファイル・サポートを反映するため、以下の図と章を更新しました。
    • AOCL FPGAプログラミング・フローの章のAOCL FPGA プログラミング・フローの図
    • ハードウェアのコンフィグレーション・ファイルを作成するためのカーネルのコンパイルの章
    • ハードウェアを構築せずに行うカーネルのコンパイル (-c) の章
  • チャネルに対する複数のワークアイテムの順序付けの誤解を招く文章を削除しました。
  • チャネル実装の概要の図を更新しました。
  • 次の章のOpenCLパイプに関する内容を更新しました。
    • OpenCLパイプ機能の概要パイプ・ネットワーク実装の概要の図
    • OpenCLのパイプ実装における制約の章のエミュレーション・サポート
    • 誤ったコードを正しい構文に修正
    • パイプハンドルの宣言io属性を使用したI/Oパイプの実装にリンクを追加
  • ホストを経由したFPGAのプログラミングに注意事項を追記しました。イベント・オブジェクトは使用後に解放し、過剰なメモリー使用を防ぐ必要があります。
  • OpenCL機能のサポート状況の以下の内容を更新しました。
    • OpenCL Specificationのバージョンに基づき、各機能のサポート状況と制限事項を分類
    • OpenCLに準拠する倍精度浮動小数点関数リストに次の関数を追加

      sinh / cosh / tanh / asinh / acosh / atanh / pow / pown / powr / tanh / atan / atan2 / ldexp / log1p / sincos

    • OpenCL 1.2のランタイムの実装に、サブバッファー・オブジェクトのサポートを追加
    • OpenCL 1.2のランタイムの実装に、共有仮想メモリーに対する暫定サポートを追加
    • Altera SDK for OpenCL割り当ての制限に、ランタイムの最小グローバルメモリーの割り当て制限を追加
2015年5月 15.0.0
  • カーネルの命名ガイドラインに、OpenCL カーネルをkernel.clと命名することに反対する内容を追記しました。
  • パフォーマンス・カウンターを使用したカーネル・パイプラインの測定 (-profile) に、ローカルディスクからホスト・アプリケーションを実行し、低速なネットワーク・ディスク・アクセスに起因する潜在的な遅延を回避する必要があることを明記しました。
  • OpenCLカーネルのエミュレーションとデバッグの注記を変更し、SoCをターゲットとするデザインのエミュレーションはSoC以外のボードで行う必要があることを示しました。
  • OpenCLカーネルのエミュレーションの、ホスト・アプリケーションを実行するコマンドを更新し、 <process_ID>-libkernel.soを含むデフォルトの一時ディレクトリーを上書きする命令を追加しました。
  • カーネルコンパイル時のハードウェア生成フィッティング・エラーの解決に、--high-effort aocコマンドフラグを導入しました。
  • 倍精度浮動小数点演算の有効化に、倍精度浮動小数点演算を有効にするためのOPENCL EXTENSIONプラグマを導入しました。
  • OpenCLパイプのサポートを導入しました。詳しくは、OpenCLパイプの実装 (また、その章内の項目) および、ホスト・アプリケーションでのパイプ・オブジェクトの作成を参照してください。
  • AOCLチャネル拡張の制約に、チャネルIDの配列への静的なインデックス付けの方法を表すコード例を追加しました。
  • 複数のホストスレッドに、OpenCLホスト関数の呼び出しを複数のスレッドを持つホスト・アプリケーションで同期するための推奨事項を追加しました。
  • ICDとACDのサポートを導入しました。詳しくは、ホスト・アプリケーションとKhronos ICD Loader Libraryのリンクを参照してください。
  • clGetBoardExtensionFunctionAddressAlteraを導入し、ユーザーが利用可能な関数をリファレンスできるようにしました。詳細は、カスタム・プラットフォーム固有の関数へのアクセスを参照してください。
  • OpenCL機能のサポート状況の以下内容を更新しました。
    • Altera® SDK for OpenCL™が暫定的にサポートする倍精度浮動小数点関数の一覧を表示
    • OpenCL Cプログラミング言語のパイプにおける制約を追記
2014年12月 14.1.0
  • 情報フローを再編成しました。Altera ® SDK for OpenCL™ (AOCL) またはAltera RTE OpenCLを使用して実行する可能性のある作業に基づき情報を提供しています。
  • --util <N> および-O3のAOC (Altera Offline Compiler) オプションに関連する情報を削除しました。
  • OpenCLカーネルのコンパイルに、以下のPLDA QuickUDP IP コアライセンスに関する情報を追加しました。
    1. PLDA QuickUDP IP コアライセンスはStratix® Vネットワーク・リファレンス・プラットフォーム、またはQuickUDP IP コアを使用するカスタム・プラットフォームに必要です。
    2. QuickUDP IP コアライセンスを不適切にインストールすると、QuickTCP IP コアに関するエラーメッセージが表示されコンパイルは失敗します。
  • 大規模なシフトレジスターの条件付きシフトは推奨されないという注記を追加しました。
  • 複数のデバイスでのシステムのエミュレーションの章を削除しました。現在は新しいenv CL_CONTEXT_EMULATOR_DEVICE_ALTERA=<number_of_devices> コマンドが、複数のデバイスをエミュレーションするために利用可能です。
  • 言語サポートの制限をAOCL エミュレーターの制限の章から削除しました。
  • OpenCL機能のサポートの章のAOCLの割り当て制限で、FPGAあたりの最大カーネル数を32から64に更新しました。
2014年6月 14.0.0
  • --estimate-throughputおよび--sw-dimm-partitionのAOCオプションを削除しました。
  • -march=emulator-g--big-endian--profileのAOCオプションを追加しました。
  • --no-interleavingは、<global_memory_type> 引数を必要とします。
  • -fp-relaxed=trueは現在--fp-relaxedです。
  • -fpc=trueは現在--fpcです。
  • SoC以外のデバイスにおいて、 aocl diagnostic は現在 aocl diagnose および aocl diagnose <device_name> です。
  • programおよびflashは、<device_name> 引数を必要とします。
  • FPGAボードのデバイス名の識別を追加しました。
  • AOCLプロファイラー・ユーティリティーを追加しました。
  • AOCLのチャネル拡張と関連する項目を追加しました。
  • チャネルの属性を追加しました。
  • ホストとカーネルにおける構造体データ型のデータレイアウトの一致を追加しました。
  • レジスター・インターフェイスおよびシフト・レジスター・インターフェイスを追加しました。
  • Channels and Multiple Command Queuesを追加しました。
  • SoCで動作するOpenCLカーネルの共有メモリーアクセスを追加しました。
  • カーネル実行中におけるプロファイル・データの収集を追加しました。
  • OpenCLカーネルのエミュレーションとデバッグと、それに関連するサブ項目を追加しました。
  • AOCカーネルのコンパイルフローを更新しました。
  • -vを更新しました。
  • ホストバイナリーの要件を更新しました。
  • グローバル・メモリー・アクセスの分割異種グローバル・メモリー・アクセスの分割を、グローバル・メモリー・アクセスの分割に統合しました。
  • 付録AAOC割り当ての制限を更新しました。
  • max_unroll_loopsmax_share_resourcesnum_share_resourcestaskのカーネル属性を削除しました。
  • packedaligned(<N>) のカーネル属性を追加しました。
  • OpenCL機能のサポート状況の章の、以下AOCL割り当て制限の内容を更新しました。
    • 最大コンテキスト数
    • 最大キュー数
    • コンテキストあたりの最大イベント・オブジェクト数
2013年12月 13.1.1
  • -Wと-Werror」の章を削除し、「-W」と「-Werror」の2章に再編成しました。
  • 複数のデバイスのサポートを反映するために次の内容を更新しました。
    • AOCL FPGAプログラミング・フローの図
    • --list-boardsの章
    • -board <board_name> の章
    • 複数のFPGAデバイスのプログラミングの項目を、FPGAのプログラミングに追加
  • 異種グローバルメモリーのサポートを反映するため、以下の内容を追加しました。
    • --no-interleavingの章
    • カーネルのプラグマと属性buffer_locationのカーネル属性
    • 異種グローバル・メモリー・アクセスの分割の章
  • 付録:OpenCL機能のサポート状況において、サポート状況の指定を更新しました。
  • OpenCLプログラミング言語の実装の章から、OpenCLプログラミング言語の制約に関する情報を削除しました。また、新しくOpenCLプログラミング言語の制約の章を作成しその内容を記載しました。
2013年11月 13.1.0
  • 情報フローを再編成しました。
  • インテル® FPGA SDK for OpenCL™ コンパイルフローを更新後、AOCL FPGAプログラミング・フローにタイトルを変更しました。
  • 1ステップでのAOCコンパイルフロー 2ステップでのAOC コンパイルフローの図を追加しました。
  • AOCLバージョン13.1の内容の章を更新しました。
  • 以下の章を削除しました。
    • OpenCLカーネルソース・ファイルのコンパイル
    • Altera Offline Kernel Compilerの使用
    • FPGAボードの設定
    • 特定のFPGAボードのターゲット
    • OpenCLアプリケーションの実行
    • カーネルソース・ファイルの統合
    • アライメントされたメモリー割り当て
    • FPGAハードウェアのプログラミング
    • FPGAのフラッシュメモリーのプログラミング
  • OpenCLカーネル・ソース・ファイルのコンパイルを更新後、AOCコンパイルフローへ名称を変更しました。
  • OpenCLカーネルへのファイルスコープ構造の受け渡しOpenCLカーネルでの構造体引数の使用にタイトルを変更しました。
  • カーネル属性とプラグマの指定によるOpenCL カーネルの拡張を更新し、カーネルのプラグマと属性へタイトルを変更しました。
  • FPGAへのカーネルのロードFPGAのプログラミングにタイトルを変更しました。
  • ホストプログラムのコンパイルおよびリンクホストプログラムのコンパイルの設定および、ライブラリー・パスとリンクを1つの章に統合しました。
  • プリプロセッサー・マクロの章を追加しました。
  • グローバル・メモリー・アクセスの最適化のタイトルをグローバル・メモリー・アクセスの分割に変更しました。
2013年6月 13.0 SP1.0
  • FPGAボードの設定の章を追加しました。
  • カーネル・プログラミング時の考慮事項から、ターゲットFPGAボードの指定の項目を削除しました。
  • 特定のFPGAボードのターゲットコンパイルレポートの生成の項目を、OpenCLカーネル・ソース・ファイルのコンパイルに追加しました。
  • ファイルスコープ__constantアドレス空間修飾子のタイトルを__constant アドレス空間修飾子に変更し、次の項目を挿入しました。
    • 関数スコープ__constant変数
    • ファイルスコープ__constant変数
    • ホストからの__constantパラメーターの指定
  • OpenCLカーネルへのファイルスコープ構造の受け渡しの項目をカーネル・プログラミング時の考慮事項に追記しました。
  • カーネル属性とプラグマの指定によるOpenCLカーネルの変更カーネル属性とプラグマの指定によるOpenCLカーネルの拡張にタイトルを変更しました。
  • カーネル属性とプラグマの指定によるOpenCLカーネルの拡張の章のunrollプラグマ・ディレクティブの内容を更新しました。
  • 順不同のコマンドキューおよび構造パラメーター変換に向けたホストプログラムの変更の項目をホスト・プログラミング時の考慮事項に追加しました。
  • clCreateProgramWithBinaryを使用したFPGAへのカーネルのロード およびアライメントされたメモリー割り当ての章を更新しました。
  • フラッシュ・プログラミング手順を更新しました。
  • 付録 Bオプションの拡張の内容を更新し、アトミック関数にタイトルを変更しました。
  • 付録 Bからプラットフォーム・レイヤーとランタイムの実装を削除しました。
2013年5月 13.0.1
  • 明示的なメモリーフェンス機能がサポートされるようになったため、関連する内容をOpenCLプログラミング言語の実装の表から削除しました。
  • FPGAのフラッシュメモリーのプログラミングの章を更新しました。
  • カーネル属性とプラグマの指定によるOpenCLカーネルの変更の章を追加し、カーネルのパフォーマンスを最適化するために実装可能なカーネル属性とプラグマを導入しました。
  • グローバル・メモリー・アクセスの最適化の章を追加し、データの分割に関する説明を追加しました。
  • 付録Aから、aoclプラグムコマンドを使用したFPGAのプログラミングの章を削除しました。
2013年5月 13.0.0
  • コンパイルフローを更新しました。
  • カーネルのコンパイラー・コマンドを更新しました。
  • Altera® SDK for OpenCL™ユーティリティー・コマンドを追加しました。
  • OpenCLプログラミング時の考慮事項を追加しました。
  • フラッシュ・プログラミング手順を更新し、これを付録Aに移動しました。
  • 新しいclCreateProgramWithBinary FPGAハードウェア・プログラミング・フローを追加しました。
  • ホストを必要としないclCreateProgramWithBinaryハードウェア・プログラミング・フローを、付録Aaoclプラグマコマンドを使用したFPGAプログラミングに移動しました。
  • 割り当て制限とOpenCL言語サポートに関する最新情報を付録Bへ移動しました。
2012年11月 12.1.0 初版