Srinidhi Nagendra

MTS @ AMD Research

[email protected]

Note: I'm currently looking for interns. If you're interested in working on processor performance modeling and program synthesis, feel free to reach out!

I am a Researcher at AMD Research, working on modeling and improving performance of AMD high performance CPUs. Prior to AMD, I was a Postdoctoral Researcher at MPI-SWS (working with Rupak Majumdar) where I helped build JMC, a model checker for Java programs based on Dynamic Partial Order Reduction techniques.

I completed my PhD (Joint between CMI and IRIF) in 2024, supervised by Constantin Enea and Mandayam Srivas. During my PhD, I was a summer Applied Science Intern at AWS (June-August 2024). I completed my Masters in Computer Science at Chennai Mathematical Institute in 2020. I've worked as a software developer at Zoho and Bookmyshow, and as a DevOps engineer at Unacademy.

Publications

(Authors are ordered alphabetically in the surname)

Optimal Concolic Dynamic Partial Order Reduction

Mohammad Hossein Khoshechin Jorshari, Michalis Kokologiannakis, Rupak Majumdar, Srinidhi Nagendra

CONCUR 2025

Automated Testing of Distributed Protocol Implementations

Srinidhi Nagendra

PhD Thesis

Model-guided Fuzzing of Distributed Systems

Ege Berkay Gulcan, Burcu Kulahcioglu Ozkan, Rupak Majumdar, Srinidhi Nagendra

OOPSLA 2025 arXiv

Reward Augmentation in Reinforcement Learning for Testing Distributed Systems

Andrea Borgarelli, Constantin Enea, Rupak Majumdar, Srinidhi Nagendra

OOPSLA 2024 arXiv

A Domain Specific Language for Testing Distributed Protocol Implementations

Cezara Dragoi, Constantin Enea, Srinidhi Nagendra, Mandayam Srivas

NETYS 2024 arXiv

Tools

mpi-sws-rse/jmc

Java model checker based on Dynamic Partial Order Reduction techniques. Also includes Randomized testing strategies.

zeu5/modelfuzz

A randomized fuzzer for distributed protocol implementations that uses TLA+ model for coverage.

netrixframework/netrix

A DSL to describe unit tests for distributed protocol implementations. The framework allows developers to encode specific executions to test the implementation.

zeu5/gocov

A Go library to fetch coverage information of the current running program. Large parts are borrowed from the go runtime source that dumps the coverage information.

zeu5/dist-rl-testing

A general framework to run reinforcement learning based exploration on distributed protocol implementations.