Special
» 2016年02月24日 10時00分 UPDATE

演算器を100個並べられるなら、どんなソートアルゴリズムを使う?:Fluentd、Memcached、IoT、ドローン、機械学習、映像解析――ソフトとハードを隔てる壁が壊れつつある今、ITエンジニアは現実的に何ができるようになるのか

これまでになく、ソフトウェアエンジニアの間でFPGAへの関心が高まる昨今、本企画では、FPGAベンダーであるザイリンクスの神保直弘氏、ソフトウェア開発者の立場でFPGAに取り組むイベント「FPGAエクストリーム・コンピューティング」を主宰する佐藤一憲氏、そしてブログサイト「FPGAの部屋」を書き続けてきた小野雅晃氏に集まってもらい、座談会を実施した。「FPGAネイティブ世代」の登場により、ソフトウェアとハードウェアの間に在った壁が壊されようとしている現状をお伝えする。

[PR/@IT]
PR

 これまでになく、ソフトウェアエンジニアの間でFPGA(Field Programmable Gate Array)への関心が高まっている。ドワンゴがニコニコ動画の配信向けにFPGAエンジニアを募集。バイドゥがディープラーニングの高速化にFPGAを導入。インテルがアルテラを買収。ザイリンクスがIBMと提携するなど、2015年はソフトウェアエンジニアの間でもFPGAの話題が多く聞かれた。

 そこで、本企画では、FPGAベンダーであるザイリンクスの神保直弘氏、ソフトウェア開発者の立場でFPGAに取り組むイベント「FPGAエクストリーム・コンピューティング」を主宰する佐藤一憲氏、そしてブログサイト「FPGAの部屋」を書き続けてきた小野雅晃氏に集まってもらい、座談会を実施した。

xilinx_zadan1.jpg 座談会出席者(左から神保直弘氏(ザイリンクス、グローバルセールスアンドマーケットマーケティング部 シニアマネージャー)、佐藤一憲氏(IT企業勤務、「FPGAエクストリーム・コンピューティング」主宰)、小野雅晃氏(ブログサイト「FPGAの部屋」主宰))

 「FPGAネイティブ世代」の登場により、ソフトウェアとハードウェアの間に在った壁が壊されようとしている現状をお伝えする。

(以下、敬称略)

FPGAの需要が、ハードウェア開発からソフトウェア開発へと広がる

神保 ザイリンクスでマーケティングを担当しています。10年前は、FPGAといえばASIC(Application Specific Integrated Circuit)の試作に使うのが主だったのですが、この10年で大きく様変わりしました。今では、テレビなどの民生機器や自動車向け機器などにFPGAで組んだロジックが載るようになり、採用分野が広がりました。さらに最近では「コンピューティングパワーとしてのFPGA」という見方をしていただけるようになりました。

佐藤 「FPGAエクストリーム・コンピューティング」を主宰しています。現在勤務している会社で出会った最近の若い人たちは、大学のカリキュラムにおいて、FPGAでCPUを作る授業を受けていました。彼らからFPGAで作ったファミコンエミュレータやLispマシンの話を聞いて、衝撃を受けました。

 それで3年ぐらい前に内輪でイベントを開催したのが「FPGAエクストリーム・コンピューティング」の始まりです。それが面白かったので、2回目以降は広く人を集めるようにして、何回か開催しています。

xilinx_zadan2.jpg 小野雅晃氏(ブログサイト「FPGAの部屋」主宰)

小野 ブログサイト「FPGAの部屋」を書き続けています。2015年の5月に、ちょうど10年目を迎えました。書き始めた頃はFPGAの情報が少なかったので、何かを書いて自分でまとめておきたいと考えました。10年たったことで、Google検索すると自分のブログがヒットすることも多くなって。自分の補助記憶として使っています。

佐藤 FPGAで何か作業をして調べ物をすると、必ず「FPGAの部屋」が出てくるんですよ。スクリーンショット付きで説明を載せてくれていますが、あれがありがたい。

