UC Riverside Parallel Algorithm Lab
Welcome to UCR PAL!
We are a group of people at UCR working on parallel algorithms, data structures, systems and applications. We design parallel algorithms that have strong theoretical guarantee and high performance.
We are actively recruiting self-motivated Ph.D. students. You can find more details here.
If you are UCR students interested in parallelism and/or algorithms, here are the courses we teach.
[Our Publications By Year] [Our Publications By Topic] [Overview of Our Projects]
[Information for Prospective Students]
Parallel and Concurrent Data Structures
We work on algorithms for parallel/concurrent data structures. Our work involves (but is not limited to) parallel search trees for collection data types (sequences, sets, maps, augmented maps), geometric data structures (range trees, segment trees, interval trees, priority search trees, k-d trees, oct/quad trees, BVH, etc), data structures with compression, current data structures, data structures for databases and data science, and other specific data structures including parallel winning trees, heaps, hash tables/hash bags, cover trees, etc.
Sequential and Parallel Graph Algorithms
We work on graph algorithms, both sequentially and in parallel. Our work includes (but not limited to) SSSP algorithms, connectivity, bi-connectivity, strong connectivity algorithms, graph streaming, LE-lists, graph/tree embedding, geometric graphs, biology graph matching, social graph mining, etc.
Algorithms for Computational Geometry
We work on algorithms for computational geometry, most of them parallel. Our work includes (but is not limited to) geometry data structures (e.g., range trees, segment trees, kd-trees, priority search trees), convex hull algorithms, Delaunay Triangulation algorithms, computer graphics, nearest neighbor search, low-dimensional range-based search, etc.
Database and Data Management
We work on algorithms for database and data management. Our work includes (but is not limited to) efficient indexes for in-memory databases, social network mining, clustering, nearest neighbor search, HTAP database systems, etc.
Algorithms for Special Architecture
We work on architecture-friendly algorithms. Our work includes (but is not limited to) write-efficient algorithms for NVRAMs, fault-tolerant algorithms for NVRAMs, space-efficient algorithms for in-memory processing, algorithms for near-data-processing (i.e., processing-in-memory, PIM), etc.
Parallelizing Sequential Iterative Algorithms
We work on efficiently parallelizing sequential iterative algorithms. The goal is to design simple and intuitive algorithms based on their sequential versions, and achieve work-efficiency and high parallelism. Our work includes (but is not limited to) parallel permutaion, list/tree contraction, LIS, Huffman tree, SSSP, MIS, parallel randomized incremental algorithms for convex hull, Delaunay triangulation, 2D LP, closest pair, SCC, LE-list, etc.