CUDA/OpenCL GPU Developer

streamhpc Stream HPC

Open positions: 8

We’re playfully serious. We handle serious problems, but we’re mostly active gamers.

Our job is simply building extremely fast software using the latest hardware (both GPUs and CPUs) and the most efficient HPC and GPGPU tech (CUDA, HIP, SYCL, OpenCL, MP, MPI). Besides technical skills, this takes good project management, putting most time to problem solving and have extremely good understanding of how code and data stream through the CPUs and GPUs.

For over 10 years we’ve been called on by companies world-wide to solve their HPC- and GPU-problems. We seek people who’d like to strengthen our group of GPU- and HPC-enthusiasts.

SELF-ASSESSMENT

As we’re not a university but a company, there needs to be a balance between things you can offer and the things we offer. Like in every job description there is a list of bullet points to explain what we seek. To make it possible to self-asses your fitness for the job, we’ve put the number of points (✪) for each bullet point.

INSTRUCTIONS. For each point assess yourself as being a:

  1. beginner: have been in contact with it briefly
  2. junior: had some experience, but not difficult problems
  3. medior: had more experience, but cannot coach others yet
  4. senior: experienced enough to coach others to really advance on this subject
  5. lead: can teach new things to a senior
  6. principal/master: one of the world’s best

Real question to answer before applying: do you want to become a senior in GPGPU?

If you have the imposter syndrome don’t be too harsh on yourself. If you’re overconfident, be realistic. If you worry you’re both, pick imposter syndrome only.

Heads up. During the interviews we ask questions for the above self-assessment. If you assess yourself as a senior for GPU-coding because you were the best-of-class, you’ll get questions. And there is no person who can be defined by lists, so do mention where you stand out.

You, as a CPU/GPU Developer (11 items, 22 weigths)

We seek people with experience. This can be open source projects for first job seekers, or past jobs for those with job experience.

  1. You are capable of designing mathematical algorithms. ✪
  2. You are strong in math and hard sciences. ✪✪
  3. You know several hardware architecture specification documents. ✪
  4. You know how compilers work and you are unfortunate enough to know when they don’t. ✪✪
  5. You have good experience with C and C++. ✪✪
  6. You have practical experience with CUDA/HIP. ✪✪✪
  7. You have practical experience with OpenCL/SYCL. ✪✪✪
  8. You have experience designing performance-driven architectures. ✪✪
  9. You know how to write tests. ✪✪✪
  10. You are experienced with continuous development. ✪✪
  11. You have experience with low-level optimizations. ✪

As the four stars indicate, we do need minimal GPGPU-experience, as you won’t learn it here.

You, as a Problem Solver (8 items, 21 weights)

Coding is only one part of solution. Most of the time we’re solving problems, where coding is just the means.

  1. You like the ideas and theories around the “learning mindset”. ✪✪✪
  2. You have a structured problem solving approach that you could explain. ✪✪✪
  3. You have high self-awareness and can self-observe. ✪✪✪✪
  4. You have high standards for yourself. ✪✪
  5. You test out approaches by making quick experiments. ✪✪
  6. You test out possible solutions by mentally putting them in different scenarios. ✪
  7. You regularly take time to zoom out to get an overview on the problem, to be able to balance the inputs for the solution. ✪✪✪✪
  8. You always follow through. ✪✪

If you score high here, this will compensate for any lack of technical experience. Also for continuous growth, you’ll need to score high here.

You, as a Project Team Member (10 items, 20 weights)

Our company’s strength is that we work in teams. We don’t know everything as individuals, but as a team we can solve almost any problem around HPC and GPUs. This means we highly value collaboration and thus must be efficient in project handling.

  1. You have a proven track record of being focused on results. ✪
  2. You have talent for turning vague problems into the right actions, and you want to build on it. ✪
  3. You normally write down tasks, and then prioritize & ESTIMATE them. ✪✪✪
  4. You understand that well-defined, well-communicated delivery criteria are the responsibility of every team member. ✪✪✪
  5. You can identify something missing to move a project forward smoothly. ✪✪✪
  6. You speak up when the project diverges from the trajectory. ✪✪
  7. You are used to administrate your time spent on an issue. ✪
  8. You can delegate work. ✪✪
  9. You can get work delegated. ✪✪
  10. You can explain, with examples, why the above are important. ✪✪

