# ROCm Bandwidth Test

## Introduction

ROCmBandwidthTest is designed to capture the performance characteristics of buffer
copying and kernel read/write operations. The help screen of the benchmark
shows various options one can use in initiating cop/read/writer operations.
In addition one can also query the topology of the system in terms of memory
pools and their agents

## Build Environment

To be able to build ROCmBandwidthTest, users must ensure that the build platform has
following conditions satisfied:

### Build Procedure

The following simply lists the steps to build ROCmBandwidthTest

--- Create a build directory in the project folder - `roc_bandwidth_test`.

```shell
mkdir ./build
```

--- Set working directory to be the new build directory

```shell
cd ./build
```

--- Invoke Cmake to interpret build rules and generate native build files
    The argument for cmake should be the root folder of ROCmBandwidthTest
    test suite

```shell
# Assume that ROCR Runtime has its libraries & headers are located in the path :
# libraries : _ABSOLUTE_PATH_TO_ROCR_LIBS_/lib
# headers   : _ABSOLUTE_PATH_TO_ROCR_LIBS_/include/hsa
# Note : Observe that both include & lib folder are under common path (_ABSOLUTE_PATH_TO_ROCR_LIBS_)

# Builds Debug version
# Assumes pwd is _ABSOLUTE_PATH_TO_RBT/roc_bandwidth_test/build

cmake -DCMAKE_BUILD_TYPE="Debug"   \
    -DCMAKE_MODULE_PATH="_ABSOLUTE_PATH_TO_RBT/rocm_bandwidth_test/cmake_modules"  \
    -DCMAKE_PREFIX_PATH="_ABSOLUTE_PATH_TO_ROCR_LIBS_"
    ..

# Builds Release version - default
# Assumes pwd is _ABSOLUTE_PATH_TO_RBT/roc_bandwidth_test/build
cmake -DCMAKE_MODULE_PATH="_ABSOLUTE_PATH_TO_RBT/rocm_bandwidth_test/cmake_modules"  \
    -DCMAKE_PREFIX_PATH="_ABSOLUTE_PATH_TO_ROCR_LIBS_"
    ..
```

--- Invoke the native build rules generated by cmake to build the various
    object, library and executable files

```shell
make
```

--- Invoke the install command to copy build artifacts to pre-defined folders
    of ROCmBandwidthTest suite. Upon completion artifacts will be copied to the
    bin and lib directories of build directory

```shell
make install
```

> All executables will be found in `<build_directory>/bin` folder
