質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.50%

  • 機械学習

    964questions

    機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

  • 深層学習

    220questions

  • FPGA

    18questions

FPGAのデメリットについて?

解決済

回答 7

投稿 編集

  • 評価
  • クリップ 1
  • VIEW 4,932

oookabe

score 46

7年前頃、FPGAについて非常に注目して理想な画像処理装置と思っていました。
ところが、調べるに連れてがっかりしました。
以下は私がFPGAに対する認識ですけれども、どんなご意見でも宜しいですので、
ぜひご批判、ご高見を承りたい。

① 有名なFPGAメーカー(2つ)ともにIP(知的な資産)を強調して、基本道具としてのFFTでさえライセンス料を払わなければ利用できない(処理サイズの小さいFFTならフリーだけど)。
これに対してNVIDIAのGPU環境では何でも「フリー」----いろんなGPU化済みの数学LIBをただで、即座に利用できる。

② 開発環境:FPGAが高価な開発環境、開発ツールが必要  (GPUは無料)

③ GPUに任せる仕事は事前に知る事が必要なく、アプリケーション起動してからどんな仕事を任せても良いし,どんな並行実行要望を出してもエラーにならない(リソースが足りたい場合、自動スケジューリングしてくれて、能率良く実行してくれる)。に対して、FPAGを起動時点でこれからやる仕事を全部FPGAに知らせる必要。

④ FPGAは実行時動的に変更や、部分的に変更(並列処理内容の変更)ができない
-----将来的にできる?

⑤ ソフトコードを論理回路に変換する(焼き付ける)時間が長く==一日以上かかる事もあるって、開発とデバグ、修正能率が悪い。

⑥ FPGAアプリケーションのバージョン更新には専門知識が必要とし、普通のエンドユーザができないので、問題があればFPGAそのものを回収せざるを得ない。 これは大変だ!

⑦ 画像処理分野はあの手この手を使うので、大量のLIBが必要なのに、FPGAはフリーLIBが貧弱
に対して、NVIDIAは豊富なLIBを提供してくれる。それに、世の中ただで利用できるGPU LIBがいっぱいある。

⑧ AIにおいてGPUより速いと宣伝されているようですが、なかなか普及されていないですね。
原因は何でしょうか。
虚偽や過大宣伝?
例えば、凄い旧版のGPUと比べたり、そのメーカー内部で非常に特殊なやり方や評価の仕方だったりして、世の中の人に利用や実証させる事ができないのでは?

⑨ とにかく、今の時点(2018年3月3日)において、
deep learning 分野に関して、最新のFPGAは最新のGPUに速度や精度の面に勝っていない。
そして今後も、AIにおいてFPGAはGPUに勝つことに理論的な根拠も兆候も皆無では?

===補足説明===
下に「お母さん」「お父さん」のお話を頂いたので、やはり上記文章に対する補足説明をしなければならないと思います。
自分は画像処理や信号処理専門で、あくまでこのような分野においての注文です。
勿論処理内容が固定で、ロジックや計算簡単で+リアルタイム性が高い要求の場合は
FPGAはベストです。

例えば、並行I\O制御、特定の通信プロトコルの実装、国際規格で決まった画像圧縮・伸長処理にはFPGAが向いています。
処理内容が乱雑であの手この手の数学手法を駆使しなければならないし、
進歩や変動の激しい算法の実装にFPGAは向かないではと自分の実感ですね。

本来AI分野でのFPGAの活躍にも期待していたのですが、
AIにおいてGPUより速いと宣伝されているようですが、なかなか普及されていないですね。
原因は何でしょうか。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • ozwk

    2018/03/03 13:20 編集

    普通のエンドユーザーがgpuをバリバリ使うような画像処理のシステムを更新する場面が想像できないんですが、どういうものを想定されているんですか?

    キャンセル

  • oookabe

    2018/03/03 23:25

    お返答ありがとうございます。GPUやCPUの世界ではアプリケーションにバグがあれば、エンドユーザが最新版のソフトを更新できますよね。単にファイルを置き換える作業だけです。ところがFPGAの場合少なくとも昔はそう簡単ではないようです。今はどうなっているでしょうか。知りたいですね。

    キャンセル

