layout: post title: “gem5-21.1 Roadmap” author: Jason Lowe-Power date: 2021-04-25 categories: project

Early on in each release, we like to provide the community with a roadmap of what is being developed for the next gem5 release. This is a community-based document, and it is a summary of what different developers are currently work on. If you have something that you‘re working on that you are planning to contribute before the gem5-21.1 release, we’d love to include it here!

To contribute to the roadmap you can following the steps below:

  1. Create a issue or an epic on our issue tracker. If the contribution is large with many different individual contributions, it would be best to create an epic to group all of the separate issues together.
  2. Mark the issue as “Fix version 21.1” and assign yourself as the “Assignee”.
  3. Update this roadmap document by downloading the website source and creating a changeset on gerrit.

Roadmap for 21.1

We‘re planning to release gem5-21.1 during July (about 4 months after the gem5-21.0 release). Below are the main features we’re currently planning on including in 21.1.

gem5 component library

Wouldn't it be cool if using gem5 was like walking into Microcenter and choosing components? The goal of this project is to make this happen!

We will create a library of components and “known-good” configurations. With the components, you can choose components like different cache systems (e.g., private L1, shared L2), different CPUs, and different RAMs to plug into a “board” to create a system.

Alternatively, you can choose to use one of our prebuilt systems as a baseline. These prebuilt systems will be benchmarked/tested and the data will be publically available on the gem5-resources webpage:

For the components, the goal is that they are always composable. In other words, any memory can be connected to any cache system which can be connected to any CPU. And, hopefully, this will work for any ISA, etc.

We're working on the details now and will have a proposal on gerrit in the next few weeks. If you have feedback feel free to let us know on gem5-dev mailing list, the Jira issue, or the gerrit changesets when they are posted.

Continue improving python-based stats

In [gem5-21.0]({% post_url 2021-3-19-gem5-21-0 %}), we implemented a python-based API for accessing stats. However, this was not enabled by default. In 21.1, we are expecting this API to be improved and more features added. Let us know what you would like to see from a new stats interface in the Jira issue or on the mailing list!

SST integration

We have been working to revamp the gem5-SST integration for a couple of releases now. We started by creating a documented stable API, which still has a few unresolved issues. We expect that by 21.1 we will have a proof-of-concept where gem5 can be used as a component in SST.

Upstreaming power-gem5

POWER support in gem5 has languished over the years. However, there has been significant effort in a fork of gem5 to update to the latest POWER features and improve the support.

There are currently many changes on gerrit: E.g., working to merge these two. We would appreciate reviews and feedback on these changes especially if POWER support is important to you!

GPU updates

Full system GPU

Currently, gem5 also only supports GPU runs in SE mode, not FS mode. As part of the next release, we plan on releasing FS mode support for gem5 GPU models.

Supporting new runtimes and GPUs

Currently gem5's SE mode GPU support is for ROCm 1.6 and Carrizo-class GPUs, which is fairly old now. To help address this, we are planning on releasing support for ROCm 4.0 in the next version of gem5. Moreover, we will also include support for Vega-class GPUs, which are more modern.

Other things we're working on

Below are some other things that we have either started to work on or would like to do, but are either smaller or on the back burner. If anyone is interested in contributing, picking up one of these issues could be a great way!