The Portland Group updates its OpenCL compiler for multi-core ARM
21 Aug 2012 Portland -
The Portland Group (PGI), a wholly-owned subsidiary of STMicroelectronics and an independent supplier of compilers and tools for high-performance computing, has released PGCL 12.7. PGCL is the PGI OpenCL framework for multi-core ARM-based Systems-on-Chips (SoCs), currently available on ST-Ericsson NovaThor platforms. PGCL includes a PGI OpenCL compiler for multi-core ARM CPUs as a compute device and complements OpenCL for GPUs.
"This significant update to the PGI OpenCL compilerincludes support for several new performance-oriented technologies along with basic debugging support, and reflects our continuing commitment to bring PGI compiler technologies developed in the high-performance computing (HPC) market to the ARM platform", stated Douglas Miles, director, The Portland Group.
New PGCL 12.7 features include:
- Automatic vectorization for the ARM NEON general-purpose Single-Instruction Multiple Data (SIMD) engine. NEON technology is a 128-bit SIMD architecture extension for ARM Cortex-A series CPUs designed to provide acceleration for multimedia and other data-processing intensive applications. NEON instructions perform packed SIMD processing on signed or unsigned 8-bit, 16-bit, 32-bit and 64-bit integer, or single-precision floating-point data types. PGCL now automatically generates NEON instructions for vectorizable loops contained in OpenCL kernel functions and which operate on these data types.
- Native dynamic OpenCL kernel compilation is now the default on Android ARM devices, enabling deployment of dynamically-compiled OpenCL kernels in production applications for mobile devices. The PGCL OpenCL dynamic compiler now recognizes optimization options including fast (PGI's default performance optimization option), ‑Msafeptr (enables optimization in the presence of pointers) and ‑Minfo (for displaying compiler optimization feedback to application developers).
- Support for compiler "pragmas" for local control of optimizations within OpenCL source files. Optimizations that can be controlled on a loop or function basis include NEON/SIMD vectorization, loop unrolling, dependence checking, safe pointer declarations and other optimization options. Pragmas are programming language constructs added to source code by programmers to instruct a compiler to process the delineated code blocks in some special manner while maintaining full source code portability to other compilers and platforms.
- Support for debugging of OpenCL host code and statically-compiled OpenCL kernels on Android/ARM devices using the gdb debugger or print statements.
PGCL is an OpenCL framework for compiling and running OpenCL 1.1 embedded profile applications on the ST-Ericsson NovaThor U8500 and follow-on platforms using a single ARM core as the OpenCL host and multiple ARM cores as an OpenCL compute device. The PGI OpenCL framework runs on Linux/x86 compilation host platforms and is integrated with the Android NDK toolchain to generate binary executables for ST-Ericsson NovaThor platforms running the Android operating system.
ST-Ericsson's NovaThor platforms fully integrate application engines, modems and connectivity chipsets that allow device manufacturers to quickly roll out advanced smartphones and tablets with advanced multimedia capabilities. The NovaThor platform is the first integrated smartphone platform to offer the latest SMP (Symmetric Multi-Processing) dual core technology in a high-performance, low power and cost-optimized package, enabling an immersive multimedia experience for next-generation smartphones. Both cores are identical and can be used independently or combined as one processing engine.
OpenCL is a programming model for heterogenous computing systems comprised of CPUs, GPUs and other computing devices, and has been standardized by Khronos and adopted by a number of CPU and GPU manufacturers including Intel, AMD/ATI, NVIDIA and Imagination Technologies. PGCL is the first OpenCL compiler for Android targeting multi-core ARM processors as an OpenCL compute device. ARM processors power the vast majority of mobile and embedded computing platforms. PGCL conforms to the OpenCL specification.
PGI OpenCL targeting ST-Ericsson NovaThor platforms including code examples and sample Dalvik applications is freely available.