小野 自分のためなんですよ。あれがないと自分でも分からなくなっちゃうから。

──FPGAに関心がある人同士の交流は、どんな形で始まったのですか?

佐藤 ブログとTwitterが大きいなと。開発者同士が交流するのは、Web開発の分野では当たり前です。できる人はTwitterを見ていたり、はてなブックマークを見ていたりします。情報がオープンになっている。

神保 今まで、ハードウェアの世界ではユーザーさん同士のコミュニティーは少なかったんですね。会社の肩書を背負って参加するユーザー会はあるけれども、個人レベルでの情報交換を頻繁にできる世界ではありませんでした。それがFPGAの分野では、小野さんのブログ、佐藤さんのイベントのような形で人的なネットワークが広がっている。これは、ここ数年でうれしかったことの一つです。

佐藤 「FPGAエクストリーム・コンピューティング」でいろいろな方にお会いすると、会社の名刺を持ってくる方が多いですね。

 ソフトウェアエンジニアの勉強会だと、お互いの肩書は分からなくて、TwitterのIDだけで通じています(注:佐藤氏 @kazunori_279、小野氏 @marsee101)。飲み会の場になってよく聞くと、実は有名企業の第一線のエンジニアであることが分かったりする。そういうソフトウェアのコミュニティーのノリが、FPGA方面でも一部では浸透してきた感じがあります。でも、イベントに応募してくる方の6〜7割はハードウェア分野の方です。ソフトウェアの方はまだ少ない。

小野 ハードウェアの人、ソフトウェアの人も、どちらも交流して情報交換した方がいいですね。ハードウェアを作る人もLinuxを載せて使いたい、といったニーズがあるし、ソフトウェアの人も、性能が出なかったらFPGAのようにハードウェアにオフロードすれば解決できる場合があります。

低価格のボード、開発ツールの無償公開でハードルがぐっと下がった

佐藤 つい最近、ARMのCPUコアを搭載したSoC(System on a Chip)のボードを触り始めたのですが、ツールキットが進化していることに驚きました。今まではWindows環境を用意してツールをインストールしていた。ところが、最近だとLinuxをサポートしている。

 GitHubというソフトウェアエンジニアにとってなじみが深いソフトウェアリポジトリがあって、そこにハードウェア用のツール群がシェアされつつある。GitHubからソースコードをダウンロードしてビルドして使う。これは、組み込み分野も変わってきたなと思います。

神保 ザイリンクスは、2011年にARMコアとFPGAをワンチップにした「Zynq-7000 All Programmable SoC」という製品を出しました。その頃から、金融分野のHFT(High Frequency Trade、高頻度取引)のように、まずアルゴリズムがあり、その実行速度を加速するためにFPGAを使うやり方があると気が付いた人が出てきました。ユーザーが自由にハードウェアをプログラムできるFPGAならではの広がり方でした。

佐藤 FPGAがメリットを発揮するのは、データを右から左に処理しつつ流すストリーム処理や、暗号化などです。スループットの高さやレイテンシ(遅延)の短さが重要で処理が単純、そういう処理はFPGAにぴったりです。

 小野さんのブログ「FPGAの部屋」を拝見すると「Zynq-7000」を搭載した「ZedBoard」(注:Zynq-7000 AP SoC搭載の開発キット)というのがあるらしいと。これだと思いました。しかも、今ではこういう実売2万円台ぐらいのボードを買えば、FPGAベンダーが提供する開発ツールを無償で使えるようになっていた。これが非常に重要なんですね。

新チップ登場でFPGAでも高速処理が可能に

小野  Zynqが出たとき、これだと思いました。すごく良いと思ったことは、FPGAからCPUのL2キャッシュに直接書き込めること。今まで、CPUとFPGAをメモリ経由で通信させるとレイテンシが長かった。それが解決した。

佐藤 CPUとFPGAでL2キャッシュを共有しているので、非常に高速にCPUとFPGAを結べる設計になっていますね。

