rocprofv3 OTF2 Output Support (#995)
* CMake support for OTF2 library
* Preliminary OTF2 generation implementation
* Completed OTF2 Support
- HSA API
- HIP API
- Marker API
- Async Memory Copies
- Kernel Dispatch
* Update lib/rocprofiler-sdk-tool/generateOTF2.cpp
- fix location type for dispatches
* Testing for OTF2 output
* Add OTF2 to requirements.txt
* Update lib/rocprofiler-sdk-tool/generateOTF2.cpp
- fix getting kernel name
* OTF2 testing with rocprofv3/tracing-hip-in-libraries
* Format external/otf2/CMakeLists.txt
* Update external/otf2/CMakeLists.txt
- guard CMP0135 for cmake < 3.24
* Update lib/rocprofiler-sdk-tool/generateOTF2.cpp
- fix duplicate string ref issue
* Update lib/rocprofiler-sdk-tool/generateOTF2.cpp
- fix header includes
* Update CI workflow
- sudo install pypi requirements for core-rpm for $HOME/.local installs
* Update pytest_utils/otf2_reader.py
- modifications for reading trace
* Update pytest_utils/otf2_reader.py
- misc cleanup
* Update CI workflow
- fix installer artifact naming
* Update pytest_utils/otf2_reader.py
- handle slightly overlapping kernel timestamps for MI300
* OTF2 attributes for category
* Testing with OTF2Reader category attributes
* Fix memory leak in OTF2 generation
- leaking OTF2_AttributeList
[ROCm/rocprofiler-sdk commit: 16d535ef48]
This commit is contained in:
committed by
GitHub
parent
21e22a07e8
commit
ef22b7a484
@@ -33,18 +33,11 @@ namespace tool
|
||||
{
|
||||
namespace fs = common::filesystem;
|
||||
|
||||
std::pair<std::ostream*, output_stream_dtor_t>
|
||||
get_output_stream(std::string_view fname, std::string_view ext)
|
||||
std::string
|
||||
get_output_filename(std::string_view fname, std::string_view ext)
|
||||
{
|
||||
auto cfg_output_path = tool::format(tool::get_config().output_path);
|
||||
|
||||
if(cfg_output_path == "stdout" || cfg_output_path == "STDOUT")
|
||||
return {&std::cout, [](auto*&) {}};
|
||||
else if(cfg_output_path == "stderr" || cfg_output_path == "STDERR")
|
||||
return {&std::cout, [](auto*&) {}};
|
||||
else if(cfg_output_path.empty())
|
||||
return {&std::clog, [](auto*&) {}};
|
||||
|
||||
// add a period to provided file extension if necessary
|
||||
constexpr auto period = std::string_view{"."};
|
||||
constexpr auto noperiod = std::string_view{};
|
||||
@@ -60,10 +53,22 @@ get_output_stream(std::string_view fname, std::string_view ext)
|
||||
output_path.string())};
|
||||
if(!fs::exists(output_path)) fs::create_directories(output_path);
|
||||
|
||||
auto output_file =
|
||||
tool::format(output_path / fmt::format("{}_{}{}", output_prefix, fname, _ext));
|
||||
return tool::format(output_path / fmt::format("{}_{}{}", output_prefix, fname, _ext));
|
||||
}
|
||||
std::pair<std::ostream*, output_stream_dtor_t>
|
||||
get_output_stream(std::string_view fname, std::string_view ext)
|
||||
{
|
||||
auto cfg_output_path = tool::format(tool::get_config().output_path);
|
||||
|
||||
auto* _ofs = new std::ofstream{output_file};
|
||||
if(cfg_output_path == "stdout" || cfg_output_path == "STDOUT")
|
||||
return {&std::cout, [](auto*&) {}};
|
||||
else if(cfg_output_path == "stderr" || cfg_output_path == "STDERR")
|
||||
return {&std::cout, [](auto*&) {}};
|
||||
else if(cfg_output_path.empty())
|
||||
return {&std::clog, [](auto*&) {}};
|
||||
|
||||
auto output_file = get_output_filename(fname, ext);
|
||||
auto* _ofs = new std::ofstream{output_file};
|
||||
|
||||
LOG_IF(FATAL, !_ofs && !*_ofs) << fmt::format("Failed to open {} for output", output_file);
|
||||
ROCP_ERROR << "Opened result file: " << output_file;
|
||||
|
||||
Reference in New Issue
Block a user