Board: MacnicaSodiaEvaluationBoard
State: planned
Members: MpressionAdmin

このページは現在編集中です。

事前準備

このページではプレビルド SD カードイメージと Sodia ボード用 BSP を使用した OpenCL 開発の手順について解説します。
Sodia ボードで OpenCL 開発を行うためには以下の準備が必要です:
  • Sodia ボード
  • Linux or Windows ホストマシン
    ホストマシンには以下のツールがインストールされている必要があります。
    • Quartus Prime v15.1
    • SoC EDS v15.1
    • Altera SDK for OpenCL v15.1
      Altera SDK for OpenCL を使用したコンパイルにはライセンスが必要です。ライセンスに関するお問い合わせは代理店までご連絡ください。
  • 外付け USB SD カードリーダ or 内蔵 SD カードスロット
  • 4GB (以上の) SD カード or SDHC カード。 実際のイメージは 2GB ですが、通常 SD カードには異常セクタがあるため 2GB の SD カードの場合起動しないことがあります。
  • [ Optional ] DHCP サーバが存在するローカル・イーサネット・ネットワーク (ターゲットボードに IP アドレスを付与することに使用されます)。

Sodia ボードの設定

ここでは OpenCL を実行するために必要なボードの設定に関して解説します。下記の指示にしたがいボードをセットアップしてください。

sodia photo top.png

  • MSEL (J7) の設定
    OpenCL 向け SD カードイメージは、HPS からの FPGA のコンフィギュレーションを実行します。 このため、MSEL は以下の通り、 FPP モードに設定する必要があります。 Sodia ボード表面左上(J7)に MSEL を設定するためのジャンパがあります。 このジャンパ設定を以下の通りとします。

msel_table.PNG   MSEL.png

  • BSEL & CSEL
    SD カードブートを指定します。CSEL は任意の設定で問題ありませんがここでは 00b を選択します。

bsel_table.PNG

csel_table.PNG
  BSEL.png

  • USB-UART コネクタ (CN11)
    コンソールとして使用します。USB ケーブルを介してホスト PC と接続してください。

  • SD カードスロット (CN13)
    セットアップ済みの SD カードを挿入します。

  • HPS Ethernet コネクタ (CN10)
    ターゲットボード上で動作している Linux へのデータの転送に使用します。

ダウンロードコンテンツ

Item Download Ver. Note
All In One SD カードイメージ sodia_opencl_sdimage_v161_r3.zip
v16.1

Linux PC で書き込む場合:
$ sudo dd if=xxx.img of=/dev/sdx bs=1M or
$ sudo dd if=xxx.img of=/dev/mmcblkx bs=1M

Windows PC で書き込む場合:
汎用の書き込みソフトウェアを使用可能です。 Win32DiskImager tool

詳細は以下のページを参照ください:
Creating and Updating SD Card
Booting Linux Using Prebuilt SD Card Image

ボード BSP sodia.zip v15.1 Sodia ボード向け OpenCL BSP v15.1
ボード BSP sodia.zip v16.1 Sodia ボード向け OpenCL BSP v16.1
プレビルド OpenCL アプリケーション hello_world.elf v15.1

ARM Linux 向け OpenCL アプリケーション (SoC EDS v15.1 でビルド)

このイメージは以下のサンプルをベースに作成しています:
Hello World Design Example

プレビルド OpenCL アプリケーション hello_world.elf v16.1

ARM Linux 向け OpenCL アプリケーション (SoC EDS v16.1 でビルド)

このイメージは以下のサンプルをベースに作成しています:
Hello World Design Example

プレビルド OpenCL カーネルイメージ hello_world.aocx v15.1

Altera SDK for OpenCL v15.1 でコンパイルしたカーネルイメージ

このイメージは以下のサンプルをベースに作成しています:
Hello World Design Example
プレビルド OpenCL カーネルイメージ hello_world.aocx v16.1

Intel FPGA SDK for OpenCL v16.1 でコンパイルしたカーネルイメージ

このイメージは以下のサンプルをベースに作成しています:
Hello World Design Example

デバイス・モデル 5cstfd6d5f31i7n_dm.xml v16.1

下記のディレクトリに格納

<Quartus install dir>/hld/share/models/dm

実行手順

SD カードの準備

プレビルドSDイメージを使用したLinuxの起動 ページを参考に、上記 ダウンロードコンテンツ で提供される OpenCL 向け All In One SD カードイメージを書き込みます。 汎用の解凍ツールではエラーとなる可能性があるためコマンドによる解凍を推奨します(SoC EDS 付属の Embedded_Command_Shell を使用可能)。

$ tar zxf sodia_opencl_sdimage_v1511_r3.tar.gz

 

Linux の起動

プレビルドSDイメージを使用したLinuxの起動 ページを参考に、ターミナルソフトウェアの設定と Linux の起動を確認します。

ログインプロンプトが表示されたら、"root"とタイプしログインします。 ネットワーク・インタフェースの情報でログインプロンプトがずれてしまうケースもありますが気にせず "root" でログインしてください。

login.png

プレビルド OpenCL アプリケーション・カーネルイメージを使用した OpenCL の実行

このセクションでは、あらかじめ用意された Sodia 向け OpenCL アプリケーションとカーネルイメージを使用して OpenCL を実行する手順について解説します。

ログイン後、ls コマンドを使用してカレントディレクトリにセットアップ用データが格納されていることを確認します。

$ ls

ls.png

以下のコマンドを実行し、OpenCL を実行する事前準備を行います。 このコマンドを実行することで、OpenCL の実行に必要なドライバのインストールおよび環境変数の設定を行います。

