Must Have skills:
Modern C++ (19) w/ CUDA
Experience using MPI (message passing interface) and OpenMP - parallelization / distributed computing
Optimizing / refactoring code
Supplemental” Skills, Plusses:
Numerical Method (unicorn)
Full stack on cluster - bare metal, operating system, drivers, applications (unicorn)
Physics understanding
High Performance Computing
Optimizations
Nice to have DSP background (sample rates, digital filters, etc)
Detailed Job Description
*Please prioritize C++/CUDA, parallel computing, and Python. The other skills requested (HPC, SLURM, 3D Math) are now nice-to-haves.*
Reality Labs at Meta is seeking a contractor for the role of Parallel Computing Engineer in AR/VR audio to work in our research lab. The job entails supporting the audio research team in achieving their research goals by performing infrastructure and workflow setup/management and implement/optimize research code into massively parallel software suite.
Responsibilities
• Work side by side with research scientists to optimize, solve, and integrate existing or future research
• Create, debug, and optimize core parallel algorithms and data structures withing a distributed environment through library development, direct application contributions and software profiling
• Build software, tools, platforms, infrastructure, and documentation that enable research staff to be more effective and efficient
• Write clean readable code, debug complex problems that span systems, prioritize ruthlessly, and get things done with a high level of efficiency
• Mentor researchers and other team members on software engineering best practices, tips and techniques
• Collaborate in a team environment across multiple scientific and engineering disciplines, making the architectural tradeoffs required to rapidly deliver software solutions
• Learn constantly, dive into new areas with unfamiliar technologies, and embrace the ambiguity of AR/VR problem solving
Minimum Qualifications Requirements
• Demonstrated proficiency in computational complexity, algorithm design, low level computer architecture, data structures, software design, large-scale C/C++ systems
• 5+ years relevant experience in parallel computing
• 5+ years of experience in C++ ( v.11)
• Experience with parallel programming, ideally C/C++ threads, MPI and OpenMP
• Experience in GPGPU programming, ideally CUDA C/C++, OpenCL or DirectCompute
• Strong mathematical fundamentals, including linear algebra, computational physics and numerical methods
• Excellent communication and organization skills, with a logical approach to problem solving, good time management, and task prioritization skills
Preferred Qualifications
• Good grasp of audio and DSP fundamentals
• Proven experience in scientific computing using Python and/or MATLAB
• 1+ years experience in working with HPC clusters, automation software, and virtualization/containerization (e.g., Kubernetes, SLURM, VMWare)
• Experience in computer graphics algorithms/principles and physics principles (e.g., wave propagation)
• Experience in SQA, formal/empirical Verification of mathematical models, software defect, and complexity analysis
Additional Notes/Comments
● Top 3 must-have HARD skills:
Modern C++ (19) w/ CUDA
Experience using MPI (message passing interface) and OpenMP - parallelization / distributed computing
Optimizing / refactoring code
● Good to have skills:
Numerical Method (unicorn)
Full stack on cluster - bare metal, operating system, drivers, applications (unicorn)
Physics understanding
High Performance Computing
Optimizations
Nice to have DSP background (sample rates, digital filters, etc)
● Story Behind the Need – Business Group & Key Projects:
Backfill
Audio Simulation Environment / Research
Simulations Team on RLR-Audio
● Is there anything we can share with Candidates to compel them to choose Meta over competitors?:
Working with PhD researchers
Candidates who like physics, applied mathematics, audio and acoustics and high performance compute will have a great time - fun project for the right person
● Typical Day in the Role:
Infra, optimization, new features, debugging - typical software development day
Weekly standups
Daily face time with researchers
80-90% coding vs. meetings / admin
● How will performance be measured:
Can the candidate deliver expected outcomes?
Communication / raise issues when they come up