Avatar for CynLr

Robots with Visual Object Intelligence

Software Engineer - C++

₹15L - ₹20L • 0.1% - 0.25%
Apply now
If you don’t have sufficient work experience but you think you can do justice to the requirements, Do apply.

ABOUT THE ROLE


Requirements in Practice:

• Excellent C++ skillset
• OOP driven thought process – scalability, modularity, polymorphic coding
• Deep architecture understanding with thorough knowledge of design patterns and adept in designing architectures for parallel threading
• Multi-threaded programming libraries like pThreads, OPENMP, OPENCL
• Asynchronous Programming
• Experience with API architecture design and development
• Adequate experience in translating and optimizing algorithms specific to DSP (which includes image processing) and/or Neural Net Architectures (at least one of the two is needed)
• Implementing and Optimizing Algorithms
• Adept with building test frameworks for codes.
• Must have a strong inclination for documentation and code readability.


Must have understanding of :

• Compiler working and construction.
• CPU architectures.
• GPU architectures, CUDA.
• Hardware associated driver development.
• OS and layers (Board Support Packages, BIOS, UEFI, BootLoader)
• Memory architectures and optimizations.
• MIMD, SIMD


Good to have experience and practice with:

• GPU based application development. Knowledge of CUDA (Excellency is not necessary)
• State machine architecture
• Realtime computing
• UI based deployable application development


Good to have tool experience with:

• CUDA
• cuDNN
• ML Architectures
• Computer Vision Libraries


Team Structure:

There will be 4 single member teams to start with –Algo Team, GPU Team, SW Dev Team & HW Team. Members of other teams will be passive members of each team apart from the team they lead. The Algo Team will provide the DNN & Vision algorithms, while the GPU Team will provide the GPU optimizations for the algos, HW team will provide the HW integration and SW team with translate GPU optimized algos into SW blocks. Each team will split the implementation among other teams and guide them through the implementation. Every team member will be a passive member of all other teams.


What will you do?

Your contribution is predominantly (but not confined only to) for architecting, defining test cases, reviewing & implementing all the SW & firmware parts and development effort - the image processing, DNN APIs, vision sequences, manipulation sequences, drivers, etc. Your thorough knowledge of system architecture, C++ skill set, design patterns & your penchant for application-oriented SW design thought process, will drive and implement the whole software design & development part. You will also provide architectures and approaches for the drivers to be developed to keep them modular and scalable, and consistently review them all.


How will you Do?

You have complete freedom here, but you will be subjected to reviews. Since, this is a startup and the product is not yet well-defined, you would be the one with the responsibility of defining it. Expect things to be not orderly and requirements to not be solid. Part of your design effort largely involves requirements building too and developing architectures that are agnostic to such requirement changes. The SW part of the product significantly evolves as per your thought process and will hence forth carry your signature in it.

You will also be building a team as the product evolves to maintain and develop further. Though confined to a focused area, the work is pretty much expected to be entrepreneurial with the exact advantages and difficulties of a startup.


Target Application:

Imagine the hundreds of objects that we use in our daily life – from our cars, our phones, the utensils in our kitchen, to our wardrobes, from eyeglasses to daily essentials like toothbrush! Imagine all those tens and hundreds of parts that go into each of these objects that we use. Each of these parts are manufactured from its raw material through several stages of specialized processing - grow, mould, cast, forge or machine. Each of these stages needs human hands and eyes tending to the customized machines working in tandem with them – manual labour amounting to millions of hands and eyes before the product reaches you!

While we are attempting to replace the hands and eyes through our product, it still needs to be integrated into the “specialized processes” so that they can work in tandem with the “customized machines”. This complexity imposes a need for an Integrator who will have to quickly (typically in less than a month’s time) custom build a solution to integrate our product into those processes in the factory floor. This demands us to develop a highly customizable product through a minimal set of ready to deploy functional programming blocks (APIs), in contrary to a product like a smart phone which is ready to use out-of-box but not customizable. Using the combinations and permutations of those APIs, the integrators should be able to tailor build the process logic without having to worry about/understand the programming nuances, fitting to any possible scenario of automation. (Typically, these integrators are not very adept with engineering concepts, many being Diploma Degree holders or inexperienced freshers with minimal coding knowledge, who are trained predominantly in milder tasks like machine design and handling machines, PLC programming etc).

Meet your team

People you would work with in this role

Gokul N A

Avatar for Gokul N A
Founder & CTO @CynLr ; Past - Machine Vision, Embedded & RF specialist @National Instruments
Co-founder & CEO @CynLr • Worked at @National Instruments

More jobs at CynLr

View all jobs

Algorithms Engineer - ML, Machine Vision

Apply now