Altera SDK for OpenCLで機械学習にチャレンジ FPG カス A なら タム が作 演算器 れる ! 多層ニューラル・ネットワークによる 手書き数字認識の実装 (導入編) 中原 啓貴 Hiroki Nakahara Altera 社から高位合成ツール Altera SDK for OpenCL がリリースされてしばらく経ちます.最新のバージョンはだいぶ使いやすく なってきました.特に BSP(Board Support Package)でサポートされたボードを使うと,SDRAM や PCI Express を含めた周辺回路 を開発する手間も無く,短期間に高性能な計算機を実現することができます.そこで今回は,Altera SDK for OpenCL を導入し,機 械学習の一種であるニューラル・ネットワークを実装して評価するまでの準備編を解説します. FPGA このあたりの 面倒なハード ウェアを BSPで提供 カーネル (FFT,FIR,フィルタ, パケット検索,暗号,圧縮) DDR3 SDRAM×2 PCI Express(+DMAなど) PC ホスト・プログラム 図 1 Altera SDK for OpenCL の動作環境イメージ 1 Altera SDK for OpenCL に ついて ● FPGA の大規模化に対応するために LSI プロセスの微細化に伴って,規則的な構造をも つ大規模な FPGA が比較的安価に入手できるように なってきました.数年前までは考えられなかった規模 の FPGA が手ごろな価格で使えます. 一方で,豊富なロジックと高度な I/O が扱えるよう になったため,ユーザが設計するロジックは大規模・ 複雑化してきていますが,相変わらず短期間での開発 の要求は変わっていません.特に I/O に付属する PCI Express や DDR 系メモリ,高速 Ethernet などをプロ ジェクトごとに開発していたのでは,開発期間が長引 き FPGA を使って短期間にマーケットに投入できる メリットが薄れてしまいます. そこで Altera 社では,周辺回路を一体化した BSP を提供し,かつ,OpenCL を使った高位合成で開発可 能な Altera SDK for OpenCL をリリースしています. ● Altera SDK for OpenCL の動作環境イメージ 図 1 に Altera SDK for OpenCL の動作環境イメー ジを示します.BSP が提供されている FPGA ボード を PCI Express バスに差し込み,PC(ホスト)で実行 したいアプリケーションの一部(カーネル)を高速化 します.Altera 社の Cyclone や MAX シリーズのエン 124 ト リ 向 け FPGA と 異 な り, タ ー ゲ ッ ト FPGA は Arria10 や Stratix V シリーズのハイエンド FPGA で す. 初めから高性能計算向けを狙った開発環境であり, カーネルで動作させるのも FFT や FIR フィルタ,パ ケット検索,暗号,圧縮といったスループット(可能 であればレイテンシも)が必要となるアプリケーショ ン が 多 い で す. 開 発 言 語 が C++ を ベ ー ス と し た OpenCL なので,GPGPU で CUDA や OpenCL を使う イメージを想像しやすいかもしれません.常にさまざ まなアプリケーションが報告されているので,Altera 社のサンプル・プログラム例(1)を見てみることをお 勧めします. ● 従来の FPGA 開発との違い 従来の FPGA 開発と比べて気を付けておくことは, ・大規模 FPGA を使って高性能計算に特化しているこ と.例えば,ビット幅を手で調整してギリギリに詰 め込むことは考えていない. ・どんなアプリケーションでも高性能になるとは限ら な い. 特 に,GPGPU と 差 別 化 で き る か は ア プ リ ケーションによる(ただし,今後出てくるであろう Stratix10 シリーズは浮動小数点演算器を積んでお り,動作周波数も 1GHz を超えるらしいので,初め から GPGPU と同じ土俵で戦おうとしているように 見える) . ・OpenCL+BSP により短期間で(= HDL に触れずに) 開発することを目標とした開発環境であること.特 に,ソフトウェア技術者へ FPGA 導入の敷居を下 げることに注力している.見方によっては狙った通 りに回路が合成できないこともある. ● FPGA と比較した GPGPU のメリット で は, ど の よ う な ア プ リ ケ ー シ ョ ン だ と Altera SDK for OpenCL を使うメリットがあるでしょうか. ホスト PC と連携して高性能計算をすることを考える と,誰でも GPGPU が思い当たると思います. 図 2 に GPGPU と FPGA の違いを示します.GPGPU は広帯域なメモリを用意しており,数千台の CUDA 多層ニューラル・ネットワークによる手書き数字認識の実装(導入編)
© Copyright 2024 ExpyDoc