3c9a066579
Signed-off-by: Karl W. Schulz <karl.schulz@amd.com>
171 строка
5.2 KiB
Markdown
171 строка
5.2 KiB
Markdown
# Omniperf Deployment
|
|
|
|
```eval_rst
|
|
.. toctree::
|
|
:glob:
|
|
:maxdepth: 4
|
|
```
|
|
|
|
Omniperf is broken into two installation components:
|
|
|
|
1. **Omniperf Client-side (_Required_)**
|
|
- Provides core application profiling capability
|
|
- Allows collection of performance counters, filtering by IP block, dispatch, kernel, etc
|
|
- CLI based analysis mode
|
|
- Stand alone web interface for importing analysis metrics
|
|
2. **Omniperf Server-side (_Optional_)**
|
|
- Mongo DB backend + Grafana instance
|
|
|
|
---
|
|
|
|
## Client-side Installation
|
|
|
|
Omniperf requires the following basic software dependencies prior to usage:
|
|
|
|
* Python (>=3.7)
|
|
* CMake (>= 3.19)
|
|
* ROCm (>= 5.1)
|
|
|
|
In addition, Omniperf leverages a number of Python packages that are
|
|
documented in the top-level `requirements.txt` file. These must be
|
|
installed prior to Omniperf configuration.
|
|
|
|
The recommended procedure for Omniperf usage is to install into a shared file system so that multiple users can access the final installation. The following steps illustrate how to install the necessary python dependencies using [pip](https://packaging.python.org/en/latest/) and Omniperf into a shared location controlled by the `INSTALL_DIR` environment variable.
|
|
|
|
```{admonition} Configuration variables
|
|
The following installation example leverages several
|
|
[CMake](https://cmake.org/cmake/help/latest/) project variables
|
|
defined as follows:
|
|
| Variable | Description |
|
|
| -------------------- | -------------------------------------------------------------------- |
|
|
| CMAKE_INSTALL_PREFIX | controls install path for Omniperf files |
|
|
| PYTHON_DEPS | provides optional path to resolve Python package dependencies |
|
|
| MOD_INSTALL_PATH | provides optional path for separate Omniperf modulefile installation |
|
|
|
|
```
|
|
|
|
A typical install will begin by downloading the latest release tarball
|
|
available from the
|
|
[Releases](https://github.com/AMDResearch/omniperf/releases) section
|
|
of the Omniperf development site. From there, untar and descend into
|
|
the top-level directory as follows:
|
|
|
|
```shell
|
|
$ tar xfz omniperf-v{__VERSION__}.tar.gz
|
|
$ cd omniperf-v{__VERSION__}
|
|
```
|
|
|
|
Next, install Python dependencies and complete the Omniperf configuration/install process as follows:
|
|
|
|
```shell
|
|
# define top-level install path
|
|
$ export INSTALL_DIR=<your-top-level-desired-install-path>
|
|
|
|
# install python deps
|
|
$ python3 -m pip install -t ${INSTALL_DIR}/python-libs -r requirements.txt
|
|
|
|
# configure Omniperf for shared install
|
|
$ mkdir build
|
|
$ cd build
|
|
$ cmake -DCMAKE_INSTALL_PREFIX=${INSTALL_DIR}/{__VERSION__} \
|
|
-DPYTHON_DEPS=${INSTALL_DIR}/python-libs \
|
|
-DMOD_INSTALL_PATH=${INSTALL_DIR}/modulefiles ..
|
|
|
|
# install
|
|
$ make install
|
|
```
|
|
|
|
```{tip}
|
|
You may require `sudo` during the final install step if you
|
|
do not have write access to the chose install path.
|
|
```
|
|
|
|
|
|
After completing these steps, a successful top-level installation directory looks as follows:
|
|
```shell
|
|
$ ls $INSTALL_DIR
|
|
modulefiles {__VERSION__} python-libs
|
|
```
|
|
|
|
### Execution using modulefiles
|
|
|
|
The installation process includes creation of an environment
|
|
modulefile for use with [Lmod](https://lmod.readthedocs.io). On
|
|
systems that support Lmod, a user can register the Omniperf modulefile
|
|
directory and setup their environment for execution of Omniperf as
|
|
follows:
|
|
|
|
|
|
|
|
```shell
|
|
$ module use $INSTALL_DIR/modulefiles
|
|
$ module load omniperf
|
|
$ which omniperf
|
|
/opt/apps/omniperf/{__VERSION__}/bin/omniperf
|
|
|
|
$ omniperf --version
|
|
ROC Profiler: /opt/rocm-5.1.0/bin/rocprof
|
|
|
|
omniperf (v{__VERSION__})
|
|
```
|
|
|
|
```{tip} Sites relying on an Lmod Python module locally may wish to
|
|
customize the resulting Omniperf modulefile post-installation to
|
|
include additional module dependencies.
|
|
```
|
|
|
|
### Execution without modulefiles
|
|
|
|
To use Omniperf without the companion modulefile, update your `PATH`
|
|
settings to enable access to the command-line binary. If you installed Python
|
|
dependencies in a shared location, update your `PYTHONPATH` config as well:
|
|
|
|
```shell
|
|
export PATH=$INSTALL_DIR/{__VERSION__}/bin:$PATH
|
|
export PYTHONPATH=$INSTALL_DIR/python-libs
|
|
```
|
|
|
|
### rocProf
|
|
|
|
Omniperf relies on a rocprof binary during the profiling
|
|
process. Normally the path to this binary will be detected
|
|
automatically, but it can also be overridden via the use of an
|
|
optional `ROCPROF` environment variable.
|
|
|
|
|
|
|
|
|
|
|
|
%%% ### Generate Packaging
|
|
%%% ```console
|
|
%%% cd build
|
|
%%% cpack -G STGZ
|
|
%%% cpack -G DEB -D CPACK_PACKAGING_INSTALL_PREFIX=/opt/omniperf
|
|
%%% cpack -G RPM -D CPACK_PACKAGING_INSTALL_PREFIX=/opt/omniperf
|
|
%%% ```
|
|
|
|
---
|
|
|
|
## Omniperf Server Setup
|
|
|
|
Note: Server-side setup is not required to profile or analyze
|
|
performance data from the CLI. It is provided as an additional mechanism to import performance
|
|
data for examination within a detailed [Grafana GUI](https://github.com/grafana/grafana).
|
|
|
|
The recommended process for enabling the server-side of Omniperf is to
|
|
use the provided Docker file to build the Grafana and MongoDB
|
|
instance.
|
|
|
|
### Persist Storage
|
|
```bash
|
|
$ sudo mkdir -p /usr/local/persist && cd /usr/local/persist/
|
|
$ sudo mkdir -p grafana-storage mongodb
|
|
$ sudo mkdir -p grafana-storage mongodb
|
|
```
|
|
|
|
### Build and Launch
|
|
```bash
|
|
$ sudo docker-compose build
|
|
$ sudo docker-compose up
|
|
```
|