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

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

7.6. 特定のFPGAボードとカスタム・プラットフォームに対するカーネルのコンパイル (-board=<board_name>) および (-board-package=<board_package_path>)

特定のFPGAボードに対しOpenCL™カーネルをコンパイルするには、 -board=<board_name> オプションをaocコマンドに含めます。
警告: -rtlフラグをともなう中間コンパイル中に、kernel1.clファイルをボードX (-board=X) に、kernel2.clファイルをボードY (-board=Y) にコンパイルすると、 インテル® FPGA SDK for OpenCL™オフライン・コンパイラー aoc -rtl kernel1.aoco kernel2.aocoコマンドを実行した際にエラーメッセージを発行し終了します。

-board=<board_name> オプションをaocコマンドに含めてカーネルをコンパイルすると、 インテル® FPGA SDK for OpenCL™オフライン・コンパイラーは、プリプロセッサー・マクロAOCL_BOARD_<board_name> を1に定義します。これにより、デバイスに最適化されたコードをカーネルにコンパイルすることができます。

  • カスタム・プラットフォームで利用可能な FPGAボードの名前を取得するには、 aoc -list-boards コマンドを呼び出します。
    オフライン・コンパイラーは以下のような出力を生成します。
    Board List:
    FPGA_board_1

    このFPGA_board_1は、<board_name> です。

    特定のカスタム・プラットフォームの利用可能なFPGAボードをすべて一覧表示することも可能です。-board-package=<custom_platform_path> オプションをaocコマンドに含めてください。コマンドプロンプトで次のコマンドを呼び出します。

    aoc –board-package=<custom_platform_path> -list-boards=<board_name>

    インテル® FPGA SDK for OpenCL™オフライン・コンパイラーは、特定のカスタム・プラットフォームで利用可能なボードの一覧を表示します。

  • OpenCLカーネルをFPGA_board_1にコンパイルするには、 aoc -board=FPGA_board_1 <your_kernel_filename>.clコマンドを呼び出します。
    オフライン・コンパイラーは、プリプロセッサー・マクロAOCL_BOARD_FPGA_board_1を1に定義し、FPGA_board_1をターゲットとするカーネルコードをコンパイルします。
  • 複数のカスタム・プラットフォーム (ボードパッケージ) がインストールされている場合、特定のカスタム・プラットフォームのボードバリアントでカーネルをコンパイルできます。-board-package=<custom_platform_path> オプションを -board=<board_name> とともに含めてください。コマンドプロンプトで次のコマンドを呼び出します。
    aoc -board-package=<custom_platform_path> -board=<board_name>

    インテル® FPGA SDK for OpenCL™オフライン・コンパイラーは、<custom_platform_path> で指定されているボードでカーネルをコンパイルします。

  • システムで利用可能なカスタム・プラットフォームのリストを表示するには、-list-board-packagesオプションをaocコマンドに含めます。コマンドプロンプトで aoc -list-board-packages コマンドを呼び出します。 インテル® FPGA SDK for OpenCL™オフライン・コンパイラーは、次の例のような出力を生成します。
    Installed board packages:
    <board_package_1>
    ...
    Board packages shipped with Intel(R) FPGA SDK for OpenCL(TM):
    <board_package_2>
    ...

    この <board_package_N> は、システムにインストールされているカスタム・プラットフォームのボードパッケージ、または インテル® FPGA SDK for OpenCL™ に同梱されているボードパッケージです。

ヒント:

特定のFPGAボードをターゲットとするコンパイル済みのカーネルファイルを容易に識別するため、インテルでは、-oオプションをaocコマンドに含め、カーネルバイナリーの名前を変更することを推奨しています。

  • 1ステップのコンパイルフローでカーネルのターゲットをFPGA_board_1にするには、次のコマンドを呼び出します。
    aoc -board=FPGA_board_1 <your_kernel_filename>.cl -o <your_executable_filename>_FPGA_board_1.aocx
  • 複数ステップのコンパイルフローでカーネルのターゲットをFPGA_board_1にするには、次の作業を実行します。

    1. 以下のコマンドを呼び出し.aocoファイルを生成します。
      aoc -rtl -board=FPGA_board_1 <your_kernel_filename>.cl -o <my_object_filename>_FPGA_board_1.aocr
    2. 以下のコマンドを呼び出し.aocxファイルを生成します。
      aoc -board=FPGA_board_1 <your_object_filename>_FPGA_board_1.aocr -o <your_executable_filename>_FPGA_board_1.aocx
  • 2つのFPGAで構成されるアクセラレーター・ボードの場合、各FPGAデバイスには同等の「ボード」名が付けられます (例えばboard_fpga_1、board_fpga_2など)。kernel_1.clのターゲットをboard_fpga_1、kernel_2.clのターゲットをboard_fpga_2にするには、次のコマンドを呼び出します。
    aoc -board=board_fpga1 kernel_1.cl
    aoc -board=board_fpga2 kernel_2.cl