* Initial commit: Need to implement wrapper function to collect data and test that wrapper function is correctly replacing core HSA functions * Attempted to implement wrapper implementation for hsa memory allocation functions. Need to modify generate record files and test if implementation is working as expected * Debugging and implementing generateCSV function * Memory allocation size and starting address outputted to csv and json file formats * Formatting * Initial setup for OTF2 and Perfetto generation * Collecting agent id for memory_allocation and formatting * Modified memory_allocation.cpp to set up code for AMD_EXT commands * Support for memory_pool_allocate added * Removed accidently added file * Made flag optional and added more OTF2 and Perfetto code. Needs testing to ensure perfetto and OTF2 works * Formatting * Fixed perfetto and otf2 output * Fixed flag issue due to incorrect buffer use * Updated documentation * Small cleaning and comments * Added test for HSA memory allocation tracing * Fixed summary test validation errors due to allocation tracing. Added type to location_base to create unique event ids for allocation due to OTF2 trace error * Decreased lower limit of hip calls for test * Modified summary tests to vary number of allocate requests * Minor fixes to address comments. Still need to address OTF2 comments * Fix docs and changed OTF2 to use enum for type specified in location_base construction * Fixed schema error * Added vmem command tracking. Need to add test * Updated test to work with vmem command and updated generateCSV to output int instead of hex string. * OTF2 enum update and mispelling fix * CI does not support Virtual Memory API. Removed vmem test. Will add back if CI is modifed to suport vmem API * Update CMakeLists.txt for memory allocation test * Updated summary test * Minor fixes to address comments * Moved domain_type.hpp enum to before LAST * Fixed compile errors and formatting * Fixed stats summary domain name error * Added rocprofv3 test * Page migration test fix * Undo page migration test changes. Failures do not appear to have to do with memory allocation
ROCProfiler Tool Library
This is a tool that gets registered with the rocprofiler to obtain its services. The tool is built as a shared library and is named as rocprofiler-sdk-tool. The library can be preloaded using LD_PRELOAD to facilitate its registration as a tool with the rocprofiler.
The user through rocprofv3 script can select the options to obtain tracing and counter collection services from the rocprofiler.
Currently, this tool supports kernel trace and the hsa-api trace. The tool uses the following environment variables to read the user choices.
ROCPROF_KERNEL_TRACE=1to obtain kernel traceROCPROF_HSA_API_TRACE=1to obtain hsa api trace
The user can also specify the output filename and output file path to which the traces are written to.
ROCPROF_OUTPUT_PATH=<directory>to set the output directory pathROCPROF_OUTPUT_FILE_NAME=<filename-without-extension>to set the output file name
CHANGELOG
The tool design is similar to its earlier versions. However, not all features that the earlier versions supported are supported by this tool.