Book published!

The second edition of the book Shared Memory...



A paper by my students Daewoo Kim and Ajay Singh titled "Are...



A paper by my student Mohammad Khalaji, Professor Khuzaima...


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 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. However, I will make an exception for exceptional PhD 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