logo

Second highest rated SPTDC talk

The results of attendee evaluations are in! Trevor's invited lecture...

(2019-07-29)

Rift: new 8-node Intel cluster

We just received word today that our lab has been allocated an...

(2019-07-23)

Zyra: new high-end experimental...

Our new 144 thread server, Zyra, has arrived at the University, and is...

(2019-07-18)

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 Windows 10 or Ubuntu (up to preference). Version control for code and research papers is via Gitlab (with continuous integration). Lab project management and communication is done via Trello and Slack. Projects are implemented primarily in C/C++ (GCC, Clang, GDB), typically using Netbeans/CLion (up to preference), and optimized with VTune/Perftools/PAPI.

Every week, 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.

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