──CPUと高速に通信できるFPGAには、どのような活用法がありますか?

xilinx_zadan3.jpg ザイリンクス、グローバルセールスアンドマーケットマーケティング部 シニアマネージャー 神保直弘氏

神保 2020年の東京オリンピックに向けて4Kや8Kの高精細動画のニーズが強くなってきていますね。このニーズに答えるために、弊社では2015年にZynqの第2世代である「Zynq UltraScale+ MPSoC」というチップも出荷を開始しました。

 ZedBoardのように、数万円クラスの安価な評価ボードは、なるべく多くのユーザーに試してもらいたいと思っています。ソフトウェア開発者が、Linuxベースで開発したソフトウェアのアクセラレータとしてFPGAを使ってもらいたいと。そこで従来は別途購入をお願いしていた「高位合成」と「解析機能」をデフォルトで、つまり無償で開発ツールに含めて提供します、という「Vivado Design Suite - HLx Edition」を、2015年12月に発表しています。

──FPGAユーザーの裾野を広げる意図があるのでしょうか。

神保 ザイリンクスでは、今後5年でユーザー数を5倍にしようとの目標値を設定しています。FPGAといえばハードウェア設計に携わる人が使うものでしたが、今後はソフトウェア開発者も含めて、壁がなく、いろいろな方に自由に設計してもらえる世界にしたい。会社の方向性として、そのように考えています。

IoT、映像処理、自動車、画像処理、ディープラーニングなどに活用

──高速になったFPGA搭載SoCは、どのような用途に使われていますか?

神保 Zynqの場合、よく問い合わせを頂くのは、IoT(Internet of Things)関連の装置です。IoTの世界になって、たくさんのセンサーやカメラから得た情報を全部インターネットに流していたらすぐに回線がパンクしてしまいます。エッジコンピューティング、つまり端末側である程度の情報処理をする能力が求められます。

 例えば、「フルHDクラスの監視カメラで人間だけを認識して、その画像だけを録画、送信する」みたいなことですね。高解像度映像のリアルタイム処理は、画素数やフレームレートが増えると処理性能への要求が厳しくなります。そこでハードウェアによるアクセラレーションは有効です。

 最近特に採用数が伸びている分野でいうと、自動車ですね。例えばADAS(次世代運転支援システム)です。このアプリケーションでは、カメラやセンサーの情報を活用して人物や物体の認識処理を行いドライバーの運転支援を実現していますが、自動車なのでリアルタイム処理性能が厳しく要求されます。例えば、時速60キロからの衝突回避ブレーキは、1秒でも処理が遅れたら致命的です。CPUやGPUで認識処理を行う場合、負荷による処理時間の変動がありますのでレイテンシを一定に保つのは困難です。Zynqの場合、認識処理をハードウェアで行えるので、レイテンシを低く一定にコントロールできます。

 また、画像の認識アルゴリズムが急速に進化している点も重要です。ASICだと、アルゴリズムを決めてからハードウェアが完成するまでに1年から2年はかかります。ところが画像処理分野では、新しいアルゴリズムがどんどん出てきます。そこで、ZynqのようにCPUコアを載せたFPGAが使われています。

 このようにZynqは、IoT機器、産業機器、ロボットなどの分野に対しては非常に「はまり役」といえます。

佐藤 ディープラーニングのアルゴリズムもものすごい勢いで進化していますから、そこの事情は似ています。自動車関連でも、GPUを使って歩行者認識をする例が出てきていますし、最近ではデータセンターの電力性能比の問題でFPGAを使う例が増えています。例えば、バイドゥやマイクロソフトの取り組みが出てきています。

──ニューラルネット、ディープラーニングなどの分野は、FPGAに向いているのですね?

佐藤 基本的には積和演算ですから、ストリーム処理をしやすいんです。FPGAは浮動小数点演算が弱いんですけど、ディープラーニングは、倍精度や単精度の浮動小数点が必ず必要というわけではなく、精度をぐんと落とした固定小数点を用いるとか、そういった手法が出てきています。