回答 7

checkベストアンサー

+3

① 有名なFPGAメーカー(2つ)ともにIP(知的な資産)を強調して、基本道具としてのFFTでさえライセンス料を払わなければ...

そうですね

② 開発環境:FPGAが高価な開発環境、開発ツールが必要  (GPUは無料)

7年前と比べたら結構無料で出来ます。IPコア制限と高位合成に制限かかっているぐらいですかね?
IPコアはともかく、高位合成は性能突き詰めるなら使わないのであまり困りません。

有償にしてもGPUゴリゴリ使って開発する企業にとっては屁みたいな出費かと。

③ GPUに任せる仕事は事前に知る事が必要なく...FPAGを起動時点でこれからやる仕事を全部FPGAに知らせる必要。

そうですね

④ FPGAは実行時動的に変更や、部分的に変更(並列処理内容の変更)ができない
-----将来的にできる?

起動時にどの回路をコンフィグレーションするかぐらいだったら選べます。

⑤ ソフトコードを論理回路に変換する(焼き付ける)時間が長く==一日以上かかる事もあるって、開発とデバグ、修正能率が悪い。

一日以上は大げさかもしれませんが、ソフトウェア開発と比べると開発能率が悪いのはそのとおりだと思います。

⑥ FPGAアプリケーションのバージョン更新には専門知識が必要とし、普通のエンドユーザができないので、問題があればFPGAそのものを回収せざるを得ない。 これは大変だ!

AIや画像処理をFPGAで!って研究や事例はスマホやPCでエンドユーザーが使う話じゃなくて、
デジカメとかの組み込み機器やどっかのデータセンターに実装するって話だと思ってたんですが違うんですかね?

一応コンフィグレーションファイルをSDカードなどに書いておいて
起動時にそこから回路を構成するようにするって方法はあります。

⑦ 画像処理分野はあの手この手を使うので、大量のLIBが必要なのに、FPGAはフリーLIBが貧弱
に対して、NVIDIAは豊富なLIBを提供してくれる。それに、世の中ただで利用できるGPU LIBがいっぱいある。

そうですね

⑧ AIにおいてGPUより速いと宣伝されているようですが、なかなか普及されていないですね。
原因は何でしょうか。...
⑨ とにかく、今の時点(2018年3月3日)において、
deep learning 分野に関して、最新のFPGAは最新のGPUに速度や精度の面に勝っていない。
そして今後も、AIにおいてFPGAはGPUに勝つことに理論的な根拠も兆候も皆無では? 

