Software Engineer at Ambarella
Santa Clara, CA, US

Microcode engineers at Ambarella are responsible for the design, development and implementation of Imaging and video algorithm on proprietary SoC. You will be working with industry recognized scientists and architects to bring out best video quality to the market.

Join a team of highly innovative scientists and engineers to research, architect and implement new technologies related to Security and Automotive Camera Solutions. This domain requires deep knowledge of imaging, compression, and computer vision.

Responsibilities

    Develop tool chains to translate Deep Neuro Networks (DNN) based on various deep learning frameworks into power and performance efficient implementation using Ambarella’s multi-threading, multi-core DSP and Vector Processing (VP) Engine
    Be able to identify dependencies and bottlenecks in processing pipelines and introduce the optimizations required to achieve the desired throughput.
    Be able to identify and minimize precision loss between deep learning frameworks and our Vector Processor due to quantization, internal hardware bit allocation differences, and under-flowing/over-flowing of data types
    Perform pre-silicon and post-silicon software development using platforms such as simulation architectural model, FPGA, bring up board, and production camera sets
    Understand features requests from application, system, and customer point of view and propose set of well thought-out solutions and API to cover all possible corner case scenarios.

Desired Skills and Experience

    You must possess a Bachelor’s degree in EE, computer engineering, CS or equivalent. Master’s degree with same disciplines preferred.
    Must be comfortable with C/C++ programming. 
        Minimum qualification is 2+ years of hands-on project/work experience in C/C++ development and debugging
        Knowledge of Python and Perl are a plus
    Familiarity with real time operating system concepts such as registers, interrupts, threads, memory/cache coherency, priority inversion, dead locks, synchronization across multiple threads and cores.
    Must be comfortable with modern software development methodologies such code review, unit testing, peer reviews etc.
    Familiar with one or more of the following popular deep learning frameworks [Caffe, TensorFlow, Caffe2, PyTorch, Onnx]
    Experience in any of the following open source software packages are preferred [OpenCV, FFmpeg, VLC]
    Familiarity with mathematically sophisticated algorithms in areas such as: machine learning, computer vision, linear algebra, data visualization etc.
    Excellent verbal and written communication skills.  Excellent analytical, problem solving and presentation skills.
    Excellent cross-functional, cross-site, international teamwork.