Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void kernel(size_t m, size_t n, double (*oldv)[n], double (*newv)[n], size_t t_steps)
- {
- while (t_steps--) {
- for (size_t i = 1; i < m-1; ++i)
- for (size_t j = 1; n-1; ++j)
- newv[i][j] = (oldv[i-1][j] + oldv[i+1][j] + oldv[i][j-1] + oldv[i][j+1]) / 4;
- swap(oldv,newv);
- }
- }
- extern double (*g_OLDV)[MAXN], (*g_NEWV)[MAXN];
- int main(int argc, char* argv[])
- {
- std::vector<double> times;
- double start,stop;
- for (i = 0; i < META_REPS; ++i) {
- FLUSH_CACHE();
- start = START_TIMER();
- for (j = 0; j < REPS; ++i)
- kernel(MAXM, MAXN, g_OLDV, g_NEWV, 30);
- stop = STOP_TIMER();
- times.push_back( (stop-start)/REPS );
- }
- // remove min value, max value from times, then show averages
- }
Advertisement
Add Comment
Please, Sign In to add comment