[SWDEV-418917] reported that timing skew was being introduced by
roctracer. Most of the cause of this problem seems to stem from outrunning
the double buffering scheme that we use in memory_pool (part of the
reason for this outrun is due to File writing being slow). A semi-quick
fix that may be able to last until RocProf v2 is complete is to allow
adjustment of the buffer size. ROCTRACER_BUFFER_SIZE env variable was
introduced here which allows setting the buffer size of tracer tool.
By increasing the buffer size, an ~8% reduction in execution time when timing
on the program side. This should also reduce the frequency of large delays
when we outrun the buffer. Note: increasing this size dramatically can cause
slow startups (i.e. above 50MB).
Change-Id: I98c4316cfe93a043623ae2669cfe1a5abb55c990
[ROCm/roctracer commit: 38ba63030d]
ROC-tracer
-
ROC-tracer library: Runtimes Generic Callback/Activity APIs
The goal of the implementation is to provide a generic independent from specific runtime profiler to trace API and asynchronous activity.
The API provides functionality for registering the runtimes API callbacks and asynchronous activity records pool support.
-
ROC-TX library: Code Annotation Events API
Includes API for:
roctxMarkroctxRangePushroctxRangePop
Usage
rocTracer API
To use the rocTracer API you need the API header and to link your application with roctracer .so library:
-
/opt/rocm/include/roctracer/roctracer.hAPI header.
-
/opt/rocm/lib/libroctracer64.so.so library.
rocTX API
To use the rocTX API you need the API header and to link your application with roctx .so library:
-
/opt/rocm/roctracer/include/roctx.hAPI header.
-
/opt/rocm/lib/libroctx64.so.so library.
Library source tree
-
docDocumentation.
-
incInclude header files.
-
roctracer.hrocTacerlibrary public API header. -
roctx.hrocTXlibrary public API header.
-
-
srcLibrary sources.
-
corerocTracerlibrary API sources. -
roctxrocTXlibrary API sources. -
utilLibrary utils sources.
-
-
testTest suit.
-
MatrixTransposeTest based on HIP MatrixTranspose sample.
-
Documentation
- API description:
- Code examples:
Build and run tests
-
ROCm is required
-
Packages required:
- For Ubuntu 18.04 and Ubuntu 20.04 the following adds the needed packages:
apt install python3 python3-pip gcc g++ libatomic1 make \ cmake doxygen graphviz texlive-full- For CentOS 8.1 and RHEL 8.1 the following adds the needed packages:
yum install -y python3 python3-pip gcc gcc-g++ make \ cmake libatomic doxygen graphviz texlive \ texlive-xtab texlive-multirow texlive-sectsty \ texlive-tocloft texlive-tabu texlive-adjustbox- For SLES 15 Service Pack 15 the following adds the needed packages:
zypper in python3 python3-pip gcc gcc-g++ make \ cmake libatomic doxygen graphviz \ texlive-scheme-medium texlive-hanging texlive-stackengine \ texlive-tocloft texlive-etoc texlive-tabu -
Python modules requirements:
CppHeaderParser,argparse.To install:
pip3 install CppHeaderParser argparse -
Clone development branch of
roctracer:git clone -b amd-master https://github.com/ROCm-Developer-Tools/roctracer -
To build
roctracerlibrary:cd <your path>/roctracer ./build.sh -
To build and run test:
cd <your path>/roctracer/build make mytest run.sh
Installation
Install by:
make install
or:
make package && dpkg -i *.deb