●スループット11us、レイテンシ33us

 推論結果は11usごとに一つ得られるので、
スループットは11us (1.1kサイクル)、また図3-47のように、画像3枚目の読み出し始めから33us後にその推論結果が得られるので、レイテンシは33usになります。


  図3-47 スループットとレイテンシを測る


●演算速度はほぼスループットで決まる

 図3-48を見ると8枚の画像の推論結果が110usで得られています。1画像当たり13.75usかかることになりますが、画像の枚数が増えると表3-31のようにレイテンシの影響が少なくなり、1画像あたりの演算時間は
11usに限りなく近づきます


  図3-48 画像の枚数が少ないとレイテンシの影響が大きくなる


  表3-31 画像の枚数が多いとレイテンシの影響が少なくなる
画像の枚数 合計推論時間 1枚当たり
8枚 110us 13.75us
80枚 902us 11.28us
800枚 8822us 11.028us
8000枚 88022us 11.003us



  図3-49 演算結果や途中経過も確認

●演算結果がEXCELと合っているか確認

 図3-49は3層目の結果の部分です(27us付近)。このEXCELのa3の行と
ピタリ一致しています。途中経過も確認してみてください。


並列化、パイプライン化の効果をまとめる

 ディープラーニングを第2章でVHDL化し、第3章で徐々に並列化、パイプライン化しました。その高速化の経緯を表3‐32に示します。

  表3-32 41.9倍も高速になった!(演算時間とサイクルはMNIST画像1枚あたり)
章節 行った作業 演算時間 演算サイクル 前段との高速化率 第2章との高速化率
第2章 逐次処理でVHDL化 461us 46.1k 1倍 1倍
第3章1節 1層目を並列化 69.9us 6.99k 6.6倍 6.6倍
第3章2節 2層目を並列化 27.9us 2.79k 2.5倍 16.5倍
第3章3節 パイプライン化 11us 1.1k 2.54倍 41.9倍


●ハードウエア化するのなら速くないと意味がない

 第2章のような「逐次処理のVHDL」では(*3)あまりハードウエア化する意味がありません。そこで第3章で徐々に並列化、パイプライン化し、最終的には
41.9倍も高速になりました。

(*3)例えば高位合成ツール(HLS, High Level Synthesis)などを何も考えずに使うと、第2章のような逐次処理のVHDLになりがち。


●FPGAならPythonの10倍高速になる?

 画像1枚あたりの推論時間が11usということは、10,000枚で110,000us =
110msになります。それに対し、Pythonでの推論時間はここで述べたように1秒程度に感じられます。したがってVHDL化により10倍程度のスピードアップが可能になるかもしれません。

 次章ではいよいよディープラーニングを
FPGAに実装したいと思います。お楽しみに!

最初のページへ


目次へ戻る