Happy Guitarist!

I am a Computer Science Ph.D. student at UC Davis. My advisor is Prof. John Owens. My main research interests are 1) structure of parallelism and locality in irregular algorithms such as graph algorithms on GPU; 2) exascale computing and data analysis using Multi-GPUs. I also have broad interests on all kinds of GPU computing topics as well as computer graphics topics. My current project on GPU graph algorithms is funded by DARPA's XDATA grant. In 2012, I did my summer internship at AMD Research on OpenCL rasterizer.

Before coming to UC Davis, I received my B.E. degree in Computer Science and M.E. degree in Software Engineering both from Beijing University of Aeronautics and Astronautics. During my Master years, I worked on several projects on water simulation, collision detection, and distributed rendering system.



Gunrock Gunrock is a CUDA library for graph primitives that refactors, integrates, and generalizes best-of-class GPU implementations of breadth-first search, connected components, and betweenness centrality into a unified code base useful for future development of high-performance GPU graph primitives. An early technique report can be found here. The library is on github.


CUDA Depixelizer A depixelization algorithm on GPU to vectorize a pixel art into a vector graph based on this paper. Source code can be found on github.

Selected Courses[^]


ECE277: Graphics Architecture Topics cover GPU computing and programming systems for graphics hardware. I had fun hacking some of the details about graphics performance and floating point operation precision.


ECS224: String Algorithms The class focuses on the algorithmic efficiency and combinatorial structure of string algorithms, perticularly based on suffix arrays and trees, algorithms and combinatorial structure for phylogenetic networks and algorithms to deduce phylogenetic networks involving recombination as well as mutation. For the course project I implemented the skew algorithm for linear suffix array construction on GPU.


ECS243: Compiler Optimization Topics cover techniques used in intermedia code analysis and compiler optimization such as: control-flow analysis, live-range analysis, register interference graph construction and register allocation and assignment. The course project is a python register allocator used for MIPS assembly code generated by gcc without any optimization flag turned on. The source code can be downloaded here.


ECS277: Advanced Visualization The course is focused on broad visualization applications and the algorithms behind them such as raycasting, scattered data interpolation and voronoi graph. For the course project I implemented a D3D volume renderer, a scattered data visualizer and a 2D voronoi graph constructor.


CS348b: Image Synthesis I took this Stanford course online. The course covers a broad overview of the theory and practice of rendering. I implemented the core of a motion-blur reyes renderer, a camera model inside PBRT and an auto-focus algorithm along the way.

Other courses I took include: ECS231: Large Scale Scientific Computing (final_report), ECS251: Operating System, ECS223: Parallel Algorithms, ECS222A: Algorithm Analysis, and ECS289K: Computational Methods in Systems and Synthetic Biology.


I keep a blog (mostly written in Chinese) here and I put some of my photos here. I play the guitar and make music using audiotool. Sometimes I use (fluxus) for live coding.

Scientists discover the world that exists, engineers create the world that never was. -Tom Knight