Reduce the complexity of programming multicore

++

Offload™ for PlayStation®3 | Offload™ for Cell Broadband Engine™ | Offload™ for Embedded | Custom and C++ | Custom Shader Language

www.codeplay.com It’s a risk to underestimate the complexity of programming multicore applications

Software developers are now presented with a rapidly-growing range of different multi-core processors. The common feature of many of these processors is that they are difficult and error-prone to program with existing tools, give very unpredictable performance, and that incompatible, complex programming models are used. Codeplay develop compilers and programming tools with one primary goal - to make it easy for to achieve big performance boosts with multi-core processors, but without needing bigger, specially-trained, expensive development teams to get there.

Introducing Codeplay

Based in Edinburgh, Scotland, Codeplay Software Limited was founded by veteran games developer Andrew Richards in 2002 with funding from Jez San (the founder of and ARC International). Codeplay introduced their first product, VectorC, a highly optimizing compiler for PC and PlayStation®2, in 2003. In 2004 Codeplay further developed their business by offering services to developers to provide them with compilers and programming tools for their new and unique architectures, using VectorC’s highly retargetable compiler technology. Realising the need for new multicore tools Codeplay started the development of the company’s latest product, the Offload™ C++ Multicore Programming Platform. In October 2009 Offload™: Community Edition was released as a free-to-use tool for PlayStation®3 programmers.

Experience and Expertise

Codeplay have developed compilers and software optimization technology since 1999.

We have provided our technology to companies such as Qualcomm, Ageia, Movidius and further undisclosed customers.

We have built a large test and QA infrastructure allowing rapid testing of our products on a wide range of source code, operating systems and processors.

We are Licensed Sony Middleware providers.

Expertise in compiler design: C/C++/shader front-end, optimizations, efficient code generation, enabling general purpose C/C++ programming on specialized GPU-like processors.

Expertise on compiler-friendly processor architectures.

2 www.codeplay.com Products and Services at a Glance

Take your C++ programs to multicore. Offload lets you easily offload code to additional processor cores. It’s non-disruptive and simple, allowing non-specialist programmers to get the most out of their code.

Offload™ for Offload™ for Cell PlayStation®3 Broadband Engine™

Easily offload the most complex games code on Offload provides an effective method for one or more SPU’s. Offload for PlayStation®3 offloading the parts of your code you want to helps you make incredible games for execute on the SPE’s of the Cell Broadband Engine™. Unlock the power of the Cell PlayStation®3, without the high development processor and maximize the performance of costs and long hours. your applications.

Offload™ for Multicore Embedded Services

The Offload programming model can bring Codeplay’s expert programmers can help you easy-to-use C++ multi-core programming port your software to multi-core. We’ve been capabilities to the world of embedded proces- doing this for years. sors.

VectorC Retargetable VectorC Shader Compiler Technology Language Compiler

Need a compiler for your multi-core processor? Retargetable Shader Language compilers, for Codeplay build optimizing C/C++ and shader mobile and embedded GPU’s that require low- language compilers for unusual and memory footprints. specialized architectures using our VectorC compiler engine.

www.codeplay.com 3 Offload™

Codeplay’s Offload™ is a powerful tool suite combined with a simple programming model to easily and quickly offload large sections of a complex software application onto different processor cores on a multicore CPU. Offload™ lets the compiler do the hard and tedious work offloading the code so that the can concentrate on the application.

