ジュリア集合専用演算器

高速処理を求められる分野では、近年、FPGAによるソフトウェア処理をハードウェアに置き換える事例が相次いでいます。 

ジュリア集合体とは

ジュリア集合体とは、数学者ガストン・ジュリア(フランス 1893年-1978年)の名前をとったフラクタルです。ジュリア集合はマンデルブロ集合(数学者ブノワ・マンデルブロの名前をとったフラクタル:ポーランド 1924年-2010年)が提唱される前に知られており、マンデルブロ集合とともにある数式で演算可能です。

マンデルブロは、1979年から充填ジュリア集合の可視化について研究を始めました。これは、コンピューターのベンチマークに最適で、得られる画像も興味深く綺麗です。

マンデルブロ集合体の参考画像 Wikipediaから 

ジュリア集合体の参考画像 Wikipediaから

なぜ専用演算器開発にジュリア集合体を選んだのか

もし、計算をしているコンピューターに無限の演算桁があれば、どこまででも拡大可能で自己相似(似たような構造)が常に得られます。しかし、現代の汎用コンピューターの演算器は最大演算桁が固定されているため、無限桁を実現するにはソフトウェアでエミュレーションをします。 そのため演算速度は非常に遅くなります。 

マンデルブロ集合は絵を変化させ続けるために膨大な桁が必要ですが、ジュリア集合はマンデルブロ集合のヒョウタン型の境目を移動する事で激しい絵の変化が得られ、桁は倍精度程度で十分なためハードウェア化には比較的向いています。従って、私達は専用演算器の研究・開発にジュリア集合体を利用することを選択しました。

なぜFPGAなのか

どうせ作るならばリアルタイム=60fps(一秒間に60画面分)を演算するように作りたかったのですが、ざっと計算をすると数百Gops以上の能力と低いレイテンシーが必要です。opsとはOperation per secの略で、1opsは1秒間で一つの演算をこなす能力を示しています。一般的なIntelのCPUではチューニングをしても一つのCPUで6Gops程度です。複数個を並列にしてもCPUが増えるたびに通信ロスがでてきますので、達成できる可能性が低くなります。GPUでも実効性能は100Gopsにも届きませんし、倍精度の演算は不得意です。スーパーコンピュータでも通信速度の問題で60fpsが到達できると断言できません。しかし、FPGAで作成したジュリア集合専用演算器なら達成可能です。

なぜならば、 汎用プロセッサのようにデータの移動経路がシンプル(汎用的に作る必要がない。)、その分だけ専用演算器を大量に並べる事ができるからです。また、これを実現するために、FPGA内部に演算器を詰め込む技術研究をしました。その結果、FPGAで686Gopsが達成でき、超低レイテンシーも達成することができました。 

専用演算器の使用例

この画像は、Xilinx Virtex6 LX760にぎっちり詰め込んでいます。使用率は99%で、ほぼ使い切っています。これを4個並列、350MHzで動作させ、686Gopsを達成します。放熱がしっかりできれば、450MHzでも動作可能な結果が出ています。フルハードウェアの専用演算器はソフトウェアより早いのは当たり前のように感じますが、本当に作った事で得られた知見はベクトロジーの財産です。この回路開発で得られた最大の知見は、FPGAの隠された電源・放熱・クロック速度のバランスです。世界中でFPGAの本当の限界を知っているのはFPGAベンダーとベクトロジーだけだと自負しています。

このジュリア集合体専用演算器も色々なFPGAに移植をし、16nmプロセス評価にも使用されました。結果は2GHzで動作可能な事が判明しRTLもかなり最適化されていることも証明しました。 もし、何かのベンチマークに応用したいなどのご要望が御座いましたら遠慮なくご連絡ください。