logo

Paper accepted: PPoPP'21

A paper by Ajay Singh, Trevor Brown and Ali Mashtizadeh was...

(2020-11-16)

New tutorial: histogram pitalls

An exploration of an insidious problem with histograms that can...

(2020-06-13)

Best paper award: PPoPP'20

A paper by Trevor Brown, Aleksandar Prokopec and Dan Alistarh...

(2020-02-26)

Research Program

Portrait of Trevor Brown

Led by Dr. Trevor Brown, the UW Multicore Lab tackles the question: how can large multicore systems be programmed easily, correctly and efficiently?

Multicore computing is rapidly becoming ubiquitous. Large systems with dozens or hundreds of processors are deployed by virtually all companies that provide Internet and cloud services. However, the "dark art" of multicore programming remains notoriously difficult. There is an immediate need for techniques to simplify this task, and to empower programmers to harness the full computational power of large scale systems with increasingly non-uniform memory architectures (NUMAs), and growing heterogeneity in computing resources.

At the UW multicore lab, our research focuses on the development of efficient methodologies, libraries and systems software for all computing scales, from single-socket systems with uniform memory architectures, to multi-socket NUMA systems, to geo-replicated distributed systems.

Active research areas include:
  • NUMA-aware data structures
  • NUMA-aware memory allocation
  • NUMA-aware memory reclamation
  • Lock-free synchronization
  • Distributed data structures (RDMA)
  • Non-volatile memory (3DXPoint/NVRAM)
  • Transactional memory (Software/Intel/POWER/ARM)
  • Automatic data structure parallelization
  • Automatic dynamic data partitioning

Lab Workflow

We work on large scale servers (192 / 144 / 8x32 threads) running Linux. Personal workstations run Ubuntu or Windows (up to preference). Version control for code and research papers is via Gitlab (with continuous integration). Lab project management and communication is done via MS Teams. Projects are implemented primarily in C/C++ (GCC, Clang, GDB), typically using VSCode, and optimized with Perftools (w/flamegraphs!), PAPI and/or VTune.

Sometimes students in the lab meet for a reading group, where we discuss a research paper on the topic of multicore programming. The group typically also includes students from several other labs.

We are committed to open-access, and to the integration of our research into the open source community, for the benefit of all. So, some of our effort is invested in understanding and integrating code into well-known open source projects.

We accommodates both solo- and highly-collaborative work styles, with opportunities to work alongside other students within the lab, and with students from several other labs.

Potential Students

Are you excited by the idea of computing on hundreds of cores?

Are you a hacker interested in becoming a master of systems backed by principled theory?

Are you a theoretical wizard who doesn't mind occasionally getting your hands dirty and working on real systems?

If any of this sounds like you, we want to hear from you! Send Trevor an email at trevor(.)brown(@)uwaterloo(.)ca. Include your CV and a short paragraph about why you'd like to join the UW Multicore Lab. For the time being, I am not anticipating accepting any new students (although I may make an exception for truly exceptional students).

University of Waterloo main gate
University of Waterloo campus
Interpolation search tree data structure
C++ and ASM snippets
VTune performance optimization
8-node Intel cluster