「普及」ってどういうことですか?
microsoftがBrainwaveというディープラーニングのアクセラレータを去年発表したそうです
googleなんかFPGAよりも融通効かなそうなTensorFlow専用プロセッサを開発したそうです

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/03/03 23:32

    お返事ありがとうございます。
    >「普及」ってどういうことですか?
    AIや深層学習の話題にGPUが良く出るに対して、FPGAの出る頻度が非常に低いという意味です。
    そしてFPGA対応しないLIBでもGPUに対応しているケースが多いようです。
    でも、記事によると最近AIの実装がGPUからFPGAへ移る動きもありまして、どうでしょう、、、
    もしかしてAIのFPGA実装は実際よく普及されているのでしょうか。

    キャンセル

  • 2018/03/03 23:51

    fpgaでAI実装したという話を最近よく聞く割には、そのライブラリが見当たらないから、普及しているのか疑っているってことですか?

    キャンセル

  • 2018/03/04 08:00

    > ④ FPGAは実行時動的に変更や、部分的に変更(並列処理内容の変更)ができない
    >起動時にどの回路をコンフィグレーションするかぐらいだったら選べます。
    実行しているFPGAの中で自分自身を書き換えることができます。
    しかも、書き換えていない部分では処理をそのまま続けることができます。

    > ⑤ ソフトコードを論理回路に変換する(焼き付ける)時間が長く==一日以上かかる事もあるって、開発とデバグ、修正能率が悪い。
    >一日以上は大げさかもしれませんが、ソフトウェア開発と比べると開発能率が悪いのはそのとおりだと思います。

    考えようはいろいろですが、ASICデザイナからすると全然違います。
    FPGAでもソフトの開発時の1サイクルは数分です。ハードの構成も変更すると確かに一日かかることもあります。

    GPUで内部キャッシュを減らして、計算ユニットを増やす みたいなことを考えるととんでもなく時間かかります。PCIe Gen4が欲しい と思っても今の時点では手に入りません。FPGAであれば、PCIe Gen3で作った後で、信号の速度を8Gbpsから16Gbpsに勝手に変更したり、32Gbpsにすることもできます。
    そこまでいかなくても、組み込みマイコンで外付けのI/Oの個数を少し増やしたいみたいなことを考えると、メーカのカタログを見て、それなりのパーツを選んで、ボードを変更してやっとソフト開発です。同じメーカでもCPUのアーキが微妙に異なれば、ファームの変更は必要になるかもしれません。

    FPGAでもCPUコアの機能も、周辺回路の機能も固定して、そのFPGAの上でLinuxで開発しているならば、変更は瞬時です。Pythonで書けば、コンパイルの時間でさえ不要です。

    ASICの内部の開発だと、内部の電源回路の配線を微妙に変えただけで、配線間隔などの物理的な検証に1日、タイミングの検証に2日くらいかかったりします。で、そのあと工場にデータ出して、チップとして帰ってくるのは、数か月後です。

    AIはFPGAを使う専業メーカがいます。
    https://news.mynavi.jp/article/20160927-hc28_deephi/3
    AIではないのですが、Microsoft Office365の処理がFPGAで行われていたとしても、区別がつきません。
    https://news.mynavi.jp/article/20140828-hotchips26_microsoft/

    キャンセル

  • 2018/03/11 21:24

    gm300さま
    大変勉強になりました!
    長い間すっきりしない問題が分かりました。
    本当に有難う御座います。

    キャンセル

  • 2018/03/11 21:27

    >実行しているFPGAの中で自分自身を書き換えることができます。
    >しかも、書き換えていない部分では処理をそのまま続けることができます。
    これは相当新しい技術でしょう、革命的で。
    以前無かったでしょう?

    キャンセル

  • 2018/03/12 10:15

    2007年の記事に「動的な部分再構成」として紹介されていました
    http://www.cqpub.co.jp/dwm/contents/0118/dwm011801290.pdf

    記事中で
    > ごく最近になって,部分再構成回路の設計を支援する強力な開発ツールが登場し,今では簡単に部分再構成システムを作ることができるようになりました.

    とあるので、登場はもっと古いのではないでしょうか

    キャンセル

  • 2018/03/15 11:35

    ozwkさん

    ご教授 有難う御座います!

    キャンセル

+3

以前何処かで書いた回答をそのままここにおいておきます

--
全く機能の違うものを比較しても意味はない、というのを学びましょう。
FPGAというものが理解できていない、理解できないというのは決して恥ずべきものではないですが、理解するつもりがない、と公言するのは周りから失笑をかう行為となります

いくらあなたのお母さんが、どこかでカネを稼いできているからと言って、決してお父さんの代わりになるものではありません。
いくらあなたのお父さんが、完璧に家事をこなすといっても、決してお母さんの代わりになるものでもないです。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

+2

あなたのおっしゃっていることは、「車と飛行機を比較して飛行機の方が早くて人をたくさん運べるので、全ての移動には飛行機を使うべき」と言っているに等しいです。

どのようなときにFPGAを使うのか調べたほうがここで質問するより早いと思います。

