Codeplay is looking for an engineer to work on development tools, such as performance profilers.This is a C++ development role, working on tools to help software developers deliver high-performance graphics or machine vision software on smartphones, virtual reality and (in the near future) self-driving cars. Candidates may additionally work on compiler and debugger technologies (such as our ComputeCpp and ComputeAorta products) in order to support various profiling analysis techniques. At Codeplay, we produce the software development tools to lower power consumption and increase performance via open standards. To help developers further, we need to be able to improve the ability to analyse how the software is running across a whole System-on-Chip. The successful candidate will be part of a team working on performance analysis tools across several areas, including open-source projects, customer projects, academic collaborations and research. This role will involve learning a lot of new platforms, techniques and technologies as part of a team. The relevant candidate will show enthusiasm for working with others to produce tools that help developers work better.
Codeplay has a relaxed working environment and you will be working alongside other creative and talented developers. Codeplay is regarded as being at the forefront of compiler and development technology and has active participation in several research programs within the European union, the Khronos Group and the HSA Foundation .
The ideal candidate is a self-motivated individual who can work through a problem from start to finish, to deadlines as required to support software projects, and sometimes under pressure. They will be working on technology that is usually not publicly announced and may be several years away from public release, and candidates must understand the secretive nature of the work that we undertake.
The position is permanent and will be based at our head office in central Edinburgh.
What We Offer
Codeplay is internationally recognized as being at the forefront of software development technology, and working w0ith us offers unique opportunities and challenges to learn new technologies and to be involved in shaping the software industry. Codeplay's projects range from: creating tools and tool sets (optimizing compilers, debuggers, profilers, programming models & APIs, test systems/suites, ...) for brand-new unannounced next-generation hardware; developing and optimizing current machine learning (TensorFlow) and computer vision applications; research and development into lowering the power consumption of mobile devices, and contributing to new programming models and software standards (e.g. C++, SYCL™, OpenCL™, Vulkan® and SPIR™-V). Codeplay is an active contributor in the community for the Clang, LLVM and LLDB open-source compiler and debugger projects. Our engineers are also leading the effort to bring support for machine learning with TensorFlow to OpenCL-enabled devices, by adding support for the SYCL for OpenCL open standard to the open-source codebase. We are building an ecosystem around SYCL (the C++ high-level , including public projects for computer vision, linear algebra, and C++ parallel programming APIs - see https://github.com/codeplaysoftware. If you are excited about contributing to programming tools that will be used by developers worldwide, please get in touch!
- Work on exciting brand-new technologies and standards with well-recognized customers
- A friendly and relaxed working environment where colleagues support each other
- Knowledge sharing: our staff frequently give company-wide presentations on new software and technology trends, personal projects and other relevant subjects
- Great career prospects within a growing company
- Positions are available at various levels, from entry-level Software Engineer to Senior Principal Software Engineer, depending on your skills and experience
- We develop our employees and provide training in skills such as project and people management, networking and delivering effective presentations
- Frequent opportunities to attend conferences and developer meetings, represent the company, and become a recognized expert
- We encourage engineers to progress quickly in their roles, for example to become team leads (project management training will be provided)
- Codeplay has been recognized as an excellent employer and awarded the highly respected Investors in People accreditation
- Opportunities to get involved with industrial standardization initiatives such as The Khronos Group and HSA Foundation, and various European research programmes
- Working on early-stage technology offers opportunities to contribute/shape new hardware/software and standards
- Flexible working hours, stock options and pension schemes
Candidate Skills - Must Have
Day-to-day, a successful candidate will be working on tools to allow application programmers to optimise the power efficiency of their programs. Profiling is an important part of this, so they will be augmenting existing profiling tools, such as CodeXL, with better support for differente heterogeneous programming models and platforms. Work will be carried out on both the front end and back end of the tool, so experience with both Qt GUI development and low-level systems programming will be utilised. Alongside profiling, implementation of modern heterogeneous programming models, the underlying infrastructures, and debugging tools need to be developed. These components feed into each other, with the compiler instrumenting code to generate information for both the debugger and profiler, and the debugger providing another layer of tooling for developers to understand their programs. As such, the candidate may additionally work on C++ compiler and debugger tools to support the profiling work.
- Must be able to program in modern C++ (11&14)
- Must be able to use a profiler to analyse software performance and have an understanding of performance counters and runtime tracing
- Working knowledge of debuggers and compiler development
- Implementation of multithreaded, responsive user interfaces with Qt
- Self-motivation, with a willingness to learn new technologies on the job
- Excellent communication skills, both verbal and written
- Industrial experience with optimising real-world GPGPU programs with models such as OpenCL or CUDA
- Graphics APIs such as OpenGL or Vulkan Candidate Skills -Any of the following would be beneficial
Experience or understanding of several of the following would be highly desirable:
- Use of CodeXL
- Implementation of profiling/analysis tools
- Build systems (e.g. CMake) and compiler tool-chains
- Continuous Integration systems (e.g. Jenkins) and best practices
- OpenVX/OpenCV/other computer vision environment
- HLSL/GLSL/other shading language environments Games console/low-level graphics technology
- Experience with relevant optimisation targets, such as Eigen or ray tracing.
A degree in a relevant subject is required. The Cover Note/Letter is just as important as your CV/Resume, so please include one, stating why you believe you are a good fit for the position. If you have examples of your own software projects, we would love to see them, so please include links to them in your application.