Position: C/C++ Software Middle Developer (Poland)
Company: Luxoft
Experience required: 3y
English level: fluent

Project Description
AMD ROCm is an ecosystem of libraries and tools for developing applications that harness the processing power of AMD graphics cards. It is a series of libraries with primitives rocmCUB, rocBLAS, rocSparse, rocThrust. These are also special purpose libraries such as MIOpen which provides basic algorithms from the area of machine learning running on GPU. In addition to libraries, ROCm provides development tools, a C++ and Fortran language compiler.

• https://rocmdocs.amd.com/en/latest/
• https://github.com/ROCmSoftwarePlatform

The main programming tool is HIP. The HIP is a C++ programming interface and runtime layer for writing software to execute on AMD and NVIDIA GPUs. The HIP framework includes many components based on the LLVM infrastructure.

In Gdańsk, we are building a team of 7 people who will work on different aspects of the HIP platform. These include GPU C++ compiler, profiler, OpenMP, FORTRAN compiler. The team will be part of a larger international AMD team working on ROCm components.

We are looking for engineers willing to develop and optimize the COMGR - Code Object Manager component of the HIP platform. This component creates and inspects code objects that store machine code for a given architecture instruction set (ISA). It also enables the compilation of source codes from the programming interface and supports application debugging processes by generating intermediate compilation files. For COMGR project, we are looking for individuals with good knowledge of the C++ programming language, an excellent understanding of concurrent programming techniques and Linux system programming, willing to develop GPU programming tools.

Responsibilities
• Optimize the source code compilation processes for the GPU devices.
• Propose design, defend and implement the compiler features
• Developing and optimizing the OpenCL and HIP compiler driver for the AMD platform.
• Review code changes and design proposals from team members
• Working with on-site and offshore teams to deliver the software solutions on schedule.
• Work with opensource communities delivering patches and reviewing the solutions from the community and upstreaming as required.
• Contribute to the technical content of the compiler documentation/manuals.
• Develop a close working relationship with Compiler QA, Compiler Support and other compiler teams.

Skills
Must have

• Strong programming skills, mainly C++
• Extensive experience with parallel programming models
• Experience using version control software such as Git
• Good communication in English (both written and spoken)
• Positive attitude and integrity

Nice to have

• Experience in LLVM compiler
• Experience in one of the computing frameworks: OpenCL, CUDA, HIP
• Knowledge about GPU architecture
• Linux system programming