シュミット氏とそのチームは、コンピュータビジョンプラットフォーム「OpenCV」を利用して、FPGAでPythonを使ってNASA JPL(ジェット推進研究所)のエッジ検出プロジェクトに取り組んだ。それは、探査車が岩や障害物を回避できる機能の開発を支援するプロジェクトだった。シュミット氏によると、結果は非常に有望なものとなった。Cの実装を30倍上回るパフォーマンスを記録したという。さらに同氏は、OpenCVにない効率的な多数のPythonライブラリのおかげで、PythonスプリングボードではFPGAアクセラレーションの選択肢が断然多く、やはりCオンリーのアプローチにはるかに勝るかもしれないと付け加える。
NASAのプロジェクトでのOpenCVを使った作業は、実行して好結果を出すのに1日もかからなかった。だが、もちろん、ベースラインのハードウェアライブラリの整備はすんなりとはいかなかった。シュミット氏のチームはその整備に6カ月も費やした。しかし、このハードウェアコアが用意できれば、開発者はそれを利用してデバッガとプロファイラを用いてPythonコードを適応させ、Linuxベースシステム上のCよりも優れたパフォーマンスを実現できる。
つまり、Cを変更することなくハードウェアの構成と設計を変更できるということだ。同チームはこの全てのコードをハイエンドデバイスに移植可能にすることを目指している。これは基本的にハードウェアAPIだからだ。この目標が実現すれば、将来的にAWSの「F1」インスタンスを利用する場合も非常に役立つ可能性がある。
シュミット氏は論理的なステップとして「大規模サーバ環境で使われ、複数のFPGAを備え、Python開発環境が使用可能な高パフォーマンスFPGAデバイスに同じ考え方を移植することだ」と語る。同氏は、Xilinxの新しいFPGAである「Zynq UltraScale+」はアプリケーションプロセッサ「ARM A53」を4個、リアルタイムプロセッサ「ARM R5」を2個搭載しており、FPGAアクセラレーションのPythonインタフェースを求めるような科学技術コンピューティングユーザーにとって、特に魅力的だと指摘する。
さらにシュミット氏は、ソフトウェア開発者はプログラミングのしやすさからPythonを支持しているが、移植や実装がお粗末な場合、悲惨なパフォーマンスにつながる恐れがあると語る。
「エッジ検出プログラムのCバージョンの単純な移植をPythonで実装したところ、実行速度がCバージョンより334.8%低下した。移植には1時間もかからなかったが、これはPythonの巨大なコミュニティーで開発されたライブラリ、分析ツール、デバッガを使うことの重要性を強調することを目的としていた」(シュミット氏)
だが、PythonベースのOpenCVを「ARM A9」コアで動作させ、Cバージョンの11.43倍、Python Cバージョンの3826.9倍もの速度で実行するのは簡単だったと、同氏は話している。
Copyright © ITmedia, Inc. All Rights Reserved.