”
SDx 2016.3 のプラグマによるハードウェアと性能の違い1”の続き。
前回は、ラプラシアンフィルタを使用して、デフォルトの場合とSDS data zero_copy プラグマを入れた状態でどのようにVivado のブロックデザインが異なるかとその性能を調べた。今回は、SDS data access_pattern にSEQUENTIAL を指定したときのVivado のブロックデザインとその性能を調べた。
まずは、lap_filter2.c の lap_filter_axim() の前に、
#pragma SDS data access_pattern(cam_fb:SEQUENTIAL, lap_fb:SEQUENTIAL)
を追加した。
SDRelease でビルド後に生成された workspace\lap_filter2\SDRelease\_sds\p0\ipi のVivado 2016.3 プロジェクトを開いて結果を見た。
前回のデフォルトの時と LUT, LUTRAM, FF は同じパーセンテージだが、BRAM が53 % から 33 % になっている。DSP も20 % が 13 % だった。
ブロックデザインを示す。
前回のデフォルトの時と同様の回路図だが、リソース使用量が違うので、どこか違うのだろうと思う。
workspace\lap_filter2\SDRelease\sd_card の内容をMicro SD カードにコピーした。
ZYBO に挿入して電源ONした。
Linux が立ち上がった。
cd /mnt と
./lap_filter2.elf を実行した。
性能的には前回のデフォルトの場合と変化がない。ソフトウェアに対してハードウェアが10倍程度遅いときもあれば、6倍程度遅いときもある。性能にむらがある。
性能にむらがあるのはACP ポートを使っているためかもしれないので、SDS data sys_port プラグマの AFI ポートを指定して、AXI_HP ポートを使うようにしてみよう。なお、AFI ポートはAXI_HP ポートのことを指すようだ。
lap_filter2.c の lap_filter_axim() の前に、
#pragma SDS data sys_port(cam_fb:AFI, lap_fb:AFI)
を追加した。
SDRelease でビルド後に生成された workspace\lap_filter2\SDRelease\_sds\p0\ipi のVivado 2016.3 プロジェクトを開いて結果を見た。
SDS data sys_port プラグマを指定する前と変化はない。
ブロックデザインを示す。
使用しているPS のスレーブ・ポートがAXI_ACP ポートからAXI_HP ポートに変更になった。
workspace\lap_filter2\SDRelease\sd_card の内容をMicro SD カードにコピーした。
ZYBO に挿入して電源ONした。
Linux が立ち上がった。
cd /mnt と ./lap_filter2.elf を実行した。
やはり、性能的にはむらがあるのは変わらない。どうしてだろう?
- 2017年01月05日 04:49 |
- SDSoC
-
| トラックバック:0
-
| コメント:0