ザイリンクスFPGA講座
https://japan.xilinx.com/japan/fpga-koza.html

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/03/03 10:27 編集

    情報有難うございます!
    けれども、7年前、XILINXとALTERAの技術資料を一ヶ月読んでも実装に突入できない苦渋な経験がありました。
    に対して、一日程度NVIDIAのGPU紹介資料を読んで、半日インストールして、即座にNVIDIAが用意している簡単な画像処理プログラムを実行できて、処理結果が確認でき、肝心な処理時間も表示してくれました。

    キャンセル

  • 2018/03/03 10:47

    それに、CUDA Cの並列処理に関する表現の仕方は非常に自然で、C言語が分かる人なら「自明的に」感じます。ーーーだたし、高能率な並列化処理テクニックについてGPUのやり方はややこしい!
    でも新世代のGPUにはこれらのテクニックの重要性は薄くなっています。

    FPGAって、高度な並列化処理テクニックもあるでしょう。もしかしたらGPUに比べてややこしくないでしょうか?  この辺ご存知な方ご教授お願いします。

    キャンセル

  • 2018/03/03 13:36

    FPGAはAIやディープラーニングにも応用できますよってだけでそもそもの主たる用途が違うんだからGPUと比較してもしようがないでしょう。
    現在においてソフト屋さんがFPGAの回路を実装するのはまだハードルが高いと言うのは確かだと思いますが。

    キャンセル

+2

と、お約束はおいておいて、

①すこしFPGAのことを学べばわかることですが、FPGAの場合、学習のコストは非常に高いです。また、FPGA自体の高位合成にかかるコストはとてつもなく高いです。
そしてなにより、メーカ間のFPGAの回路構成や実装構成の違いで、おなじソースをそのまま使いまわしするというのは難しい場合があります。まー、やればできんことはない、というレベルのもんだと思っといてください
まともに動かそうとする場合、各信号の制約条件を設定し、(場合によっては素子の物理的位置まで再設定)それによって高位合成をやり直して最適値を探っていくというプロセスが必要になり、ぶっちゃけソースだけロハになったところであんましうまくないってところですねー
②FPGAの場合は高位合成とよばれますが、この実装/処理にかかるコストはとてつもなく高いです
その上、メーカが変わると使い回しは出来ません。
③それはそーゆーもんだと思っときましょう。
④FPGAの用途の性質上、不要なものですねー。将来的には可能になるかもですが
⑤CPUのコンパイラとやってることが違います。データの置き換えだけで済む仕事と比べてはいけません
⑥それだけ難しいことだ、ということですね
⑦上にも書きましたが、ソースだけあっても使いもんになりません

2入力1出力のNAND回路を作ってください。遅延時間は5nsです。
FPGA(あるいはCPLD)なら数百円のチップ買ってきて実装できますが、これをCPU/GPUで実装しようとしたらどうなるのか、というのを考えてみましょう。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/03/03 10:27

    書いてる間に質問が変わってしまたw
    >AIにおいてGPUより速いと宣伝されているようですが、なかなか普及されていないですね。原因は何でしょうか。

    そりゃぶっちゃけコストでしょう
    十の性能のものが一万でできる、百の性能のものが百万でできる、という場合にどちらを選ぶかだけの話ですねー
    十程度のものでいいと言うときに、百万出すひとはいないでしょう

    キャンセル

+2

xilinxやAlteraのFPGAを使っていましたが、使いにくいですよね。ただgoogleがTPUを使っていたり、MicrosoftがFPGAを使っている以上、現時点でCPU, GPU以外にも選択肢があるのは間違いないです。

小ネタとして一応intelのQ3ではIntel Programmable Solutions Group部門(旧Altera)はデータセンター需要で増益だそうですし、今ではAWSでもFPGAのインスタンスが使えるので徐々に整備されてきて小規模なプロジェクトでも選択肢に入って来ているのかなと。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/03/15 11:39 編集

    貴重な経験や情報のご紹介有難うございます!!

    キャンセル

+1

https://qiita.com/nonbiri15/items/bbc97f92cb108646bc0b

シャーペンというものがありながら鉛筆を生産し続ける意味はあるんでしょうか。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/03/03 23:34 編集

    適材適所ですね。

    キャンセル

+1

FPGA(やASIC)はそれで無ければ要求を満たせないから使うのであって
GPU/CPUで間に合うならそれを使えば良いだけでしょう。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

同じタグがついた質問を見る

  • 機械学習

    964questions

    機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

  • 深層学習

    220questions

  • FPGA

    18questions