では、人手による並列化、OpenMP、OpenCLなどの手法をどう選択すればよいでしょうか(これら以外にも、あまり知られていない別の選択肢もあります)。
最初の質問は当然、検討しているハードウェアで使用できるプラットフォームです。ほとんどのマルチコアSoCで使用できるマルチコアOSは存在しますが、非対称マルチプロセシングをサポートしていないマルチコアOSもあります。従って、必要最小限の機能しか持たない独自のRTOSを作成しなくても、人手による並列化は一般に実行可能です。
OpenMPはほぼ間違いなくタスク並列処理やホモジニアス・マルチコアSoCに最適なソリューションであり、極めて単純なプログラミングモデルを提供します。しかし、OpenMP はスーパーコンピューティングからエンベデッドの世界に移行し始めたばかりです。Texas Instrumentsの「Keystone」シリーズはベンダーがサポートしているようです。ARMが2015年2月にOpenMP アーキテクチャ・レビュー・ボードに参加してプラットフォームの方向性に関する発言機会を得たことは示唆的です。しかし、この2つの事実は、これらの会社のエンベデッド・コンピューティング計画よりも、サーバ業界での戦略と密接に関連しているかもしれません。
ヘテロジニアスシステムでのデータ並列高速化と高い親和性を持つOpenCLは、さらにOpneMPより一足先にエンベデッド・インフラストラクチャに移行しました。CPUとGPUを組み合わせた SoC、DSP SoC、FPGAなどにはOpenCLプラットフォームを提供しているものがあります。そして、これらのチップのボードサポートパッケージがOpenCL実装環境を提供するケースが増えています。
これらのソリューションの中に、レガシーコードの自動並列化を提供するものはありません。業界全体がマルチプロセッシングシステムに有効なデバッグ技法にまだ取り組んでいる最中です。プラットフォームがこれらのデザインを容易にする、と言う人はいません。
しかし、閉じた渓谷を抜け出す方法として並列実行へ移行することは、大量のレガシーコードを新しい命令セットそしてアーキテクチャに移行することよりはるかに容易で、リスクを伴わない可能性があります。その結果、性能が改善され、消費電力が減少する可能性があります。これは検討する価値があるでしょう。
(本稿はSYSTEM DESIGN JOURNALに掲載された「When Your Embedded Processor Runs Out of Steam, Try Parallelism」の翻訳です)
Copyright © ITmedia, Inc. All Rights Reserved.