Codeplay Internships


Codeplay Internships

Company Profile:

Codeplay are internationally recognized experts in advanced optimizing technologies, compilers and programmable graphics. We have been providing acceleration solutions that optimize performance for graphics semiconductor designers and AAA game developers since 1999.

In the semiconductor sector, Codeplay partners with leading chip manufacturers, such as Qualcomm and Movidius, helping them to exploit the full potential of their chipsets and accelerate time-to-market. Our high performance C/C++ compiler technology enables GPU product managers to bring breakthrough new technologies to their graphics processors, significantly reducing development time, costs and risks. Our compiler testing technologies enable the rapid testing of new compilers and languages, such as OpenCL™ and shader languages. And our expert compiler developers are ready to take on tough optimization and development projects, with years of experience working on graphics processor compilers.

Codeplay’s consultancy services, optimization technologies and bespoke support enables semiconductor manufacturers and game developers to stay ahead in the continual race in both these competitive sectors, helping our customers set the standard for stunning graphics in visual computing and gaming.

1. Intern Software Engineer: (ComputeCpp Perf & Opt/m)

Internship Description:

The intern will be working on extending and evaluating the internal benchmarks of ComputeCpp, which currently consist of two kernels from the Rodinia benchmark, Parallel STL sample code, demo code that can be used as a benchmark and ComputeCpp micro-benchmarks.

While working on this project, the intern will provide regular feedback to the ComputeCpp team on performance problems and potential optimizations. If a potential optimization opportunity is identified and approved by the ComputeCpp team, the intern can create a branch from the repository and implement it, in order to provide proof of the benefits of the implementation.

The final deliverable of the internship will be: A repository with a set of SYCL benchmarks. Improved microbenchmark coverage. A report with suggested optimizations and their impact on the runtime.

Essential Skills required of the intern:

  • Knowledge of C++
  • Some GPGPU programming (CUDA or OpenCL)
  • Parallel programming experience
  • Some experience measuring performance and analyzing traces.
  • Knowledge of source control systems
  • Ability to report bugs on software systems that involve compilers and runtime libraries, and work around them while a fix is forthcoming.

Desirable Skills required of the intern:

  • Knowledge of C++ and C++11/14 features (templates, overload, enable_if, smart pointers, etc)
  • Experience porting codes to CUDA/OpenCL
  • Understanding or interest in modern heterogeneous architectures.

Location: Edinburgh

Proposed Time-frame: Six months

Application Deadline: No closing date: Codeplay are always looking for smart people.

If you would like to apply for this opportunity, please send an email stating your interest to ppar-cdt@inf.ed.ac.uk. You will then be advised on how to apply.

2. Intern Software Engineer (Polyhedral)

Internship Description:

The internship role will be to assess the potential of applying Polyhedral techniques to SYCL or OpenCL by creating a prototype tool to explore whether it is feasible to improve performance, and performance portability. The intern will undertake a prototype integration of the open-source “Polly” tool into the set of compiler passes within a Codeplay tool, investigate how the Polyhedral model interacts with the SYCL or OpenCL parallelism model, and use and implement Polyhedral transformations to improve performance and performance portability.

There are trade-offs that can be considered for whether to undertake the work within ComputeCpp, and thus target SYCL directly, or within ComputeAorta, and thus target both OpenCL and SYCL. These trade-offs can be considered by the intern and their supervisor during the initial phase of the internship. Test cases to evaluate performances can be taken from ComputeVisionCpp™ or Eigen for SYCL, or from PolyBench/GPU for OpenCL.

The work could potentially lead to a publication.

Essential Skills required of the intern:

  • Good C++ knowledge, specifically C++11 and templates.
  • Experience with compiler or language runtime implementation.
  • Knowledge of polyhedral compilation techniques.
  • Working knowledge of Windows and/or Linux tool chains.
  • Knowledge of OpenCL and/or SYCL

Desirable Skills required of the intern:

  • Implementation experience for polyhedral compilation techniques, particularly using Polly.
  • Experience with LLVM.
  • Working understanding of CMake

Location: Edinburgh

Proposed Time-frame: At least three months, which will allow time to complete an initial investigation.

Application Deadline: No closing date: Codeplay are always looking for smart people.

If you would like to apply for this opportunity, please send an email stating your interest to ppar-cdt@inf.ed.ac.uk. You will then be advised on how to apply.

3. Intern Software Engineer (Computer Vision)

Internship Description:

LPGPU2 is a research project focusing on three main areas: Computer vision, standardisation of performance and power profiling. Actual implementation of a profiler: As an LPGPU2 Intern you would be working the development of a computer vision library that can work in embedded systems such as robots. Students in this area can hopefully bring in new ideas as well as improving our team-size for computer vision.

The Intern would be mostly working on the stages of a machine-vision pipeline closest to the camera. This stage is usually called an “ISP”. The stage adapts the image from the camera for different lighting conditions, does lens correction, denoise and converting the coloured pixels from the sensor to an RGB image. This software ISP needs to be high-quality so using highly accurate algorithms is important here.

Required Skills:

The Intern must be able to program in C++ and understand the basics of images or machine vision, such as colour spaces, lighting and Bayer patterns. Understanding GPGPU programming, such as OpenCL or CUDA, would also be very useful.

Candidate Skills – Must Have:
• Working knowledge of C and C++
• Working knowledge of debuggers
• Working knowledge of Linux and/or Windows operating environments
• Strong self-motivation, and a willingness to learn new technologies on the job
• Excellent communication skills, both verbal and written

Candidate Skills – any of the following would be beneficial:
• Ability to debug code effectively
• Working understanding of build systems and compiler tool-chains
• Working understanding of CMake
• Understanding of assembly languages
• Understanding of object file formats
• LLDB Knowledge
• LLVM Knowledge
• Understanding of the different stages within a compiler
• Understanding of Memory Management styles
• Understanding of code security/exploit prevention
• Understanding of HLSL/GLSL/Other shading language environment
• Understanding of OpenCL/CUDA/Other GPGPU environment

Qualifications:
You should be studying towards a degree in a relevant subject.

We value experience and projects over a degree, so if you can prove skills and knowledge though portfolio work, projects or previous employment, then a degree is not essential.

Location: Edinburgh

Proposed Time-frame: The length of the proposed internship is flexible, ranging from 3 months over the summer to a year’s placement.

Application Deadline: Open.

If you would like to apply for this opportunity, please send an email stating your interest to ppar-cdt@inf.ed.ac.uk. You will then be advised on how to apply.