Fix for TimeTBB not compiling on linux

release/4.3a0
Richard Roberts 2013-11-12 17:03:10 +00:00
parent 314c44b0ad
commit b4942110bc
1 changed files with 52 additions and 48 deletions

View File

@ -47,14 +47,11 @@ struct ResultWithThreads
typedef map<int, ResultWithThreads> Results; typedef map<int, ResultWithThreads> Results;
/* ************************************************************************* */ /* ************************************************************************* */
map<int, double> testWithoutMemoryAllocation() struct WorkerWithoutAllocation
{
// A function to do some matrix operations without allocating any memory
struct Worker
{ {
vector<double>& results; vector<double>& results;
Worker(vector<double>& results) : results(results) {} WorkerWithoutAllocation(vector<double>& results) : results(results) {}
void operator()(const tbb::blocked_range<size_t>& r) const void operator()(const tbb::blocked_range<size_t>& r) const
{ {
@ -68,6 +65,11 @@ map<int, double> testWithoutMemoryAllocation()
} }
}; };
/* ************************************************************************* */
map<int, double> testWithoutMemoryAllocation()
{
// A function to do some matrix operations without allocating any memory
// Now call it // Now call it
vector<double> results(numberOfProblems); vector<double> results(numberOfProblems);
@ -76,7 +78,7 @@ map<int, double> testWithoutMemoryAllocation()
BOOST_FOREACH(size_t grainSize, grainSizes) BOOST_FOREACH(size_t grainSize, grainSizes)
{ {
tbb::tick_count t0 = tbb::tick_count::now(); tbb::tick_count t0 = tbb::tick_count::now();
tbb::parallel_for(tbb::blocked_range<size_t>(0, numberOfProblems), Worker(results)); tbb::parallel_for(tbb::blocked_range<size_t>(0, numberOfProblems), WorkerWithoutAllocation(results));
tbb::tick_count t1 = tbb::tick_count::now(); tbb::tick_count t1 = tbb::tick_count::now();
cout << "Without memory allocation, grain size = " << grainSize << ", time = " << (t1 - t0).seconds() << endl; cout << "Without memory allocation, grain size = " << grainSize << ", time = " << (t1 - t0).seconds() << endl;
timingResults[grainSize] = (t1 - t0).seconds(); timingResults[grainSize] = (t1 - t0).seconds();
@ -86,14 +88,11 @@ map<int, double> testWithoutMemoryAllocation()
} }
/* ************************************************************************* */ /* ************************************************************************* */
map<int, double> testWithMemoryAllocation() struct WorkerWithAllocation
{
// A function to do some matrix operations with allocating memory
struct Worker
{ {
vector<double>& results; vector<double>& results;
Worker(vector<double>& results) : results(results) {} WorkerWithAllocation(vector<double>& results) : results(results) {}
void operator()(const tbb::blocked_range<size_t>& r) const void operator()(const tbb::blocked_range<size_t>& r) const
{ {
@ -119,6 +118,11 @@ map<int, double> testWithMemoryAllocation()
} }
}; };
/* ************************************************************************* */
map<int, double> testWithMemoryAllocation()
{
// A function to do some matrix operations with allocating memory
// Now call it // Now call it
vector<double> results(numberOfProblems); vector<double> results(numberOfProblems);
@ -127,7 +131,7 @@ map<int, double> testWithMemoryAllocation()
BOOST_FOREACH(size_t grainSize, grainSizes) BOOST_FOREACH(size_t grainSize, grainSizes)
{ {
tbb::tick_count t0 = tbb::tick_count::now(); tbb::tick_count t0 = tbb::tick_count::now();
tbb::parallel_for(tbb::blocked_range<size_t>(0, numberOfProblems), Worker(results)); tbb::parallel_for(tbb::blocked_range<size_t>(0, numberOfProblems), WorkerWithAllocation(results));
tbb::tick_count t1 = tbb::tick_count::now(); tbb::tick_count t1 = tbb::tick_count::now();
cout << "With memory allocation, grain size = " << grainSize << ", time = " << (t1 - t0).seconds() << endl; cout << "With memory allocation, grain size = " << grainSize << ", time = " << (t1 - t0).seconds() << endl;
timingResults[grainSize] = (t1 - t0).seconds(); timingResults[grainSize] = (t1 - t0).seconds();