Low Level Software Engineer (SPU)
Role details
Job location
Tech stack
Job description
From day one, you will help build the numerical software foundation of the SPU. The ideal candidate is excited to implement mathematics on a new architecture. You will work closely with hardware architects, compiler engineers, and runtime engineers to shape how numerical algorithms are expressed, executed, and optimized on the SPU. This position is ideal for someone who enjoys moving fluidly between applied math, numerical algorithms, and parallel programming, and who wants to help build a new scientific computing platform from the ground up., * Prototype and implement core numerical linear algebra kernels and libraries for the SPU.
- Translate mathematical algorithms into executable, performance-relevant software.
- Write C, C++, and Python reference implementations to guide hardware, compiler, and runtime decisions.
- Collaborate with hardware architects, compiler engineers, and runtime teams to evaluate algorithm-architecture tradeoffs and ensure numerical primitives map cleanly to the SPU programming model.
Requirements
- Strong foundation in applied mathematics, numerical linear algebra, and scientific computing, with the ability to turn mathematical ideas into correct and efficient software.
- Strong proficiency in C, C++, and Python.
- Comfort working close to hardware and writing performance-critical, low-level code.
- Experience with parallel or accelerator programming models such as CUDA, OpenMP, MPI, SYCL, HIP, or similar.
- Ability to reason about memory layouts, cache behavior, bandwidth, arithmetic intensity, and parallel execution.
- Solid understanding of concurrency fundamentals, including race conditions, atomics, synchronization, and thread/process behavior.
Nice to Have Skills:
- Familiarity with numerical computing libraries such as BLAS, LAPACK, FFTW, Eigen, SuiteSparse, PETSc, cuBLAS, cuSOLVER, cuSPARSE, cuFFT, or similar.
- Experience building numerical libraries, solvers, scientific computing frameworks, or HPC infrastructure.
- Familiarity with performance analysis tools or modeling techniques, including profilers, roofline models, hardware counters, or analytical performance models.
- Exposure to compilers, runtimes, code generation frameworks, or domain-specific languages for numerical computing.
- Experience applying numerical methods in scientific domains such as physics, geophysics, CFD, climate, materials, fusion, or finance.
Non-Technical Qualities:
- Excellent written and verbal communication skills
- Comfort operating in an early-stage environment where the hardware, compiler, and software stack are evolving together.
- Willingness to put in the hard work needed to bring the SPU to life.
- Above all: low ego.