Commit f064f695 authored by Ondrej Vysocky's avatar Ondrej Vysocky

FIX all counters uses unsigned long long int despite not necessary in all cases #34

parent 353b85a9
......@@ -134,11 +134,11 @@ DistributedMeric::DistributedMeric()
{
if (Meric::AGGREGATE)
{
_storeList.push_back(new CountersAggregateStore<CountersStore<RAPL, long long>>(_storingProcs));
_storeList.push_back(new CountersAggregateStore<CountersStore<RAPL, unsigned long long int>>(_storingProcs));
_storeList.back()->setMPIWrite(!_MPInodeRank);
}
else
_storeList.push_back(new CountersStore<RAPL, long long>(Meric::SAMPLES, !_MPInodeRank));
_storeList.push_back(new CountersStore<RAPL, unsigned long long int>(Meric::SAMPLES, !_MPInodeRank));
}
if (Meric::MODE == MODE_JETSON && Meric::CONTINUAL)
......@@ -164,11 +164,11 @@ DistributedMeric::DistributedMeric()
{
if (Meric::AGGREGATE)
{
_storeList.push_back(new CountersAggregateStore<CountersStore<PERFEVENT, long long>>(_worldCopy));
_storeList.push_back(new CountersAggregateStore<CountersStore<PERFEVENT, unsigned long long int>>(_worldCopy));
}
else
{
_storeList.push_back(new CountersAggregateStore<CountersStore<PERFEVENT, long long>>(_currentNode));
_storeList.push_back(new CountersAggregateStore<CountersStore<PERFEVENT, unsigned long long int>>(_currentNode));
}
_storeList.back()->setMPIWrite(true);
}
......@@ -176,11 +176,11 @@ DistributedMeric::DistributedMeric()
{
if (Meric::AGGREGATE)
{
_storeList.push_back(new CountersAggregateStore<CountersStore<PAPI, long long>>(_worldCopy));
_storeList.push_back(new CountersAggregateStore<CountersStore<PAPI, unsigned long long int>>(_worldCopy));
}
else
{
_storeList.push_back(new CountersAggregateStore<CountersStore<PAPI, long long>>(_currentNode));
_storeList.push_back(new CountersAggregateStore<CountersStore<PAPI, unsigned long long int>>(_currentNode));
}
_storeList.back()->setMPIWrite(true);
}
......
......@@ -35,7 +35,7 @@ SharedMeric::SharedMeric()
if (Meric::MODE == MODE_RAPL || Meric::MODE == MODE_BOTH)
{
_storeList.push_back(new CountersStore<RAPL, long long>(Meric::SAMPLES));
_storeList.push_back(new CountersStore<RAPL, unsigned long long int>(Meric::SAMPLES));
}
if (Meric::MODE == MODE_JETSON && Meric::CONTINUAL)
......@@ -51,9 +51,9 @@ SharedMeric::SharedMeric()
{
if (Meric::COUNTERS == "perfevent")
_storeList.push_back(new CountersStore<PERFEVENT, long long>(Meric::SAMPLES));
_storeList.push_back(new CountersStore<PERFEVENT, unsigned long long int>(Meric::SAMPLES));
else if (Meric::COUNTERS == "papi")
_storeList.push_back(new CountersStore<PAPI, long long>(Meric::SAMPLES));
_storeList.push_back(new CountersStore<PAPI, unsigned long long int>(Meric::SAMPLES));
}
for (int i=0; i<_storeList.size(); i++)
......
......@@ -24,10 +24,10 @@ protected:
void saveInterval(std::vector<size_t> &iStarts, size_t iEnd);
double printStats (const std::string description, std::vector<double>& data, const int dataSize, const int stride, bool storeSum, std::ofstream &ss);
long long printStats (const std::string description, const long long * data, const int dataSize, const int stride, bool storeSum, std::ofstream &ss);
unsigned long long int printStats (const std::string description, const unsigned long long int * data, const int dataSize, const int stride, bool storeSum, std::ofstream &ss);
std::vector <long long> _bufferCounters;
std::vector <unsigned long long int> _bufferCounters;
std::vector <double> _bufferTime;
MPI_Datatype consolidate;
};
......
......@@ -5,11 +5,11 @@
namespace meric {
template <class TStore>
long long CountersAggregateStore<TStore>::printStats (const std::string description, const long long * data, const int dataSize, const int stride, bool storeSum, std::ofstream &ss)
unsigned long long int CountersAggregateStore<TStore>::printStats (const std::string description, const unsigned long long int * data, const int dataSize, const int stride, bool storeSum, std::ofstream &ss)
{
long long max = data[0];
long long min = data[0];
long long sum = data[0];
unsigned long long int max = data[0];
unsigned long long int min = data[0];
unsigned long long int sum = data[0];
for(int i=stride; i<dataSize; i+=stride)
{
if (max < data[i])
......@@ -18,7 +18,7 @@ long long CountersAggregateStore<TStore>::printStats (const std::string descript
min = data[i];
sum += data[i];
}
long long avg = sum/(dataSize/stride);
unsigned long long int avg = sum/(dataSize/stride);
ss << "AVG "<< description << "," << avg << std::endl
<< "MAX "<< description << "," << max << std::endl
<< "MIN "<< description << "," << min << std::endl;
......@@ -100,15 +100,15 @@ void CountersAggregateStore<TStore>::saveInterval(std::ofstream &ss, std::vector
ss << "# COUNTERS - "<<this->_store->getCountersLabel() << ": \n";
int j = 0;
CountersRecord<long long> averageRecord;
for(std::map<std::string, long long>::iterator counterIt = this->_store->_records[iEnd].record.begin(); counterIt != this->_store->_records[iEnd].record.end(); ++counterIt)
CountersRecord<unsigned long long int> averageRecord;
for(std::map<std::string, unsigned long long int>::iterator counterIt = this->_store->_records[iEnd].record.begin(); counterIt != this->_store->_records[iEnd].record.end(); ++counterIt)
{
//averageRecord.record[counterIt->first] = printStats(counterIt->first, &_bufferCounters[j++],this->_size*stats.size(),stats.size(), true);
averageRecord.record[counterIt->first] = printStats(counterIt->first, & _bufferCounters[j++],this->_size*stats.size(),stats.size(), true, ss);
}
// Counters ratios
CountersRecord<long long> startRecord;
CountersRecord<unsigned long long int> startRecord;
std::map <std::string, double> ratios;
this->_store->getRatios(startRecord.record, averageRecord.record, time, ratios);
if (ratios.size())
......@@ -123,7 +123,7 @@ void CountersAggregateStore<TStore>::saveInterval(std::ofstream &ss, std::vector
template <class TStore>
void CountersAggregateStore<TStore>::saveInterval(std::vector<size_t> &iStarts, size_t iEnd)
{
std::vector<unsigned long long> stats;
std::vector<unsigned long long int> stats;
double time;
this->_store->fillRegionStats(stats, &time, iStarts.back(), iEnd);
......
......@@ -112,8 +112,8 @@ template <class TCounter, typename TType> void CountersStore<TCounter, TType>::s
}
}
template class CountersStore <PERFEVENT, long long>;
template class CountersStore <PAPI, long long>;
template class CountersStore <RAPL, long long>;
template class CountersStore <PERFEVENT, unsigned long long int>;
template class CountersStore <PAPI, unsigned long long int>;
template class CountersStore <RAPL, unsigned long long int>;
template class CountersStore <HDEEM, double>;
......@@ -13,10 +13,10 @@
using namespace meric;
long long PAPI::COUNTERMAX = LLONG_MAX;
unsigned long long int PAPI::COUNTERMAX = LLONG_MAX;
#ifdef HAVE_PAPI_H
std::map<std::string, long long> PAPI::counters;
std::map<std::string, unsigned long long int> PAPI::counters;
int PAPI::eventSet = PAPI_NULL;
long long * PAPI::countersValues = NULL;
......@@ -57,7 +57,7 @@ void PAPI::init()
std::vector<int> eventList;
for(std::map<std::string, long long>::iterator iterator = counters.begin(); iterator != counters.end(); iterator++)
for(std::map<std::string, unsigned long long int>::iterator iterator = counters.begin(); iterator != counters.end(); iterator++)
{
int eventCode;
if (PAPI_event_name_to_code((char *)iterator->first.c_str(), &eventCode) != PAPI_OK)
......@@ -103,7 +103,7 @@ void PAPI::close()
}
void PAPI::getCounterValues(std::map<std::string, long long> & record)
void PAPI::getCounterValues(std::map<std::string, unsigned long long int> & record)
{
if (PAPI_read(eventSet, countersValues) != PAPI_OK)
{
......@@ -112,7 +112,7 @@ void PAPI::getCounterValues(std::map<std::string, long long> & record)
}
int i = 0;
for(std::map<std::string, long long>::iterator iterator = counters.begin(); iterator != counters.end(); iterator++)
for(std::map<std::string, unsigned long long int>::iterator iterator = counters.begin(); iterator != counters.end(); iterator++)
{
record[iterator->first] = countersValues[i];
i++;
......@@ -123,7 +123,7 @@ void PAPI::getCounterValues(std::map<std::string, long long> & record)
#else
#endif
void PAPI::getRatios(std::map<std::string, long long>& start, std::map<std::string, long long>& stop, double runtime, std::map <std::string, double> & ratios)
void PAPI::getRatios(std::map<std::string, unsigned long long int>& start, std::map<std::string, unsigned long long int>& stop, double runtime, std::map <std::string, double> & ratios)
{
if (stop.count(PAPI_COUNTERS::COUNTER_AVX))
{
......@@ -177,7 +177,7 @@ void PAPI::getSummaryValue(double time, unsigned long long int * counterSummary)
}
// solve counter overflow
unsigned long long PAPI::getResultValue(long long startValue, long long stopValue, double runtime, std::string counter)
unsigned long long PAPI::getResultValue(unsigned long long int startValue, unsigned long long int stopValue, double runtime, std::string counter)
{
if (stopValue < startValue)
{
......@@ -189,7 +189,7 @@ unsigned long long PAPI::getResultValue(long long startValue, long long stopValu
return stopValue - startValue;
}
void PAPI::initMap(std::map<std::string, long long> & dict)
void PAPI::initMap(std::map<std::string, unsigned long long int> & dict)
{
dict[PAPI_COUNTERS::COUNTER_AVX] = 0;
dict[PAPI_COUNTERS::COUNTER_CACHE_MISSES] = 0;
......
......@@ -23,20 +23,20 @@ public:
static void init();
static void close();
static void getCounterValues(std::map<std::string, long long> & record);
static void initMap(std::map<std::string, long long> & dict);
static unsigned long long getResultValue(long long startValue, long long stopValue, double runtime, std::string counter);
static void getCounterValues(std::map<std::string, unsigned long long int> & record);
static void initMap(std::map<std::string, unsigned long long int> & dict);
static unsigned long long getResultValue(unsigned long long int startValue, unsigned long long int stopValue, double runtime, std::string counter);
static void getSummaryValue(double time, unsigned long long int * counterSummary);
static std::string getSummaryCounterName();
static std::string getCountersLabel();
static std::string getCounterLabel(std::string counter);
static void getRatios(std::map<std::string, long long>& start, std::map<std::string, long long>& stop, double runtime, std::map <std::string, double> & ratios);
static void getRatios(std::map<std::string, unsigned long long int>& start, std::map<std::string, unsigned long long int>& stop, double runtime, std::map <std::string, double> & ratios);
private:
//list of counters
static std::map<std::string, long long> counters;
static std::map<std::string, unsigned long long int> counters;
static int eventSet;
static long long * countersValues;
static long long COUNTERMAX;
static unsigned long long int COUNTERMAX;
};
......@@ -47,16 +47,16 @@ class PAPI {
public:
static void init() {};
static void close() {};
static void getCounterValues(std::map<std::string, long long> & record) {std::cerr << "PAPI::getCounterValues() TODO\n"; };
static void initMap(std::map<std::string, long long> & dict);
static unsigned long long getResultValue(long long startValue, long long stopValue, double runtime, std::string counter);
static void getCounterValues(std::map<std::string, unsigned long long int> & record) {std::cerr << "PAPI::getCounterValues() TODO\n"; };
static void initMap(std::map<std::string, unsigned long long int> & dict);
static unsigned long long getResultValue(unsigned long long int startValue, unsigned long long int stopValue, double runtime, std::string counter);
static void getSummaryValue(double time, unsigned long long int * counterSummary);
static std::string getSummaryCounterName();
static std::string getCountersLabel();
static std::string getCounterLabel(std::string counter);
static void getRatios(std::map<std::string, long long>& start, std::map<std::string, long long>& stop, double runtime, std::map <std::string, double> & ratios);
static void getRatios(std::map<std::string, unsigned long long int>& start, std::map<std::string, unsigned long long int>& stop, double runtime, std::map <std::string, double> & ratios);
private:
static long long COUNTERMAX;
static unsigned long long int COUNTERMAX;
};
......
......@@ -16,8 +16,8 @@
using namespace meric;
#ifdef HAVE_LINUX_PERF_EVENT_H
std::map<std::string, long long> PERFEVENT::counters;
long long PERFEVENT::COUNTERMAX = LLONG_MAX;
std::map<std::string, unsigned long long int> PERFEVENT::counters;
unsigned long long int PERFEVENT::COUNTERMAX = LLONG_MAX;
long PERFEVENT::openCounter(perf_event_attr attr)
{
......@@ -74,13 +74,13 @@ void PERFEVENT::init()
void PERFEVENT::close()
{
for(std::map<std::string, long long>::iterator iterator = counters.begin(); iterator != counters.end(); iterator++)
for(std::map<std::string, unsigned long long int>::iterator iterator = counters.begin(); iterator != counters.end(); iterator++)
{
if (ioctl(iterator->second, PERF_EVENT_IOC_DISABLE, 0) != 0)
std::cerr << "PREFEVENT error when stoping counting\n";
}
for(std::map<std::string, long long>::iterator iterator = counters.begin(); iterator != counters.end(); iterator++)
for(std::map<std::string, unsigned long long int>::iterator iterator = counters.begin(); iterator != counters.end(); iterator++)
{
if (::close(iterator->second) != 0)
std::cerr << "PREFEVENT error when closing file descriptor\n";
......@@ -91,7 +91,7 @@ void PERFEVENT::close()
void PERFEVENT::start()
{
for(std::map<std::string, long long>::iterator iterator = counters.begin(); iterator != counters.end(); iterator++)
for(std::map<std::string, unsigned long long int>::iterator iterator = counters.begin(); iterator != counters.end(); iterator++)
{
if (ioctl(iterator->second, PERF_EVENT_IOC_RESET, PERF_IOC_FLAG_GROUP) != 0)
std::cerr << "PREFEVENT error when reseting counter\n";
......@@ -100,12 +100,12 @@ void PERFEVENT::start()
}
}
void PERFEVENT::getCounterValues(std::map<std::string, long long> & record)
void PERFEVENT::getCounterValues(std::map<std::string, unsigned long long int> & record)
{
for(std::map<std::string, long long>::iterator iterator = counters.begin(); iterator != counters.end(); iterator++)
for(std::map<std::string, unsigned long long int>::iterator iterator = counters.begin(); iterator != counters.end(); iterator++)
{
long long result = 0;
if ((read(iterator->second, &result, sizeof(long long))) != sizeof(long long))
unsigned long long int result = 0;
if ((read(iterator->second, &result, sizeof(unsigned long long int))) != sizeof(unsigned long long int))
{
//int errn = errno;
std::cerr << "PREFEVENT error. Failed to read counter "<< iterator->first << std::endl; //TODO ? 0
......@@ -120,7 +120,7 @@ void PERFEVENT::getCounterValues(std::map<std::string, long long> & record)
#else
#endif
void PERFEVENT::getRatios(std::map<std::string, long long>& start, std::map<std::string, long long>& stop, double runtime, std::map <std::string, double> & ratios)
void PERFEVENT::getRatios(std::map<std::string, unsigned long long int>& start, std::map<std::string, unsigned long long int>& stop, double runtime, std::map <std::string, double> & ratios)
{
if (stop.count(PERFEVENT_COUNTERS::COUNTER_AVX))
{
......@@ -174,7 +174,7 @@ void PERFEVENT::getSummaryValue(double time, unsigned long long int * counterSum
}
// solve counter overflow
unsigned long long PERFEVENT::getResultValue(long long startValue, long long stopValue, double runtime, std::string counter)
unsigned long long PERFEVENT::getResultValue(unsigned long long int startValue, unsigned long long int stopValue, double runtime, std::string counter)
{
if (stopValue < startValue)
{
......@@ -187,7 +187,7 @@ unsigned long long PERFEVENT::getResultValue(long long startValue, long long sto
}
void PERFEVENT::initMap(std::map<std::string, long long> & dict)
void PERFEVENT::initMap(std::map<std::string, unsigned long long int> & dict)
{
// dict[PERFEVENT_COUNTERS::] = 0;
dict[PERFEVENT_COUNTERS::COUNTER_AVX] = 0;
......
......@@ -23,20 +23,20 @@ public:
static void init();
static void close();
static void getCounterValues(std::map<std::string, long long> & record);
static void initMap(std::map<std::string, long long> & dict);
static unsigned long long getResultValue(long long startValue, long long stopValue, double runtime, std::string counter);
static void getCounterValues(std::map<std::string, unsigned long long int> & record);
static void initMap(std::map<std::string, unsigned long long int> & dict);
static unsigned long long getResultValue(unsigned long long int startValue, unsigned long long int stopValue, double runtime, std::string counter);
static void getSummaryValue(double time, unsigned long long int * counterSummary);
static std::string getSummaryCounterName();
static std::string getCountersLabel();
static std::string getCounterLabel(std::string counter);
static void getRatios(std::map<std::string, long long>& start, std::map<std::string, long long>& stop, double runtime, std::map <std::string, double> & ratios);
static void getRatios(std::map<std::string, unsigned long long int>& start, std::map<std::string, unsigned long long int>& stop, double runtime, std::map <std::string, double> & ratios);
private:
static void start();
static long openCounter(perf_event_attr attr);
//list of counters
static std::map<std::string,long long> counters;
static long long COUNTERMAX;
static std::map<std::string,unsigned long long int> counters;
static unsigned long long int COUNTERMAX;
};
#else
......@@ -47,16 +47,16 @@ public:
static void close() {};
static void start() {};
static void stop() {};
static void getCounterValues(std::map<std::string, long long> & record) {std::cerr << "PERFEVENT::getCounterValues() TODO\n"; };
static void initMap(std::map<std::string, long long> & dict);
static unsigned long long getResultValue(long long startValue, long long stopValue, double runtime, std::string counter);
static void getCounterValues(std::map<std::string, unsigned long long int> & record) {std::cerr << "PERFEVENT::getCounterValues() TODO\n"; };
static void initMap(std::map<std::string, unsigned long long int> & dict);
static unsigned long long getResultValue(unsigned long long int startValue, unsigned long long int stopValue, double runtime, std::string counter);
static void getSummaryValue(double time, unsigned long long int * counterSummary);
static std::string getSummaryCounterName();
static std::string getCountersLabel();
static std::string getCounterLabel(std::string counter);
static void getRatios(std::map<std::string, long long>& start, std::map<std::string, long long>& stop, double runtime, std::map <std::string, double> & ratios);
static void getRatios(std::map<std::string, unsigned long long int>& start, std::map<std::string, unsigned long long int>& stop, double runtime, std::map <std::string, double> & ratios);
private:
static long long COUNTERMAX;
static unsigned long long int COUNTERMAX;
};
#endif
......
......@@ -41,10 +41,10 @@ using namespace meric;
std::string RAPL::suffix = "_";
int RAPL::numOfDevices = 1;
bool RAPL::detailedMode = false;
long long RAPL::COUNTERMAX = pow(2,32);
unsigned long long int RAPL::COUNTERMAX = pow(2,32);
#ifdef HAVE_X86_ADAPT_H
std::map<std::string, long long> RAPL::counters;
std::map<std::string, unsigned long long int> RAPL::counters;
std::map<std::string, double> RAPL::energyUnit;
// set counters units
......@@ -82,10 +82,10 @@ void RAPL::init()
}
// read counters values
void RAPL::getCounterValues(std::map<std::string, long long> & record)
void RAPL::getCounterValues(std::map<std::string, unsigned long long int> & record)
{
for(std::map<std::string, long long>::iterator iterator = counters.begin(); iterator != counters.end(); iterator++)
for(std::map<std::string, unsigned long long int>::iterator iterator = counters.begin(); iterator != counters.end(); iterator++)
record[iterator->first] = 0;
record[RAPL_COUNTERS::RAPL_SUM_ENERGY] = 0; //will be filled when the measurement is over
......@@ -101,7 +101,7 @@ void RAPL::getCounterValues(std::map<std::string, long long> & record)
// exit(2);
}
for(std::map<std::string, long long>::iterator iterator = counters.begin(); iterator != counters.end(); iterator++)
for(std::map<std::string, unsigned long long int>::iterator iterator = counters.begin(); iterator != counters.end(); iterator++)
{
//TODO this version doesn't count with more than 10 sockets per node (should be enough for this century)
if ((iterator->first.back()-'0') != die)
......@@ -135,7 +135,7 @@ void RAPL::getCounterValues(std::map<std::string, long long> & record)
std::cerr << "X86ADAPT RAPL error while accessing file descriptor\n";
// exit(2);
}
for(std::map<std::string, long long>::iterator iterator = counters.begin(); iterator != counters.end(); iterator++)
for(std::map<std::string, unsigned long long int>::iterator iterator = counters.begin(); iterator != counters.end(); iterator++)
{
const int itemId = x86_adapt_lookup_ci_name(X86_ADAPT_DIE, iterator->first.c_str());
x86_adapt_get_setting(fd, itemId, &dieEnergy);
......@@ -158,7 +158,7 @@ std::string RAPL::getCounterLabel(std::string counter)
}
// solve counter overflow and add baseline energy consumption
unsigned long long RAPL::getResultValue(long long startValue, long long stopValue, double runtime, std::string counter)
unsigned long long RAPL::getResultValue(unsigned long long int startValue, unsigned long long int stopValue, double runtime, std::string counter)
{
if (counter == RAPL_COUNTERS::RAPL_SUM_ENERGY)
return 0;
......@@ -200,7 +200,7 @@ void RAPL::getSummaryValue(double time, unsigned long long int * counterSummary)
}
// set list of counters to measure
void RAPL::initMap(std::map<std::string, long long> & dict)
void RAPL::initMap(std::map<std::string, unsigned long long int> & dict)
{
// fill this vector
std::vector <std::string> names;
......
......@@ -19,43 +19,43 @@ public:
static void init();
static void close() {};
static void getCounterValues(std::map<std::string, long long> & record);
static void initMap(std::map<std::string, long long> & dict);
static void getCounterValues(std::map<std::string, unsigned long long int> & record);
static void initMap(std::map<std::string, unsigned long long int> & dict);
static void detailed() {detailedMode = true;};
static unsigned long long getResultValue(long long startValue, long long stopValue, double runtime, std::string counter);
static unsigned long long getResultValue(unsigned long long int startValue, unsigned long long int stopValue, double runtime, std::string counter);
static void getSummaryValue(double time, unsigned long long int * counterSummary);
static std::string getSummaryCounterName();
static std::string getCountersLabel();
static std::string getCounterLabel(std::string counter);
static void getRatios(std::map<std::string, long long>& start, std::map<std::string, long long>& stop, double runtime, std::map <std::string, double> & ratios) {};
static void getRatios(std::map<std::string, unsigned long long int>& start, std::map<std::string, unsigned long long int>& stop, double runtime, std::map <std::string, double> & ratios) {};
private:
//list of counters
static std::map<std::string, long long> counters;
static std::map<std::string, unsigned long long int> counters;
static std::map<std::string, double> energyUnit;
static std::string suffix;
static int numOfDevices;
static bool detailedMode;
static long long COUNTERMAX;
static unsigned long long int COUNTERMAX;
#else
public:
static const int RAPL_BASELINE = 0;
static void init() {};
static void close() {};
static void getCounterValues(std::map<std::string, long long> & record) {std::cerr << "RAPL::getCounterValues() TODO\n"; };
static void initMap(std::map<std::string, long long> & dict);
static void getCounterValues(std::map<std::string, unsigned long long int> & record) {std::cerr << "RAPL::getCounterValues() TODO\n"; };
static void initMap(std::map<std::string, unsigned long long int> & dict);
static void detailed() {detailedMode = true;};
static unsigned long long getResultValue(long long startValue, long long stopValue, double runtime, std::string counter) {return 0;};
static unsigned long long getResultValue(unsigned long long int startValue, unsigned long long int stopValue, double runtime, std::string counter) {return 0;};
static std::string summaryCounter();
static void getSummaryValue(double time, unsigned long long int * counterSummary);
static std::string getSummaryCounterName();
static std::string getCountersLabel();
static std::string getCounterLabel(std::string counter);
static void getRatios(std::map<std::string, long long>& start, std::map<std::string, long long>& stop, double runtime, std::map <std::string, double> & ratios) {};
static void getRatios(std::map<std::string, unsigned long long int>& start, std::map<std::string, unsigned long long int>& stop, double runtime, std::map <std::string, double> & ratios) {};
private:
static std::string suffix;
static int numOfDevices;
static bool detailedMode;
static long long COUNTERMAX;
static unsigned long long int COUNTERMAX;
#endif
};
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment