Use long double for check solution in case of very large problem sizes
This commit is contained in:
parent
e77a34158c
commit
6185d3aca6
@ -3,6 +3,7 @@ All notable changes to this project will be documented in this file.
|
|||||||
|
|
||||||
## Unreleased
|
## Unreleased
|
||||||
- Fix CUDA memory limit check.
|
- Fix CUDA memory limit check.
|
||||||
|
- Use long double for `check_solution` in case of large problem size.
|
||||||
|
|
||||||
## [v4.0] - 2021-12-22
|
## [v4.0] - 2021-12-22
|
||||||
|
|
||||||
|
|||||||
10
src/main.cpp
10
src/main.cpp
@ -487,15 +487,15 @@ void check_solution(const unsigned int ntimes, std::vector<T>& a, std::vector<T>
|
|||||||
goldSum = goldA * goldB * ARRAY_SIZE;
|
goldSum = goldA * goldB * ARRAY_SIZE;
|
||||||
|
|
||||||
// Calculate the average error
|
// Calculate the average error
|
||||||
double errA = std::accumulate(a.begin(), a.end(), 0.0, [&](double sum, const T val){ return sum + fabs(val - goldA); });
|
long double errA = std::accumulate(a.begin(), a.end(), 0.0, [&](double sum, const T val){ return sum + fabs(val - goldA); });
|
||||||
errA /= a.size();
|
errA /= a.size();
|
||||||
double errB = std::accumulate(b.begin(), b.end(), 0.0, [&](double sum, const T val){ return sum + fabs(val - goldB); });
|
long double errB = std::accumulate(b.begin(), b.end(), 0.0, [&](double sum, const T val){ return sum + fabs(val - goldB); });
|
||||||
errB /= b.size();
|
errB /= b.size();
|
||||||
double errC = std::accumulate(c.begin(), c.end(), 0.0, [&](double sum, const T val){ return sum + fabs(val - goldC); });
|
long double errC = std::accumulate(c.begin(), c.end(), 0.0, [&](double sum, const T val){ return sum + fabs(val - goldC); });
|
||||||
errC /= c.size();
|
errC /= c.size();
|
||||||
double errSum = fabs((sum - goldSum)/goldSum);
|
long double errSum = fabs((sum - goldSum)/goldSum);
|
||||||
|
|
||||||
double epsi = std::numeric_limits<T>::epsilon() * 100.0;
|
long double epsi = std::numeric_limits<T>::epsilon() * 100.0;
|
||||||
|
|
||||||
if (errA > epsi)
|
if (errA > epsi)
|
||||||
std::cerr
|
std::cerr
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user