Software Architect - C++
Requirements in Practice :
• Setting up the Project Framework and breaking down the composition of the SW - scalability, modularity & maintainability.
• Set up a development framework for the distributed development of SW to ensure – Scalability, Modularity and Maintainability.
• Design and set the Coding standards and guidelines along with the review process to assess the Scalability, Modularity and Maintainability of the code across every stage of SW Development Lifecycle
• Identify the platforms, Setup Tool Chains and support APIs needed for every stage of the Development process – Visual Studio IDE setup, Continuous Integration, Debugging for Multi-Threads, Licensing, Cross Language Licensing, Dependency Bundling, etc.
• Set up the C++ project templates for Services Architecture, API structure and state machine.
• Design the development process for Parallel Threaded Coding and debugging.
• Train the team with Debugging skills and nuances of performance improvements with C++.
• Design the Dependency architecture and version management system
• Design the release management system & API/Library Licensing.
• Design Test Frameworks for Integration, distribution, Performance profiling & Safety.
Software Engineer - GPU Performance
Requirements in Practice :
• Experienced with Low-level CUDA API
• Strong with fundamentals of C++/C.
• Adept with Visual Studio developer toolchain.
• Experience in low-level performance analysis and optimization with a strong understanding of the GPU HW architecture and HW-oriented performance optimization.
• Including proficiency using GPU profiling tools such as NVIDIA Visual Profiler, NVIDIA Nsight Compute and Graphics Developer tools for debugging
• Optimizing Time Continuous kernels - not just High-Level Kernel optimizations that are shipped with CUDA.
• Design the framework of Pipelined Image processing
• CUDA core optimization to achieve maximum performance for a pipelined processing between multiple blocks of functions executing simultaneously.
• Dynamic Load balancing between kernels and functions.
• Interleaving processing between CPU and GPU and runtime modification of GPU processing control flow from CPU.
• Practice with NvidiaDirect to access memory directly from Peripheral devices (PCIe), Display and USB, bypassing the CPU
• Practice with constructing Direct Visualization of GPU Memory for Debugging without CPU transfer
• Experienced with designing and optimising foundational neural networks and modelling neurons (basically optimizing mathematical models that involve time-weighted kernels) ground up.
• Exposure to Omniverse is a Plus
Software Engineer - C++
Requirements in Practice :
• Excellent C++ skillset across Windows and Linux Platforms.
• Optimizing processing cycles for large image pipelines and memory handling is a plus. (Camera generates 1 GB of Data every second)
• Experience with State-Machine Architecture is a plus
• Experienced with entire SW development Lifecycle & best practices.
• 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
• Experience with API architecture design and development
• Experienced with DLL & Static Library building and distribution.
• Adept with translating and optimizing algorithms, especially 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.