Offload requires very little modification to the original source int ppu_function () { code. It offloads a section of code from a normal CPU to an int x; // x is now in shared memory accelerator processor. __offload { int y; // y is now in local memory Offload™ is based on Codeplay’s Sieve™ System, an award- y = f (&x, &y); winning system for taking existing C++ software and transforming /* ‘f’ is duplicated and called with it so that it can be compiled with multiple different C compilers and a shared-memory-pointer and distributed across multiple homogeneous or heterogeneous a local-memory-pointer */ processor cores. } } At the heart of Offload™ lies Codeplay’s patented Call-Graph Duplication technology. The Offload™ tool automatically duplicates functions in the Call-Graph that are executed on different types of processors, and intelligently adapts each function so that the data storage and movement is handled correctly for the targeted processor. This removes the need to write the same function differently for the features of each particular processor core, saving the programmer a lot of time and reducing the amount of problems that are likely to arise.

Offload™ enables an incremental and non-disruptive migration of code to multicore. Just port your application in small, manageable steps and instantly see the result. This makes Offload™ ideal for porting large legacy codebases. Your application stays written in standard C++ and can be compiled by standard C++ compilers.

With Offload™ your applications can be fully multi-core capable without the disruption, extra development time and inflated development costs you may otherwise encounter.

For many applications, simply by offloading a section of code from the host processor to an accelerator processor using Codeplay Offload™, a user can gain a 2.5x performance boost for very little work.

Offload™ Debugger

4 www.codeplay.com Offload™ for PlayStation®3

Offload™ reduces the time, cost and stress of writing a top quality game for Playstation®3.

Codeplay developed Offload™ for PlayStation®3 with input from some of the world’s leading games developers. Building on our early research with the Sieve™ System we progressively implemented functionality to provide what games developers want and can use effectively in the real development of a PlayStation®3 game. Offload™ accelerating a cloth simulation

Offload™: Community edition for Licensed PlayStation®3 Developers is available now. Visit http://offload.codeplay.com to register and try Offload™ today – no charge!

Programmers’ Tool Chain

Offload C++ C/C++ Source Source

Offload Tool

GCC/SNC/ Offload C++ MSVC Runtime Libraries

Linker

Debugger: e.g. ProDG, Visual Stdio How Offload™ fits into the Toolchain

www.codeplay.com 5 Offload™ for Cell Broadband Engine™ Powered Devices

The Cell Broadband Engine™ has found its way into many high-performance computing devices and is expected to appear in many other devices in the future, including consumer electronics.

Offload™ can help you unlock the full power of the Cell Broadband Engine™ on whatever device it may be powering, without needing to increase your budget.

Offload™ is available for Cell Broadband Engine™ powered devices running under Linux, 2009. To find out more about Linux Offload™ for The Cell Broadband Engine™ and track its availability visit http://offload.codeplay.com

Offload™ for Embedded

The Offload™ programming model is suitable for all heterogeneous and homogeneous multicore architectures. From powerful super-computing processors to low-cost, low-power mobile chipsets, Offload™ can help programmers easily write software applications for multi-core architectures.

Achieve full multi-core performance without any extra software development costs

Easily port and re-use existing software and libraries

Have the software for your device ready in time for launch

Ensure that 3rd party software developers have the best SDK for writing high standard applications

If you are designing or already have a multi-core chip and want to ensure it has an extensive library of software applications ready for launch then contact Codeplay to discuss how we can adapt Offload™ and provide an Offload™ SDK suited perfectly to your chip or device.

Multicore services

Codeplay’s multi-core programming experts are available to assist you in porting your games or application to multicore.

Our programmers are thoroughly experienced in porting and optimizing software to multicore with Offload™, from large open-source projects to commercial video games.

Codeplay can provide you with external or on-site development assistance to suit a range of budgets. Call us on +44 131 466 0503 or email us at [email protected] to find out what we can do for you.

6 www.codeplay.com Offload™ in Microsoft Visual Studio 8

Offload™ in Eclipse CDT

www.codeplay.com 7 VectorC Retargetable Compiler Technology

Codeplay’s VectorC compiler platform is a highly configurable C/ C++ compiler engine that can bring full (or subset) C/C++ support to your new processor architecture. VectorC is especially well suited to mobile media processors, low-power chips and high-performance accelerator boards.

VectorC technology is the result of more than 10 years of research, development and customer feedback in commercial C/C++, shader and OpenCL projects. Over the years we have adapted our optimizing compiler technology, tools and their integrations for a variety of very different and often specialized single and multi-core processor systems. This has made our technology flexible, widely applicable and highly configurable. We offer customizing this technology to support new processors, programming languages and integration into 3rd party development tool chains.

With VectorC you get:

A compiler optimized for your processor

Rapid delivery of prototype compiler; so you can start writing and testing firmware and software early

The support and guidance of a highly experienced compiler development team

Call or email us now for a discussion about how Codeplay can build a compiler for your projects.

VectorC Shader Language Compiler

Codeplay can also use the VectorC compiler engine to produce high performance shader language compilers for programmable GPUs. This technology can be tailored to provide a low-memory shader compiler engine for embedded platforms, such as mobiles phones and PDAs.

Our shader compilers are extremely flexible and configurable, allowing the easy addition of new optimizations or the modification of existing optimizations relevant to the target platform.

We can retarget our shader compilers to meet the specific needs of any processor architecture, and can provide full source code and support for customers who wish to retarget and customize a compiler themselves.

Advice on compiler friendly processor design

Codeplay’s expertise also allows us to advise on compiler-friendly processor designs and instructions sets. If you are designing a processor and need some guidance or feedback on the design from a programming perspective, or need help in developing a programming model then Codeplay can act as your compiler team.

Call us on +44 131 466 0503 or email us at [email protected] to discuss how we can help you ensure commercial success for your new microprocessor.

8 www.codeplay.com Customers

Inventors of PhysX®, a physics A world leading provider of Producers of video editing processing unit for games. Now part wireless technology and services, processors for low power of NVIDIA® and also the world’s largest mobile phone and fabless chip supplier consumer electronics

Partners

Codeplay is a licensed PlayStation®3 Tools Codeplay is a member of and Middleware Provider the Multicore Association

Codeplay is a contributing Codeplay has been awarded member of the funding from the Scottish Government to research multi processor parallelization

Academic Partners

Codeplay is part of the EU Framework 7 PEPPHER consortium, with a Proposal to develop a Codeplay sponsors an engineering unified framework for programming doctorate candidate based at ISLI aimed at Performance, Portability and Programmability for Heterogeneous Many-core Architectures

Codeplay is currently supporting doctoral researchers at the University of Glasgow and Imperial College London

www.codeplay.com 9 To learn more about Codeplay’s technology or read the latest news about Codeplay visit www.codeplay.com

To learn more about Offload community edition, view technical forums or create a user account and download Offload™ visit offload.codeplay.com

Contact Details

To find out more about our technology and the services we can provide to you, or to discuss your needs, please contact us by email [email protected] or telephone +44 (0)131 466 0503

UK

Phone: +44 (0)131 466 0503 Fax: +44 (0)131 557 6600 Address: 2nd Floor 45 York Place Edinburgh EH1 3HP United Kingdom Edinburgh Castle

Japan

Phone: +81 (0)90 6658 8912 Email: [email protected]

10 www.codeplay.com Acknowledgments:

“PlayStation” is a registered trademark, and “Cell Broadband Engine” is a trademark of Sony Computer Entertainment Inc.

NVIDIA and PhysX are registered trademarks of NVIDIA Corporation

QUALCOMM and the QUALCOMM Logo are registered trademarks of Qualcomm Incorporated

Microsoft Visual Studio is a Registered Trademark of Microsoft Corp.

Codeplay and VectorC are registered trademarks of Codeplay Technology Limited

Offload and Sieve are trademarks of Codeplay Software Limited

Photograph of Edinburgh Castle courtesy of Katarzyna Wczesniak

www.codeplay.com 11 CODEPLAY SOFTWARE LIMITED, 2ND FLOOR,45 YORK PLACE,EDINBURGH,EH1 3HP, UK. TEL+44 (0)131 466 0503 WWW.CODEPLAY.COM