$ source ./init_opencl.sh

以下のコマンドにて、ホストから OpenCL デバイスの診断を実行します。

$ aocl diagnose

aocl diag.png

プレビルドの OpenCL アプリケーション、および、カーネルイメージをターゲット上で動作している Linux に引き渡します。 ここでは SCP コマンドを使用したイーサネット経由でのデータの引き渡し方法を紹介しますがあくまでも一例です。その他の引き渡し方法であっても問題ありません。 下記のコマンドはホスト PC 上の Embedded_Command_Shell より実行してください。 この時、ターゲットのボードの IP アドレスとホスト PC の IP アドレスは同じセグメント上に存在する必要があります。(IP アドレスはご使用の環境に合わせてご変更ください。)
$ scp hello_world.aocx root@XX.XX.XX.XX:/home/root/hello_world.aocx
$ scp hello_world.elf root@XX.XX.XX.XX:/home/root/hello_world.elf

Note: ホストが登録出来ないとのメッセージが出ますが"yes"とタイプすることでデータの転送が行われます。

上記コマンドにてファイルを引き渡すとターゲットボード上の Linux からプレビルド OpenCL アプリケーション、および、カーネルイメージが確認出来ます。

after scp.png

OpenCL カーネルをプログラムします。 (この手順は必須ではありません。)
$ aocl program /dev/acl0 hello_world.aocx

OpenCL アプリケーションを実行します。 (ホストアプリケーションと同じディレクトリに hello_world.aocx を配置しておく必要があります)
$ ./hello_world.elf

exec prebuild image.png

これでプレビルドイメージを使用した Sodia ボード上での OpenCL 実行が確認出来ました。

Sodia ボード向け BSP を使用した OpenCL カーネルのコンパイル

Sodia ボード向け BSP のインストール

ダウンロードコンテンツ からダウンロードした sodia.zip を Altera SDK for OpenCL のインストールディレクトリ配下にある下記ディレクトリにコピーし解凍します。
C:\altera\15.1\hld\board\

ホストマシンのセットアップ

SoC EDS 付属の Embedded_Command_Shell を起動します。

emb cmd shell.png

OpenCL のカーネルイメージをコンパイルするために環境変数のセットアップを実行します。以下の環境変数をセットする必要があります。
ツールのバージョンやインストール先が異なる場合にはご使用の環境に合わせて編集してください。
$ export ALTERAOCLSDKROOT="C:\altera\15.1\hld"
$ export PATH=${ALTERAOCLSDKROOT}/bin:$PATH
$ export AOCL_BOARD_PACKAGE_ROOT=${ALTERAOCLSDKROOT}/board/sodia

環境変数をセットアップ後、以下のコマンドを使用して Sodia 向け OpenCL BSP が認識されていることを確認します。
$ aoc --list-boards

aoc board list.png

サンプルデザインの入手

ALTERA 社の Web サイトにて公開されているサンプルデザインを入手します。 ここではベクタ加算のサンプルを例に紹介します。 以下のリンクより"v15.0 Arm32 (Linux and Windows) package (.tgz)" を選択しダウンロードします。

VectorAdd Sample.PNG

上記で入手したサンプルを任意のディレクトリで解凍します。

vector_add ディレクトリ以下の Makefile を編集します。 57 行目の "TARGET"を vector_add.elf に変更します。 これにより、ターゲット名のコンフリクトを避けると共にビルド後のバイナリデータがわかりやすくなります。

makefile.PNG

Embedded_Command_Shell のカレントディレクトリを vector_add ディレクトリに変更後、以下のコマンドにて OpenCL カーネルのコンパイルを実行します。 この処理には FPGA のコンパイルが伴うため時間がかかります。 (ご使用の PC の性能に依存しますが、20-40 分程度必要です。) このコマンドを実行するにはライセンスが必要です。ライセンスに関するお問い合わせは代理店までご連絡ください。

$ aoc -v device/vector_add.cl -o bin/vector_add.aocx --board sodia_sharedonly

build kernel.png

コンパイルが完了すると bin ディレクトリ以下に vector_add.aocx が生成されます。

ls after kernel compile.png

ARM 向け OpenCL アプリケーションのビルド

ターゲットボード上での ARM で動作している Linux 向けのアプリケーションをビルドします。 vector_add のディレクトリにて以下のコマンドを実行しアプリケーションを生成します。
$ make all

make app.png

ビルドが完了すると bin ディレクトリ以下に vector_add.elf が生成されます。

自作 OpenCL アプリケーション、カーネルを使用した OpenCL の実行

上記にて生成した OpenCL アプリケーションとカーネルイメージをターゲット上で動作している Linux に引き渡します。
$ scp bin/vector_add.aocx root@XX.XX.XX.XX:/home/root/vector_add.aocx
$ scp bin/vector_add.elf root@XX.XX.XX.XX:/home/root/vector_add.elf

Note: ホストが登録出来ないとのメッセージが出ますが"yes"とタイプすることでデータの転送が行われます。

OpenCL カーネルのプログラムと OpenCL アプリケーションの実行を行います。 (ホストアプリケーションと同じディレクトリに vector_add.aocx を配置しておく必要があります)
$ ./vector_add.elf

exec vector add.png

これで自作した OpenCL アプリケーションとカーネルイメージでの実行を確認出来ました。

参考リンク

© 1999-2024 RocketBoards.org by the contributing authors. All material on this collaboration platform is the property of the contributing authors.

Privacy Policy - Terms Of Use

This website is using cookies. More info. That's Fine