SWDEV-403085: Added %rank to output path and metadata to CTF. Added tests for file/ctf/perfetto plugins.
Change-Id: I3b85e8a413cb99e44b7d8d5303dcb9e3520c0f04
Этот коммит содержится в:
коммит произвёл
Gopesh Bhardwaj
родитель
95eb737f29
Коммит
1166f3c121
@@ -757,6 +757,23 @@ std::uint64_t GetMetadataClkClsOffset() {
|
||||
|
||||
} // namespace
|
||||
|
||||
|
||||
static const char* LOOP_MPI_RANK(const std::vector<const char*>& mpivars) {
|
||||
for (const char* env : mpivars)
|
||||
if (const char* envvar = getenv(env))
|
||||
return envvar;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
static void insert_meta_to_stream(
|
||||
std::stringstream& stream,
|
||||
const char* field,
|
||||
const char* value
|
||||
) {
|
||||
if (!field || !value) return;
|
||||
stream << "\n\t" << std::string(field) << " = " << std::string(value) << ';';
|
||||
}
|
||||
|
||||
void Plugin::CopyAdjustedMetadataStreamFile(const fs::path& metadata_stream_path,
|
||||
const fs::path& trace_dir) {
|
||||
// Load installed metadata stream file contents.
|
||||
@@ -772,6 +789,24 @@ void Plugin::CopyAdjustedMetadataStreamFile(const fs::path& metadata_stream_path
|
||||
metadata.replace(metadata.find(offset_term), std::strlen(offset_term), ss.str());
|
||||
}
|
||||
|
||||
std::stringstream data_stream;
|
||||
const char* rank = LOOP_MPI_RANK({"MPI_RANK", "OMPI_COMM_WORLD_RANK", "MV2_COMM_WORLD_RANK"});
|
||||
// Add MPI information to metadata
|
||||
if (rank) {
|
||||
insert_meta_to_stream(data_stream, "rank", rank);
|
||||
insert_meta_to_stream(data_stream, "node_rank", getenv("OMPI_COMM_WORLD_NODE_RANK"));
|
||||
|
||||
const char* local = LOOP_MPI_RANK({"OMPI_COMM_WORLD_LOCAL_RANK", "MV2_COMM_WORLD_LOCAL_RANK"});
|
||||
insert_meta_to_stream(data_stream, "local_rank", local);
|
||||
|
||||
std::string data_ins = data_stream.str();
|
||||
size_t env_pos = metadata.find("env {");
|
||||
if (env_pos != std::string::npos)
|
||||
metadata.insert(metadata.begin()+env_pos+5, data_ins.begin(), data_ins.end());
|
||||
else
|
||||
std::cerr << "Failed to insert MPI metadata!" << std::endl;
|
||||
}
|
||||
|
||||
// Write adjusted metadata stream to trace directory.
|
||||
{
|
||||
std::ofstream output{trace_dir / "metadata"};
|
||||
|
||||
Ссылка в новой задаче
Block a user