小野 私がやったニューラルネットによる画像処理では、固定小数点を使ってます。

佐藤 最近の「FPGAエクストリーム・コンピューティング」で一番熱いのが、高位合成です。ザイリンクスさんは「Vivado」というツールを持っていますが、先ほど神保さんがおっしゃったようにC言語やJava言語でハードウェアの振る舞いを書き下せる設計ツールが無償で公開されたことは大きなニュースです。年間数千万円が必要なツールがある世界ですから。「高級言語から生成したハードウェアでLチカ」が簡単にできるようになりました。

Web分野のFluentdやMemcachedもFPGAで爆速に

───その他にも、注目しているユースケースはありますか。

xilinx_zadan4.jpg 佐藤一憲氏(IT企業勤務、「FPGAエクストリーム・コンピューティング」主宰)

佐藤 FPGAの良いところは、CPUとASICの中間だという点です。ソフトウェアの良さとハードウェアの良さを両方兼ね備えています。ASICを起こすほどではなかったアプリケーション領域のロジックを、ソフトウェア開発者が記述できる。

 例えば、「Fluentd」というソフトウェアがあります。Webサーバなどで発生するログを収集するツールですね。日本のWeb開発の現場では8割方使われているのではないかというほど普及しています。これは基本的にはRubyで書かれていて、あまり高速ではありません。1台のマシンで毎秒数万レコード程度を処理するには、かなりのCPUリソースを消費します。

 このFluentdのプロトコルをFPGAの上で書いたら、動いたんですね。TCP/IPについては専用チップを使いました。ソフトウェアの世界では、CPU、OS、TCP/IP、Rubyというスタックが順番に積み上がって、その上でFluentdが動いていた。それをFPGAで実現すると、ns(ナノ秒)の範囲で扱えてしまう。

 このように、アプリケーションの問題の一部を、ハードウェアで解けるようになるんです。ログ収集やテキストのパターンマッチのような処理であれば、FPGAでも十分に実装可能です。

 それから、ザイリンクスの研究成果として、キャッシュサーバの「Memcached」のプロトコルをザイリンクスのFPGAで直接実装したら、実効で10Gbpsがフルに出た。これには驚きました。ソフトウェアで実現すると、24コアとか32コアをフルに走らせないと出せない性能が、はるかに低い消費電力で実現できます。

FPGAネイティブ世代に期待

佐藤 ディープラーニングの分野でも、最近面白い議論があります。機械学習の手法で「勾配降下法」という最適解を得るためのアルゴリズムが広く用いられています。これがソフトだと傾きを計算して解を求めるのですが、FPGAだと対象領域を全探索すればいいじゃん、と。そういう手法が提案されています。

 最近は、大学でFPGAに触った人がどんどん現場に入っていて。そういう「FPGAネイティブ」な世代は、ハードウェアならではの発想を持っています。

 従来型のソフトウェア屋さんは、CPUで逐次的に動かすアルゴリズムしか発想できないんですね。例えば、ソートのアルゴリズムではクイックソート(Quick Sort)が良いとされていますが、あれは演算器が1個のCPUを想定したアルゴリズムです。FPGAを使って演算器を100個並べることができるなら、ソートネットワークのように時間計算量を格段に抑えられる手法を取ることも可能です。これまで顧みられることがなかったアルゴリズムが、FPGAでよみがえる例も出て来るでしょう。

小野 シンプルなFFT(高速フーリエ解析)なら、横並びに演算器を並べて1クロックごとに1つの計算結果を出力できますね。

佐藤 例えば、マイクロソフトのBingの事例では、Web上のテキストをFPGAに流してあげて、MISD(Multiple Instruction stream, Single Data stream)、つまりデータは一種類で複数の処理を並列実行する手法が用いられています。違うアルゴリズムに同じデータを流して一度に処理させることができる。

