STMicroelectronicsの100%子会社であるPortland Group(PGI)は、「PGCL」の新バーション12.7をリリースしたと発表した。
「PGCL」は、ARMのマルチコアを採用したSoC向けPGI OpenCLフレームワークで、ST-エリクソンのNovaThorプラットフォーム上で利用できる。「PGCL」には、演算処理用としてARMのマルチコアを採用したCPU用のPGI OpenCLコンパイラが内蔵されており、GPU用OpenCLを補完する。
新バージョンとなる12.7の特長は、ARM NEON 汎用SIMD(単一命令複数データ処理)エンジン向けの自動ベクトル化への対応。NEONテクノロジーは、マルチメディアや大量のデータ処理を要するアプリケーションを高速化するように設計されたARM Cortex-AシリーズCPU向けの128ビット SIMDアーキテクチャの拡張版で、命令は符号付きまたは符号なしの8/16/32/64ビットの整数または単精度浮動小数点データ型に対して、パックSIMD処理を実行する。PGCLは、このデータ型演算を行うOpenCLカーネル関数内に含まれたベクトル化ループ向けにNEON命令を自動生成することが可能だ。
また、ネイティブな動的OpenCLカーネルコンパイルが、ARMベースのAndroid機器のデフォルトとなり、動的にコンパイルされたOpenCLカーネルをモバイル機器用実働アプリケーションに展開できるようになったほか、OpenCL動的コンパイラは、fast(PGIのパフォーマンスを最適化するデフォルトオプション)、Msafeptr(ポインタの存在下での最適化を実現)、Minfo(アプリケーション開発者にコンパイラ最適化フィードバックを表示)などの最適化オプションを認識することも可能。
さらに、OpenCLソースファイル内での最適化をローカル制御するコンパイラ「pragmas」をサポート。ループまたは関数ベースで制御可能な最適化には、NEON/SIMDベクトル化、ループ展開、依存性チェック、セーフポインタ宣言、その他の最適化オプションなどがある。pragmasは、その他のコンパイラやプラットフォームへのソースコードの完全な移植性を維持しながら、記述されたコードブロックをある特別な方法で処理するようにコンパイラに指示するために用いられ、プログラマがソースコードに付加するプログラミング言語の構築概念である。
この他、gdbデバッガやprint命令を用いて、ARMベースのAndroid機器上のOpenCLホストコードおよび静的コンパイルされたOpenCLカーネルのデバッグをサポートすることも可能となっている。