#pragma once #include "Jikan.h" #include "Event.h" #include <iostream> #include <string> #include <set> #ifdef INCLUDE_MPI #include <mpi.h> #endif class Jikan { public: std::map<std::string, EventData> Events; std::map<std::string, std::set<std::string> > EventType; std::string JSONname; std::string JSONdata; std::string Error; Jikan(); ~Jikan(); void Jikan_start(const std::string& name, const int& mode); void Jikan_end( const std::string& name); #ifdef INCLUDE_GPU_TIMER void cuda_Jikan_start(const std::string& name); void cuda_Jikan_end( const std::string& name); #endif void GenerateTypedOutputData(const std::string& EventType, std::string& EventTypeString); void GenerateOutputData(); // private: bool ifContains(const std::string& name); #ifdef INCLUDE_MPI bool ifWriteProc(MPI_Comm comm, int id); #endif bool ifWriteProc(); void SetDumpFilename(const std::string& name); private: void StartTimer(const std::string& name); void BarrierMPI(); void StartEventTimer(const std::string& name); void EndEventTimer(const std::string& name); };