Skip to content
Snippets Groups Projects
Commit 2e7ff45e authored by 数学の武士's avatar 数学の武士
Browse files

Fixed results output

parent 57d7da70
No related branches found
No related tags found
No related merge requests found
......@@ -72,11 +72,11 @@ EventData& EventData::operator=(const EventData& src)
{
this->double_start = src.double_start;
this->start = src.start;
this->elapsed_time = 0.0;
this->count = 0;
this->elapsed_time = src.elapsed_time;
this->count = src.count;
// this->ifCUDA = 0;
this->event_name = src.event_name;
this->ifStart = false, this->ifEnd = false;
this->ifStart = src.ifStart, this->ifEnd = src.ifEnd;
this->if_mode_set = src.if_mode_set;
this->ifCUDAinit = src.ifCUDAinit;
......@@ -84,8 +84,11 @@ EventData& EventData::operator=(const EventData& src)
this->mode = src.mode;
#ifdef INCLUDE_GPU_TIMER
this->InitEventsCUDA();
this->gpu_start = src.gpu_start;
this->gpu_end = src.gpu_end;
// printf("Copied %e, ori %e\n", Ellapsed(this->gpu_start, this->gpu_end), Ellapsed(src.gpu_start, src.gpu_end));
#endif
return *this;
......
#pragma once
//------------------------- Jikan-config ---------------------------------------------
//#define TIMER_ON
#define TIMER_ON
#define INCLUDE_GPU_TIMER
#define INCLUDE_MPI
// #define INCLUDE_OPEN_MP
......
......@@ -93,27 +93,30 @@ void Jikan::JikanStart(const string& name, const int& mode)
bool ExistFlag, ifMPI, ifOpenMP;
ExistFlag = this->ifContains(name);
if(!ExistFlag)
{
#ifdef INCLUDE_OPEN_MP
#pragma omp master
{
#endif
(this->Events)[name].ifStart = true;
(this->Events)[name] = EventData(name);
(this->Events)[name].GetModeVals(mode);
#ifdef INCLUDE_OPEN_MP
}
#endif
}
if(!ExistFlag)
{
#ifdef INCLUDE_OPEN_MP
#pragma omp master
{
#endif
(this->Events)[name] = EventData(name);
(this->Events)[name].GetModeVals(mode);
(this->Events)[name].ifStart = true;
// printf("(this->Events)[name].ifStart = %d\n", (this->Events)[name].ifStart);
#ifdef INCLUDE_OPEN_MP
}
#endif
}
// printf("118 (this->Events)[name].ifStart = %d\n", (this->Events)[name].ifStart);
// else
// {
// bool ifStart = (this->Events)[name].ifStart;
......@@ -165,10 +168,14 @@ void Jikan::JikanStart(const string& name, const int& mode)
#pragma omp master
{
#endif
// printf("170 (this->Events)[name].ifStart = %d\n", (this->Events)[name].ifStart);
this->StartEvent(name);
// printf("(this->Events)[name].ifStart = %d\n", (this->Events)[name].ifStart);
#ifdef INCLUDE_OPEN_MP
}
#endif
// printf("177 (this->Events)[name].ifStart = %d\n", (this->Events)[name].ifStart);
}
void Jikan::JikanEnd(const string& name)
......@@ -179,11 +186,16 @@ void Jikan::JikanEnd(const string& name)
ExistFlag = this->ifContains(name);
ifStart = (this->Events)[name].ifStart;
// printf("JikanEnd\n");
if((!ExistFlag) || (!ifStart))
{
// printf("ExistFlag = %d, ifStart = %d\n", ExistFlag, ifStart);
return;
}
ifMPI = (this->Events)[name].mode[0], ifOpenMP = (this->Events)[name].mode[1], ifCUDA = (this->Events)[name].mode[2];
// printf("JikanEnd:: ifCUDA = %d\n", ifCUDA);
#ifdef INCLUDE_OPEN_MP
#pragma omp master
{
......@@ -216,13 +228,12 @@ void Jikan::JikanEnd(const string& name)
if(ifMPI)
this->BarrierMPI();
(this->Events)[name].ifStart = false;
this->EndEvent(name);
#ifdef INCLUDE_OPEN_MP
}
#endif
//---------------------------------------------------------------------------------------
(this->Events)[name].ifStart = false;
}
void Jikan::GenerateTypedOutputData(const string& EventType, string& EventTypeString)
......@@ -299,6 +310,7 @@ void Jikan::StartEvent(const string& name)
if((ifCUDA))
{
#ifdef INCLUDE_GPU_TIMER
// printf("StartCUDASync\n");
this->StartCUDASync(name);
#endif
}
......@@ -319,6 +331,7 @@ void Jikan::EndEvent(const string& name)
if((ifCUDA))
{
#ifdef INCLUDE_GPU_TIMER
// printf("EndCUDASync\n");
this->EndCUDASync(name);
#endif
}
......
......@@ -2,6 +2,7 @@
#include "Event.h"
#include <fstream>
#include <sstream>
using namespace std;
......@@ -35,37 +36,45 @@ string JSON::StartTypedBlock(const string& name)
return row;
}
bool JSON::GenerateRow(EventData Event, string &ResRow, const string& EndRowJSON)
string Number2String(const double Val)
{
string EventModeName = JSON::StartSubRow("Event mode") + "\"" + Event.GetEventModeName() + "\"" + JSON::SeparateSubRows;
char AccurateValue[256];
sprintf(AccurateValue, "%.10e", Event.elapsed_time);
ostringstream StrTSValue;
StrTSValue << Val << scientific;
string NumberAsString = StrTSValue.str();
string FullElapsedTime = JSON::StartSubRow(string("Full elapsed time")) + string(AccurateValue) + JSON::SeparateSubRows;
return NumberAsString;
}
AccurateValue[0] = '\0';
bool JSON::GenerateRow(EventData Event, string &ResRow, const string& EndRowJSON)
{
string EventModeName = JSON::StartSubRow("Event mode") + "\"" + Event.GetEventModeName() + "\"" + JSON::SeparateSubRows;
string FullElapsedTime = JSON::StartSubRow(string("Full elapsed time")) + Number2String(Event.elapsed_time) + JSON::SeparateSubRows;
double mean_elapsed = Event.GetMeanElapsedTime();
sprintf(AccurateValue, "%.10e", mean_elapsed);
string MeanElapsedTime = JSON::StartSubRow(string("Mean elapsed time")) + string(AccurateValue) + JSON::SeparateSubRows;
string MeanElapsedTime = JSON::StartSubRow(string("Mean elapsed time")) + Number2String(mean_elapsed) + JSON::SeparateSubRows;
string TimeSeries = JSON::StartSubRow(string("Time series")) + "[";
int TimeSeriesLen = Event.time_series.size();
for (int i = 0; i < TimeSeriesLen - 1; i++)
{
AccurateValue[0] = '\0';
sprintf(AccurateValue, "%.10e", Event.time_series[i]);
TimeSeries += string(AccurateValue) + ", ";
// ostringstream StrTSValue;
// StrTSValue << Event.time_series[i];
// string strObj = StrTSValue.str();
// // printf("Event.time_series[i] = %e, AccurateValue %s\n", Event.time_series[i], AccurateValue);
// TimeSeries += strObj + ", ";
TimeSeries += Number2String(Event.time_series[i]) + ", ";
}
if(TimeSeriesLen != 0)
{
AccurateValue[0] = '\0';
sprintf(AccurateValue, "%.10e", Event.time_series[TimeSeriesLen - 1]);
TimeSeries += string(AccurateValue);
// ostringstream StrTSValue;
// StrTSValue << Event.time_series[TimeSeriesLen - 1];
// string strObj = StrTSValue.str();
TimeSeries += Number2String(Event.time_series[TimeSeriesLen - 1]);
}
TimeSeries += "]" ;
// printf("TimeSeries %s\n", TimeSeries.c_str());
string JSONrow = JSON::StartSubRow(Event.event_name) + "{" + EventModeName + FullElapsedTime + MeanElapsedTime + TimeSeries + EndRowJSON;
......@@ -77,7 +86,7 @@ bool JSON::GenerateRow(EventData Event, string &ResRow, const string& EndRowJSON
bool JSON::WriteOutput(const string& Filename, const string& OutputData)
{
ofstream file;
file.open(Filename);
file.open(Filename.c_str(), ios::out);
if (!file)
{
......@@ -87,7 +96,10 @@ bool JSON::WriteOutput(const string& Filename, const string& OutputData)
}
file << OutputData;
// file.write((char *)&OutputData, sizeof(string));
file.close();
// printf("OutputData %s\n", OutputData.c_str());
return true;
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment