We are seeking a motivated and talented software engineer to propel the core technology that enables automatic code generation from MATLAB and Simulink. As a part of the Embedded Coder product team, we are responsible for developing novel compiler optimization techniques to automatically generate parallel code exploiting the underlying concurrencies within large-scale embedded systems. The automatically generated code from the Embedded Coder can be found in thousands of real-life products around the world ranging from cell-phones to aircraft engines.
Design innovative algorithms and integrate them into our code generation environment to improve the efficiency of the generated code. Participate in all aspects of software development with enthusiasm: collecting requirements, writing specifications, coding, testing and research. Build up cross-domain knowledge and quickly delve into a large code base.
As a part of the Embedded Coder product team, improve the run-time performance of the code generated by popular MathWorks products such as Embedded Coder and MATLAB Coder. We heavily rely on general compiler technologies. The focuses of the group include but are not limited to
Classical compiler analysis and transforms;
Loop optimizations and parallelization;
Auto SIMD vectorization;
Vendor and/or third-party libraries integration.
Keep track of state-of-art new developments in both the industry and academia compiler communities. Actively conduct research, adopt and improve existing solutions or invent new algorithms to satisfy our unique needs. Below are some of the research areas we continuously track.
IR design for explicit and/or automatic parallelization;
Loop transformations, e.g. Polyhedral;
Auto data parallelization and vectorization;
DSL, e.g. Halide;
Domain specific optimization;
Popular compiler infrastructure, e.g. LLVM.
Emerging IRs, e.g. RVSDG, MLIR.
Work closely with MathWorks toolbox teams and adopt a result-driven approach for feature planning and development. Depending on the market needs and industry mega-trends, we agilely switch our focus to improve code efficiency for the most important application domains and toolbox functions. Currently our focus is to improve run-time speed of the generated code for image processing, vision processing and automated driving system.
The ideal candidate for this position will have a passion for solving challenging software problems involving compiler technologies.
Having exposure to parallel code generation technologies (viz., targeting multi-core, SIMD, etc.) would be considered a plus.
Knowledge about modern compiler technologies.
Strong abstraction and algorithmic skills.
Experience working with a large code base.
Experience with C++
A bachelor's degree and 7 years of professional work experience (or a master's degree and 5 years of professional work experience, or a PhD degree) is required.
The MathWorks, Inc. is an equal opportunity employer. We evaluate qualified applicants without regard to race, color, religion, sex, sexual orientation, gender identity, national origin, disability, veteran status, and other protected characteristics. The EEO is the Law poster is available here.MathWorks participates in E-Verify. View the E-Verify posters here.