SWDEV-403085: Added %rank to output path and metadata to CTF. Added tests for file/ctf/perfetto plugins.

Change-Id: I3b85e8a413cb99e44b7d8d5303dcb9e3520c0f04
Этот коммит содержится в:
Giovanni LB
2023-07-10 15:16:26 -03:00
коммит произвёл Gopesh Bhardwaj
родитель 95eb737f29
Коммит 1166f3c121
4 изменённых файлов: 213 добавлений и 132 удалений
+35
Просмотреть файл
@@ -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"};