Description
NVIDIA is seeking a passionate, world-class software engineer to join its Compute Developer Technology team (DevTech).
The team has over 150 engineers across Beijing, Shanghai, Shenzhen, Taipei, Seoul, and Sydney.
You will work directly with key application developers to understand the current and future problems they are solving. You will build and optimize core parallel algorithms and data structures to deliver the most effective solutions using GPUs, through both library development and direct contribution to applications. This includes training and inference optimization for large language models (LLM), contributing to frameworks and open-source projects in the large language models ecosystem, such as Megatron and TRTLLM, SGLang, vLLM...
You will collaborate closely with the architecture, research, libraries, tools, and system software teams at NVIDIA to influence the build of next-generation architectures, software platforms, and programming models. This includes investigating impact on application performance and developer efficiency, and turning real-world developer feedback into actionable platform improvements.
You will engage in deep optimization of high-performance operators, involving but not limited to GPU kernel optimization, instruction-level tuning, and compiler optimization. These optimizations will directly support customers or be coordinated within computation libraries and open-source projects across the community, like cuDNN, cuBLAS, and CUTLASS and Open-source libs like DeepGEMM, FlashMLA, FlashAttention, Flashinfer...
You will improve communication for broad distributed large language models workloads. You will spearhead advancements in distributed training and inference by refining communication libraries (NCCL, NCCL GIN, NVSHMEM) and engaging in open-source communication libraries (like DeepEP, NCCL EP). This demands in-depth study of interconnect topologies (NVLINK) and network protocols (InfiniBand/RoCE) to design efficient data transfer strategies and methods for compute-communication overlap.
Requirements:
- A degree or equivalent experience from a university in an engineering or computer science related field.
- Solid understanding of C, C++, Python, or Fortran.
- Strong knowledge of software development, programming techniques, and algorithms.
- Strong mathematical fundamentals, including linear algebra and numerical methods.
- Background in parallel programming and accelerated computing, with comprehensive knowledge of parallel architectures and methods for performance analysis and tuning.
- Experience in full-stack performance analysis and optimization within at least one of these areas: large language models and high-performance computing.
- Solid software engineering fundamentals and system architecture thinking, with the ability to build modules and drive engineering practices in complex systems.
- Strong communication and cooperation abilities, with the capability to work efficiently alongside architecture, research, and software product teams to promote optimization from concept to production.