We explicitly did not state “project management”. It is about playing your part of making an efficient team.

Us, as your team and your employer

We’re different than most development companies, and not just in the type of work we do.

We invest in our people. We have a 4-6 month onboarding, create personal development plans and coach each other. We allocate time & provide guidance in setting goals. You earn trust by accomplishing those goals. By understanding what is blocking somebody (skills, attitude, experience, etc), we help each other to improve. As we’re not a large corporation, we seek people who already have the right attitude for such personal and professional growth.

We do more than just coding. We are still a relatively young company and our engineers have a say in every part of the company to improve it for the long term. This means they commit time to things that are not coding.

We like to solve problems as a team, as individuals we then don’t need to be strong in all areas. For us teamwork is having conversations about what is working, what isn’t and what to do about it. It means following up and making things happen. Occasionally it means talking about feelings.

We value openness to new experiences, to people, to feedback and especially to learning. Particularly in areas where doing so is uncomfortable. How comfortable are you dealing with the unknown?

And we do actual work most of the time. We make scientific software that performs. We are specialists in performance driven software designs, GPUs and high-end CPUs. Our clients come to us when they have a scientific computing problem to solve, build GPU-software or to build complex tools. Our initial effort focuses on understanding their needs, provide clarity on potential solution paths, and work with the customer to deliver the right solution. We then build. Every project is different.

Want to learn more about us and our culture? See https://streamhpc.com/jobs/what-does-it-mean-to-work-at-stream-hpc/

Application process

If you respond quickly for every step, you can land a job in 2 weeks.

We try to minimize the time it takes you, while also giving you enough chances to proof yourself. As we sometimes are flooded with applications, we filter out on simple things like “Did not mention CUDA, OpenCL, SYCL, GLSL, HLSL, etc” – be sure you add GPU-experience!

  • You send a CV, some public code (preferably C/C++/CUDA/HIP/OpenCL) and your motivational letter/email.
  • We do a quick scan of your CV and letter. (In most cases you’ll get feedback within 2 to 5 days)
  • For those who are left, you do a simple online test. This is to get a grasp of your way of working and thinking, and to prepare you for the longer test. (25 minutes max)
  • You will have a talk (video) with Samantha (30-45 minutes)
  • After that you are invited for a longer online test. You show your skills on C/C++ and algorithms. Be warned this includes the ridiculous puzzles, simply because we actually use those ridiculous things (takes 2 – 3 hours)
  • You’ll get a technical interview on C++ and GPGPU (2 hours)
  • We’ll send you a conditional job-offer, assuming that the rest will be ok
  • We now go into the long interview to be absolutely sure we are a fit, and to introduce each other in more detail (takes 3 hours)
  • We check your references

Made it till here? The job-offer becomes final and we’ll welcome you in our team!

So what are you waiting for? Apply for this job!

To apply for this job email your details to jobs@streamhpc.com.

Related Posts

5yearsSC

Birthday present! Free 1-day Online GPGPU crash course: CUDA / HIP / OpenCL

...  second goal is hands on. We'll provide templates for CUDA/HIP and OpenCL, where you focus on making the core compute part. The third ...

Kabul - An Afghan National Police (ANP) students study basic logistics training at the Afghan Ministry in Interior (MOI) August 1, 2010. The Afghan MOI is providing the first ever computer based logistics training for ANP personnel. (U.S. Air Force photo/ Staff Sergeant Matt Davis)

Updated: OpenCL and CUDA programming training – now online

...  or replaced if time is getting too limited. Day 1: OpenCL/CUDA Foundations This is close to our standard OpenCL crash course. We ...

IMG_20160829_172857_cropped

Get ready for conversions of large-scale CUDA software to AMD hardware

...  translating several types of software to AMD, targeting OpenCL (and HSA). The main problem was that manual porting limits the size ...

notyetanothergraphicsAPI

Rant: No surprise there’s a shortage of good GPU-developers

...  at StreamHPC we know many languages to program GPUs: OpenCL, CUDA, Shaders-languages, OpenMP, RenderScript, Metal, C++AMP and more. We ...