このページの本文へ

ロードマップでわかる!当世プロセッサー事情 第593回

車載向け市場にフォーカスしたGSP AIプロセッサーの昨今

2020年12月13日 12時00分更新

文● 大原雄介(http://www.yusuke-ohara.com/) 編集●北村/ASCII

  • この記事をはてなブックマークに追加
  • 本文印刷

グラフ理論の処理に特化したGSPの仕組み

 ということで話をGSPに戻す。GSPは巡回セールスマン問題のような複雑な処理をすることは考えていないが、計算機の世界ではこうしたグラフ的に表現される処理が多数ある。

グラフ的に表現できる処理の一例。ここで言えばA~Gまでが個々の処理ということになる。間の四角はバッファである。

 これを効率的に実行できるようにしよう、というのがGSPである。このGSPをDSPやGPUなどと対比させた例が下の画像である。

GSPをDSPやGPUなどと対比させた例。単にバッファが小さくなったというわけではなく、バッファが最小限で済むようになった点がポイントである。それはともかく左下の図はやや間違っている気がする(Node BとCは並行して動くはず)

 この例で言えばNode A~Node Dが計算処理ということになる。さて、DSPやGPU、つまり左側であるがここではまずある程度のデータの塊(画像処理なら64×64ピクセルなど、そういうある程度の単位)をNode Aで処理し、その結果が1と2のバッファに蓄えられる。

 それが終わったら、次にNode BとNode Cが動く。Bは1から結果を読みこんで、処理結果を3と4に、Node Cは2から結果を読みこんで、処理結果を5に蓄える。

 最後にNode Dが3~5から結果を読み込んで処理し、6に吐き出す形だ。ここでネックになるのは、Aが処理を終わるまでBとCの処理が始められないし、BとCが終わらないとDが始められないことだ。

 もちろん、例えば「1と2のバッファのここからここまでデータを入れ終わった」と、Node AからNode B/Cにこまめに通知すれば、Node Aが完全に0のデータを読み切って処理を終わる前にNode B/Cの処理を開始することは不可能ではないが、今度はそうした通信のオーバーヘッドが極端に大きくなりすぎる。

 Node Aが64×64ピクセルの画像を4×4ピクセル単位で処理すると仮定すると、256回処理すると完了であり、仮に1回の計算が1サイクルで終了するとしても、Node Aが256サイクル稼働後に1と2に結果を吐き出し、これを受けてNode BとCが並行してやはり256サイクルかけて処理し、3~5を出力。最後にNode Dが256サイクルかけて6を出力するので、合計768サイクル必要になる計算になる。

 GSPではこれをもっとスマートにできる。GSPのS、つまりStreamであるが、Stream(流れ)というように、内部のプロセッサーコア(つまりNode A~D)はもっと細切れで処理が可能になっている。

 端的に言うと、Node Aが最初の1回の計算をしたら、その結果は直ちに1と2のバッファに書き込まれる。これが書き込まれたら、次のサイクルにはNode BとCが動き始め、その1サイクル後には結果が3~5に書き出される。

 最後にNode Dが動いて1サイクル後に結果が6に保存されるわけで、Node Aが動き始めてから3サイクル目には最初の結果が出力されることになる。所要時間はトータルで259サイクル(3+256サイクル)で済むわけで、左の方式よりも3倍高速というわけだ。

カテゴリートップへ

この連載の記事

注目ニュース

ASCII倶楽部

プレミアムPC試用レポート

ピックアップ

ASCII.jp RSS2.0 配信中

ASCII.jpメール デジタルMac/iPodマガジン