Pieter Edelman
21 August 2012

ST-onderdeel de Portland Group komt met versie 12.7 van zijn OpenCL-raamwerk voor Arm-gebaseerde Socs. Met PGCL kunnen ontwikkelaars hun applicatie via OpenCL verdelen over de Arm-cores en delegeren naar de Neon-vectorextensies; een van de cores treedt op als host, de andere cores worden gezien als compute devices. Het pakket voldoet aan het embedded-profiel voor de OpenCL 1.1-specificatie en is op het moment geschikt voor ST-Ericssons Novathor-platform.

De belangrijkste toevoeging aan de nieuwe versie is de automatisch vectorisatie voor Neon. Deze SimD-engines op Arms Cortex-A-architectuur kan bewerkingen uitvoeren op 128 bit brede datavectoren. De compiler genereert automatisch de Neon-instructies voor vectoriseerbare loops in OpenCL-kernels.

Daarnaast is dynamische compilatie van OpenCL-kernels nu de standaard op Android-devices. The dynamische compiler herkent daarbij verschillende optimalisaties waaronder een variant voor pointers en een optie die uitgebreide feedback aan de applicatie levert.

Verder bevat 12.7 ondersteuning voor compiler-pragma‘s in OpenCL-bestanden. Daarmee kan de programmeur optimalisaties lokaal aansturen, zoals Neon-vectorisatie, loop unrolling, afhankelijkheidscontrole en veilige pointer-declaraties. Als laatste is ondersteuning toegevoegd voor het debuggen van OpenCL-host-code en statisch gecompileerde kernels via GDB en print-statements.

PGCL draait op Linux/X86-hosts en is geïntegreerd met de Android NDK-toolketen.