Learning gem5 Tutorial and Coding Sprint

We will be hosting a Learning gem5 tutorial at HPCA 17 in Austin, TX. This tutorial will consist of two parts. In the morning, we will cover an introduction to gem5. Namely, I will be giving a series of lectures following the Learning gem5 book.

In the afternoon, we will have a gem5 coding sprint. You can find more information about coding sprints on Wikipedia. We are planning on pairing junior developers, including those who attend the morning Learning gem5 tutorial, with more senior developers and squashing some gem5 bugs or adding small new features. We will have a list of small gem5 projects that can be knocked out in an afternoon. Hopefully, through this sprint, we will be able to expand the developers of gem5.

This page is under development. It will be updated often leading up to the day of the tutorial. Hope to see you there!

Preparing for the tutorial

To get the most out of this tutorial, you are encouraged to bring a laptop to work along. This will be an interactive tutorial, with many coding examples. Additionally, by bringing a laptop, you will be able to easily participate in the afternoon coding sprint.

While this tutorial is appropriate for you even if you've never used gem5 before, you'll get more out of it if you familiarize yourself with gem5 before coming. Specifically, by downloading gem5 and making sure it builds on your system you will save yourself a lot of time. Reading and completing the first chapter from the the Learning gem5 book before coming to the tutorial is strongly encouraged.

About this tutorial

gem5 is used by an incredible number of architecture researchers. The gem5 paper was cited by more than 800 papers last year (2015) alone according to Google Scholar. However, gem5 is a unique software infrastructure; as a user, you also have to be a developer. Currently, there are few resources for young computer architects to learn how to productively use gem5. Building off of a book, Learning gem5, this tutorial will introduce junior architecture students to the inner workings of gem5 so they can be more productive in their future research. The goal of the "tutorial" section of this tutorial is not to introduce attendees to every feature of gem5, but to give them a framework to succeed when using gem5 in their future research.

After spending the morning learning about how gem5 works, the afternoon will be a hands-on "code sprint". Members of the gem5 development community will introduce new gem5 contributors to the code submission and review process. We will spend the afternoon in small groups squashing simple bugs in gem5. This exercise will both help junior architects be more productive in their future work and improve gem5 at the same time.

Audience

The primary audience is junior computer architecture researchers (e.g., first or second year graduate students) who are planning on using gem5 for future architecture research. We also invite others who want a high-level idea of how gem5 works and its applicability to architecture research.

For the afternoon coding sprint, we invite all gem5 developers to participate. The more participation we have from experienced developers, the more we can get done!

Schedule

More details to come soon.

Morning Schedule: Learning gem5

  • 8:30 — What is gem5 and history
  • 8:40 — Getting started with gem5
    • Overall (software) architecture of gem5
    • Compiling gem5
    • Simple introduction script
    • First time running gem5
    • Interpreting gem5's output
    • Simple assembly example to show debug trace of everything
  • 9:15 — Extending gem5
    • Structure of C++ code
    • Writing a simple SimObject
  • BREAK 10:00 — 10:30
    • 10:30 — Discrete event simulation programming
    • SimObject parameters
    • 10:50 — gem5 memory system
  • 11:40 — Quick overview of other gem5 topics
    • Overview of full system simulation
    • Overview of Ruby
    • Briefly gem5's other features
    • gem5 limitations

12:00 — 1:30 Lunch (Will be provided!)

Afternoon Schedule: gem5 Coding Sprint

  • Developing and contributing to gem5 — Andreas Sandberg [~30 minutes]

    Andreas will describe the process of writing code and contributing changes to mainline gem5. He will go over the code submission and code review process. This will cover gem5's new submission and code review process using Gerrit!

  • Split into small groups to work on code! You can find some initial ideas for small, medium, and large coding ideas on the gem5 wiki.
  • Closing statements, recap, and feedback.