System Performance & Optimization
Porting your software to run efficiently on Arm-based systems is more than just recompiling your code. Code will need optimising to be performant - both the high-level software and underlying systems libraries and tools.
Together we can work to ensure that your software & workloads have exceptional performance on Arm.
Linaro Developer Services has the expertise and experience in systems libraries and tools to make them work well for you on Arm-based systems.
Combine our Arm system knowledge and your application expertise to deliver your product requirements
Our areas of expertise include:
- Machine Learning: e.g. Tensorflow
- Computer Vision: e.g. OpenCV
- Linear Algebra: e.g. OpenBLAS, Eigen
- System C Libraries: e.g. glibc
- Linux Kernel
- Compilers: e.g. GCC, LLVM, go
- Language Expertise includes: C/C++/ Fortran/go
- Arm Architecture: Armv8, SVE, HPC, Memory Models.
Toolchain Optimization Services
Linaro has world class engineers with a deep understanding of all profiles and versions of the Arm Architecture. This ranges from deeply embedded microcontrollers to large HPC-scale machines running in the cloud.
Linaro Developer Services has specific teams focused on ensuring toolchains (including GCC and LLVM) target Arm-based systems effectively. We have significant experience and knowledge of:
- Tuning toolchains to produce performant code for specific CPU micro-architectures and systems. For the compiler this includes optimizations to improve instruction selection, layout, and scheduling. C libraries (e.g. Glibc, Musl-libc, or bionic) can be tuned with hand-written assembly routines where appropriate.
- Tuning toolchains to produce code meeting code-size requirements - in particular for microcontroller environments. This includes improving a compiler’s heuristics for instruction selection, function inlining and outlining.
- Optimizing system libraries for customer workflows. Linaro has worked on system C libraries and other support libraries including auto-parallelisation (e.g. OpenMP), Linear Algebra (e.g. OpenBLAS), Machine Learning (e.g. TensorFlow). Work includes tuning for the Arm memory model; ensuring that code uses Neon or SVE where appropriate.
Our strong relationship with toolchain upstream communities facilitates rapid upstreaming and problem resolutions. We know how to organise a project and will work with you to ensure your project successfully upstreams code rapidly. We also have experience with development in this area for Arm Architecture licensees.
Linaro Developer Services is able to provide pre-packaged toolchains for your systems that you can ship to your customers and partners. In addition to our toolchain packaging services, we can provide you with rapid response to toolchain issues and train your developers on how to write developer performant code for the Arm architecture
Power Management Tuning Services
Linaro has a world class team with a deep understanding of the Arm architecture and Linux power management framework. As a result, we have experience in the following areas:
- Hands on experience tuning the Energy Aware Scheduler in the Linux kernel for several SoCs
- Experience maintaining long term EAS branches in the Linaro Stable Kernel (LSK) for use by Linaro members
- A strong working relationship with upstream kernel developers; our team is recognized for its world class work
- Deep understanding of whole system power state management technologies like PSCI
- Dynamic Voltage and Frequency Scaling (DVFS), Energy Aware Scheduling (EAS)
- Power management skills in a variety of commercial niches (mobile, set top box, embedded devices)
Contact Linaro Developer Services today for help on toolchain optimization, application performance and porting or power management tuning services!