[rocprofv3] SQLite3 database output (rocpd) support + rocprofiler-sdk-rocpd (#403)
* [rocprofv3] rocpd SQLite3 database output support
* Move counters xml and yaml to source/share/rocprofiler-sdk
- more representative of install hierarchy
* Add share/rocprofiler-sdk/rocpd SQL files
* Experimental rocprofiler-sdk SQL API
* rocprofv3 default output format is rocpd
* Fix rocpd event ids for counter collection w/o kernel dispatch
* Remove fktable entries from rocpd_tables.sql
* Fix rocpd schema path
* Fix install component for roctx python bindings
* rocprofiler-sdk-rocpd
- create include/rocprofiler-sdk-rocpd
- create rocprofiler-sdk-rocpd library, package, etc.
- default all "guid" fields to "{{guid}}" in tables
- remove "{{view_uuid}}" support (always unused)
* Migrate rocprofv3 to use rocprofiler-sdk-rocpd
* Fix missing foreign key reference
* Revert change
* Fix cmake comment
* Fix maybe-uninitialized compiler warning
* Fix maybe-uninitialized compiler warning
* Add logging to rocpd_sql_load_schema
* Improve string sanitization when inserting json strings
* Initialize rocpd logging on rocprofiler-sdk-rocpd library load
* Revert lib/output/generatePerfetto.cpp changes
* [temporary] Tweak rocprofv3-test-list-avail-trace-execute test log level
* Update get_install_path for lib/rocprofiler-sdk-rocpd/sql.cpp
- try to resolve issues on RHEL/SLES for dladdr
* Update lib/common/logging.cpp
- enable environ overrides
* dlsym for rocpd_sql_load_schema
* Make dl_info.dli_fname lexically normal
* Implement node_info alternatives if /etc/machine-id does not exist
* Misc include fixes
* SHA256 and UUIDv7 support
* Implement UUIDv7 in generateRocpd.cpp
* Support push/pop environment variables
* Minor tweak
* Fix glog segfaults when unsetting glog env
* Updated CHANGELOG
* Updates tests/pytest-packages
- rocpd_reader.py: RocpdReader
* Update tests / marker_views.sql
- add test_rocpd_data
* Update rocpd_tables.sql
- Use AUTOINCREMENT
- insert "uuid" and "guid" into rocpd_metadata
* Minor updates to generateRocpd.cpp
- don't quote GUID
- use sqlite3_open_v2
- use sqlite3_close_v2
* Update execute_raw_sql_statements_impl
- uses sqlite3_last_insert_rowid for autoincrement
* Update SQL deferred_transaction
- CI check for nullptr to connection
* Apply suggestions from code review
Co-authored-by: Welton, Benjamin <Benjamin.Welton@amd.com>
* Code review updates
- formatting
- replace if with switch
- remove loop for {{uuid}}
* Fix pmc_groups handling in rocprofv3
* Address code review feedback
- Include rocm_version in rocprofv3 version info
- Note `--version` option for `rocprofv3` in CHANGELOG.md
- remove commented out code
* Fix packaging dependencies
* Fix install package step of CI workflow
* Fix install package step of CI workflow
---------
Co-authored-by: Jonathan R. Madsen <jonathanrmadsen@gmail.com>
Co-authored-by: Welton, Benjamin <Benjamin.Welton@amd.com>
[ROCm/rocprofiler-sdk commit: 7afedc63be]
This commit is contained in:
@@ -425,6 +425,25 @@ metadata::get_counter_dimension_info() const
|
||||
return _ret;
|
||||
}
|
||||
|
||||
metadata::string_index_map_t
|
||||
metadata::get_string_entries() const
|
||||
{
|
||||
return string_entries.rlock([](const auto& _inp) {
|
||||
auto _sorted = std::vector<std::string_view>{};
|
||||
_sorted.reserve(_inp.size());
|
||||
for(const auto& itr : _inp)
|
||||
_sorted.emplace_back(std::string_view{*itr.second});
|
||||
std::sort(_sorted.begin(), _sorted.end());
|
||||
|
||||
auto _ret = string_index_map_t{};
|
||||
size_t _idx = 1;
|
||||
for(const auto& itr : _sorted)
|
||||
_ret.emplace(itr, _idx++);
|
||||
|
||||
return _ret;
|
||||
});
|
||||
}
|
||||
|
||||
bool
|
||||
metadata::add_marker_message(uint64_t corr_id, std::string&& msg)
|
||||
{
|
||||
@@ -607,17 +626,12 @@ metadata::get_agent_index(rocprofiler_agent_id_t id, agent_indexing index) const
|
||||
return "UNK";
|
||||
};
|
||||
|
||||
switch(index)
|
||||
{
|
||||
case agent_indexing::node: return agent_index{"Agent", _agent->node_id, get_type()};
|
||||
case agent_indexing::logical_node_type:
|
||||
return agent_index{
|
||||
get_type(), static_cast<uint32_t>(_agent->logical_node_type_id), get_type()};
|
||||
|
||||
case agent_indexing::logical_node:
|
||||
default:
|
||||
return agent_index{"Agent", static_cast<uint32_t>(_agent->logical_node_id), get_type()};
|
||||
}
|
||||
return create_agent_index(
|
||||
index,
|
||||
_agent->node_id, // absolute index
|
||||
static_cast<uint32_t>(_agent->logical_node_id), // relative index
|
||||
static_cast<uint32_t>(_agent->logical_node_type_id), // type-relative index
|
||||
get_type());
|
||||
}
|
||||
|
||||
const std::string*
|
||||
@@ -691,5 +705,32 @@ metadata::decode_instruction(rocprofiler_pc_t pc)
|
||||
pc.code_object_offset);
|
||||
}
|
||||
|
||||
agent_index
|
||||
create_agent_index(const rocprofiler::tool::agent_indexing index,
|
||||
uint32_t agent_abs_index,
|
||||
uint32_t agent_log_index,
|
||||
uint32_t agent_type_index,
|
||||
const std::string_view agent_type)
|
||||
{
|
||||
switch(index)
|
||||
{
|
||||
case rocprofiler::tool::agent_indexing::node: // absolute
|
||||
{
|
||||
return agent_index{"Agent", agent_abs_index, agent_type};
|
||||
}
|
||||
case rocprofiler::tool::agent_indexing::logical_node: // relative (default)
|
||||
{
|
||||
return agent_index{"Agent", agent_log_index, agent_type};
|
||||
}
|
||||
case rocprofiler::tool::agent_indexing::logical_node_type: // type-relative
|
||||
{
|
||||
return agent_index{agent_type, agent_type_index, agent_type};
|
||||
}
|
||||
}
|
||||
|
||||
ROCP_CI_LOG(WARNING) << fmt::format(
|
||||
"Unsupported agent indexing {} for agent-{}", static_cast<int>(index), agent_abs_index);
|
||||
return agent_index{};
|
||||
}
|
||||
} // namespace tool
|
||||
} // namespace rocprofiler
|
||||
|
||||
Reference in New Issue
Block a user