Codeplay is is a major contributor to the development of the SYCL open standard for heterogeneous programming with modern C++. As members of the Khronos group Codeplay help shape the future of the SYCL standard in order to bring support for the latest heterogeneous hardware and align SYCL closer to standard C++. Parallel to this the ISO C++ committee are in the process of introducing features to the C++ language and standard library for parallelism, concurrency, asynchronous tasking and support for heterogeneous compute, including both the Parallelism TS 2 and the Executors proposal, which Codeplay has also contributed the development of. The Executors proposal has been in the works for several years, the most recent form being ISO C++ paper P2300, which introduces the sender-receiver asynchronous programming model, which uses the composition of lazy tasks to execute on the CPU as well as heterogeneous accelerators such as GPUs.
We are looking for someone who has an interest in heterogeneous compute programming models and modern C++ who can help us implement these upcoming C++ features based on SYCL. You will be keen to learn about the SYCL programming model, the ComputeCpp and DPC++ implementations of SYCL and the ISO C++ Parallelism TS 2 and Executors proposals. During the internship you will be involved in reviewing the ISO C++ proposals, analyzing them for any gaps in their design in relation to a SYCL-based implementation, and the implement those proposals for SYCL, targeting ComputeCpp and DPC++.
The ideal candidate is someone who is both an engineer and is motivated by helping others, and can work through a problem from start to finish, documenting each step and writing tests to ensure correctness where applicable. You will be comfortable with asking colleagues for help, or scouring documentation for relevant information required to complete tasks. You will also be expected to produce high quality, readable and well-commented code that will be published as open source and used by the developer community.
Please Note: Due to COVID-19 we are following the Scottish Government Roadmap and, although we are operating normally, we have not yet returned to the office.
The successful candidate should be able to work from home for the duration of the office closure. The position is a temporary internship. The successful candidate must be able to demonstrate the existing right to work in the UK.
Although this internship is on offer for a duration of 3 months, we are delighted to accept applications for longer internships and many of our interns have stayed with us to do university placement years or have become permanent members of our team.
- Evaluate the current status of the Parallelism TS 2 and Executors proposal
- Assess the mapping of SYCL 2020 features to those proposals and identify any gaps
- Implement the Executors proposal on top of SYCL
- Implement the C++ parallel algorithms on top of executors
- Implement and propose extensions for any missing features which are required
What We Offer
Codeplay is internationally recognized as being at the forefront of software development technology. Working at Codeplay offers unique opportunities and challenges to learn new technologies and to get 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, etc.) 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 Software is a world pioneer in enabling acceleration technologies used in AI, HPC and automotive. Codeplay was established in 2002 in Edinburgh, Scotland and developed some of the first tools enabling complex software to be accelerated using graphics processors. Today, most AI software is developed using graphics processors designed for video games, and more recently specialised AI and computer vision accelerators. Codeplay continues to work with global technology leaders to make the latest complex AI systems programmable using open-standards based programming languages and allows application developers to quickly bring software to the market. Codeplay is also deeply involved with the definition of open standards, especially OpenCL™, SPIR™, SYCL™, and Vulkan™ through The Khronos Group, and MISRA C++ for automotive.
- A friendly and relaxed working environment where colleagues respect and support each other.
- Learn from experienced colleagues: our staff frequently give company-wide knowledge-sharing presentations on new software and technology trends, personal projects and other relevant subjects.
- Great career prospects within a growing company
- Newstart mentoring scheme
- Flexible working hours
- Frequent company social events (social nights, pot luck lunches, gaming, karting, outdoor adventures, and more) (Post-COVID!)
The ideal candidate is a self-motivated individual who can work through a problem from start to finish, meet deadlines as required to support software projects, and has the ability to work under pressure. You will be working on technology that is seldom announced to the public and could be several years away from public release, so confidentiality is critical. You should be able to work both independently and collaboratively within teams of varying skill sets and expertise. You should be welcoming towards, and able to adapt to, the introduction of new technologies, responsibilities and projects, as Codeplay works with cutting-edge technology and takes on a diverse range of projects.
- C++ development experience
- Good written English and communication skills
- Ability to work effectively in a remote environment
- Working knowledge of source control and configuration management tools
Knowledge and/or experience of any of the following would be useful for the role, but are not essential. You must be able to learn new skills, but will be given support from Codeplay's team to get you up to speed.
- Experience with heterogeneous programming models such as SYCL, OpenCL or CUDA
- Experience with asynchronous and parallel programming
- Experience with modern C++ (14/17/20)
Any application which results in a job offer is conditional upon the candidate already having or successfully applying for the right to work in the UK. Codeplay is proud to be an Equal Opportunities employer. We celebrate and value diversity. We are committed to creating an inclusive environment for all employees, regardless of race, colour, gender, religion, national origin, ancestry, citizenship, disability, age, sexual orientation or any other characteristic protected by law. All employment is decided on the basis of qualifications, merit and business need and we strongly encourage applicants from all backgrounds and walks of life. We are committed to providing flexible working options such as part-time/compressed hours/timeshifting/remote. If you have a disability or additional need that requires accommodation, just let us know.
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 relevant work or projects, we would love to see them, so please include links to them in your application.You should be studying towards a degree in a relevant subject; however, if you can prove skills and knowledge through portfolio work, projects or previous employment, then a degree is not essential.If you have C++ Code Samples (where relevant) please put the link to these on your application; Our system will only accept links to personal projects/GitHub accounts or PDF documents.
Application Deadline: We aim to close this advert on the 27th May 2022, so please look to get your application in prior to this date. We anticipate a high level of applications for this role and so reserve the right to close this vacancy prior to the closing date given.