Zhijia Zhao/* zh sounds like j */
Computer Science and Engineering, UC Riverside
Before joining UCR in 2015, I received my Ph.D. in Computer Science from the College of William and Mary under the supervision of Prof. Xipeng Shen, and worked at Mozilla Corporation (Summer 2012), North Carolina State University (2014-2015), and Pacific Northwest National Lab (Summer 2015). I am a recipient of NSF CAREER Award (2018), Regents Faculty Fellowship (2018), Hellman Fellowship (2018), and Best Paper Runner-up Award at MobiSys'18. More details are in my C.V.. [I am recruiting Ph.D. students, please email me if you are interested.]
- Programming system support for parallelism, with a focus on automata, graph, and tree-based computations; Program analysis and software reliability.
Semi-structured data, like JSON and its variations, is the de facto standard for information exchange on the web and the basis for modern NoSQL document stores (e.g., MongoDB and Firebase). With nested structures, it is difficult to process it in a scalable way. We address this by leveraging the automata theory and parallelization techniques to automatically generate data-parallel code with small memory footprint.
Real-world graphs for data analytics tend to be large and irregular by nature. These properties make them difficult to take advantages of modern parallel architectures like GPUs, which are mainly designed for regular computations with relatively limited memory capacity. We address these challenges with novel graph transformations that can ``regularize'' the computations and minimize the data transferring between device and host memory.
FSM is a fundamental computation model with a variety of performance-critical applications (e.g., pattern matching and decoding). However, the model executes in serial by design – the current transition depends on the prior state. In a series of works, we ``break'' the state dependencies with disciplined speculation (ASPLOS'14), modeled by lightweight online profiling (ASPLOS'15). In addition, we expand the speculation to SIMD level (PACT'16) and bring the scalability sensitivity into the speculation for many-core processors (ICS'17).
Mobile systems (e.g., Android) expose changes on the device configuration (e.g., orientation, screen size, or keyboard availability) to the apps at runtime to enable rich user experiences. When handled inappropriately, these changes can cause unresponsiveness, state loss, or even app crash. In this work, we reveal a common cause to various runtime change issues – activity restarting, and design a restarting-free runtime change handling solution – RuntimeDroid, which successfully addressed 197/197 runtime change issues reported on Github.