──新しい使い方の知識が蓄積されつつあるのですね。FPGA分野の知識の蓄積はどんな形で行われていますか。

神保 初めての方がチャレンジする場合、引っ掛かるところはある程度共通しています。そこで、先陣を切って走っている小野さんのブログ「FPGAの部屋」を見ていただくのがいいですね。海外だと、「zedboard.org」というWebサイトがあります。「Zynqをどう使うのが良いか」「どうシステムを構成するのが良いか」そうした知識を共有して作りやすさを改善しようとするサイトです。

佐藤 新しい取り組みが出てきている背景として、ソフトウェアエンジニアには二つの閉塞感があるんですね。一つは、ここ数年、CPUの性能向上が頭打ちになっていることです。インテルは、それを分かっているから、FPGAベンダーを買収したんですね。

 もう一つはマルチコアの使いこなし方が難しいことです。一般的なプログラミングでは、何十コアをフルに使いこなすのは至難の業で、使えてせいぜい4コア程度のケースが多い。これ以上、並列度を上げにくい閉塞感があります。

 そこで、これからはFPGAなどハードウェアアクセラレーションだと。さらに、データセンター分野に限って言えば、電力対性能比の問題もあります。巨大なデータセンターは電力を食い過ぎる。こうした、今のエンジニアが抱えている問題をFPGAがある程度まで解決してくれる期待があります。

──大きな流れとして、「ハードとソフトの境界線を壊していこう」という動きがあるわけですね。最後に、今後のFPGAはどうなるとお考えですか?

神保 FPGAの良さは、コンピューティングパワーを加速する仕組みであることですね。もう一つ、市場で求められているのはシステムの消費電力を抑えることです。

 先ほどお話ししたようにIoT分野のエッジコンピューティングでは、システムに許される消費電力はかなり制限があります。例えば自動車のフロントカメラ部に提供される電力は全部で5ワット程度です。これではCPUやGPUなどは実装できません。このような限られた電力容量の環境で高性能のコンピューティングを実現可能なのがFPGAです。

佐藤 IoTに関連してですが、本郷飛行機という東京大学発のベンチャーが「Phenox」というZynqが載っているドローンを作っています。ドローンがカメラ画像を処理して自律的に動きます。これは低消費電力で画像をリアルタイム処理できるFPGAがぴったり当てはまる用途です。

 今までのCPUは基本的に逐次処理。なので、CPUの上でソフトウェアを作ることに慣れ親しんだ私のような「CPUおじさん」には、FPGAでできることをイメージすることは難しいのです。若い頃からFPGAに触れているFPGAネイティブ世代が活躍することで、シリコン(半導体)の並列性を100%生かせるコンピューティングが広がっていくと期待しています。

小野 Zynqの路線は、良いと思います。私自身も、これでいこうと感じました。ただし今のところ、高位合成のソフトウェアでFPGAのロジックを書いちゃうと、まだ性能が出しきれない。構成に応じたソースコードを書かないと、思うように性能が向上しません。ソフトウェアのコンパイラに最適化オプションがあるように、高位合成にもオプションが欲しいと思っています。このフラグを立てると「リソースは食うけど速くなる」みたいな奴ですね。

佐藤 ソフトウェアだと時間軸で考え、ハードウェアだと空間軸で考えます。ソフトウェアのようにループで繰り返し処理をするのではなく演算器を並べて並列実行する。「ループを書かずに空間軸に展開しろ」というプラクティスがある。それを分かりやすくリファクタリングできる開発環境があるといいですね。

神保 はい。今後も、ハードウェアとソフトウェアの間の壁を取り除ける、より良い開発環境とデバイスをサポートしていきたいと思います。

──ありがとうございました。

Copyright© 2017 ITmedia, Inc. All Rights Reserved.


提供:ザイリンクス株式会社
アイティメディア営業企画/制作:@IT 編集部/掲載内容有効期限:2016年3月23日

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。