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

Fixed results output

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