Jobs · Engineering · Indiana

Software Engineer, Parallel Scientific Computing at Vorticity Inc

Berkeley Industrial Engineering & Operations Research · Indiana, United States · 2 days ago
EngineeringFull-time

Responsibilities

  • Develop high-level reference implementations of scientific applications (e.g. finite-difference time-domain methods, computational fluid dynamics, electromagnetic wave propagation, etc.) from mathematical and algorithmic descriptions.
  • Implement and parallelize scientific applications using our proprietary Software Development Kit (SDK) across SPU simulation, emulation, and real-hardware environments.
  • Develop and optimize performance critical kernels for the SPU architecture.
  • Own iterative performance optimization loops, benchmark, profile, identify bottlenecks, implement improvements and repeat, until we reach our performance targets.
  • Understand applications across abstraction layers, from their mathematical formulation to their mapping onto parallel hardware.
  • Identify opportunities to improve our compilation flow, runtime, hardware utilization, and overall system efficiency.
  • Collaborate with architecture and performance teams to analyze bottlenecks and co-design innovative software and hardware solutions.
  • Independently identify problems and opportunities, propose next steps, and drive work forward without requiring detailed task by task direction.
  • Write clear, concise technical documentation for Vorticity’s engineers and customers.
  • Stay current with parallel programming models, High Performance Computing (HPC) architectures, numerical methods, and techniques for mapping scientific workloads onto parallel hardware.

Qualifications

  • Bachelor's degree in Computer Science, Electrical Engineering, Applied Mathematics, Physics, or related field.
  • Master's or PhD in Computer Science, Electrical Engineering, Applied Mathematics, Physics, or related field.
  • 5+ years of experience in modern C++ (CUDA C++ experience strongly preferred) for parallel programming and high-performance computing.
  • Exceptional candidates with fewer years but strong skills are also welcome.
  • Ability to understand numerical algorithms and translate mathematical descriptions into working implementations.
  • Ability and willingness to debug across abstraction layers, from an application or numerical algorithm down through software and into the underlying architecture.
  • Strong understanding of computer architecture and the interaction between software and hardware.
  • Proficiency with C++, Python, and Linux development environments.
  • Excellent written and verbal communication skills.
  • Strong ability to work independently and in a team, while taking ownership of ambiguous problems, and determining what needs to be done next.
  • Willingness to put in the hard work needed to bring our SPU to life.
  • Above all: zero ego.

Similar jobs

Parallel Computing Engineer

Bright Vision TechnologiesChapel Hill, NC· 5 days ago
RemoteOTHR$130k–$180k/yrapply on brightvisiontechnologies.applytojob.com

Parallel Computing Engineer

Bright Vision TechnologiesMarietta, GA· 1 mo ago
RemoteOTHR$100k–$150k/yrapply on brightvisiontechnologies.applytojob.com

Parallel Computing Engineer

Bright Vision TechnologiesApex, NC· 3 wk ago
RemoteOTHR$130k–$180k/yrapply on brightvisiontechnologies.applytojob.com

Parallel Computing Engineer

Bright Vision TechnologiesDurham, NC· 1 wk ago
RemoteOTHR$130k–$180k/yrapply on brightvisiontechnologies.applytojob.com

Parallel Computing Engineer

Bright Vision TechnologiesMorrisville, NC· 1 mo ago
RemoteOTHR$100k–$150k/yrapply on brightvisiontechnologies.applytojob.com