View on GitHub

RTRBench

A Benchmark Suite for Real-Time Robotics

RTRBench

Real-Time Robotics Benchmark (RTRBench) is a collection of real-time robotic kernels. The kernels span the entire software pipeline of most autonomous robots (Listing of Benchmarks). RTRBench is published in ISPASS 2022 [Paper] [Slides] [Talk].

Table of Contents

  1. Getting Started
  2. More Details

Getting Started

The benchmark suite can be downloaded from GitHub using:

$ git clone https://github.com/cmu-roboarch/rtrbench.git

Requirements

The benchmark suite has been tested under Ubuntu 18.04 with Linux Kernel 4.15, and compiled with GCC 11.1.0. However, it can be used with a variety of other operating systems and compilers. As the benchmarks are coded with C++17, the minimum required GCC version is 8.0 (Clang: 5.0; Visual Studio: 15.8).

Build

Every kernel has its own Makefile. To build a kernel, issue the following command:

$ make

Run

To run every kernel, simply issue the following command:

$ ./BINARY_NAME ARGS [ARGS]

Some of the arguments are required (e.g., input map, etc), and some of them are optional. To see the description of the arguments, run the following command:

$ ./BINARY_NAME --help

More Details

Build Options

To build the kernel for the highest performance, use the following command. This way, the pieces of the code that are written for the purpose of verification will be omitted.

$ make performance

To build the kernels for debugging them, use the following command:

$ make debug

Use build.sh and clean.sh scripts to build and clean all of the kernels.

Run Scripts

Every kernel is equipped with run_all.sh script. The script runs the corresponding kernel with different execution/configuration parameters. Put your desired parameters into parameter arrays (started with ALL_), and issue the following command. The script will run different experiments, one per configuration.

$ ./run_all.sh

Inputsets

Every kernel is equipped with its own inputset. README.md files in the kernels’ directories describe how other inputsets can be used/generated for evaluation.