Oculus is a world leader in the design of virtual and augmented reality systems. Come work alongside expert software engineers and research scientists to create the technology that makes VR and AR pervasive and universal. Join the adventure of a lifetime as we make science fiction real and change the world. We are currently seeking a software engineer with solid machine learning (ML) fundamentals, deep C++ skills, and a passion for scaling machine learning (ML) and computer vision (CV) algorithms to run on performance-constrained hardware/software platforms. You are the kind of engineer who has a solid understanding of the fundamentals of ML software and you are able to use those fundamentals to implement, port, improve, and optimize ML software on a wide range of hardware/software platforms. You partner closely with peer research science and hardware teams on the design of algorithms and hardware platforms to allow complex algorithms to run efficiently in constrained compute environments. You are skilled in modern hardware acceleration techniques (e.g. vectorization, GPGPU, etc.) You are passionate about quantitatively navigating accuracy and compute complexity trade-offs in complex ML and CV systems.
Analyze and understand ML software components from multiple partner teams, lead the integration of those components into the unified product code base, and drive their continued development.
Port ML software systems to new platforms.
Apply expert software development skills to a wide range of ML-related coding projects.
Profile and optimize the performance of complex ML systems, in partnership with hardware and software research scientists.
Develop optimized software to run on variety of platforms and environments including mobile, tablet and laptops.
Implement automated tests that ensure ongoing software correctness in a long-term sustainable way.
Educate new team members on best practices for software development, testing, and documentation.
M.S. or Ph.D in Computer Science and 3+ years of relevant work experience in ML software in C++.
Experience porting ML algorithms to new hardware/software platforms.
Experience optimizing ML software algorithms with hardware acceleration techniques.
Experience with vectorization techniques on at least one platform (e.g. SSE, NEON, etc.).
Familiarity with at least one scientific computation package (e.g. Eigen, Matlab, etc.).
Experience developing, debugging, and shipping software products on large code bases of platforms and tools.
Experience with Software Development processes including: source control, bug tracking, and design documentation.
Demonstrated ability working collaboratively in cross-functional teams.
Experience with scriptinglanguages such as Python
3+ years of experience in applying machine learning techniques to computer vision problems.
Experience developing on at least one ARM-based mobile/embedded platform.
Experience with C++11 / C++14 features and principles.
Experience with at least one GPGPU technique (e.g. Cuda, OpenCL, etc.).
Experience with technology transfer work involving research science, especially in fields such as computer vision, graphics, robotics, and machine learning.