#include #include #include #include #include #include #include #include #include #include "example_util_gettime.h" #define COARSENESS 100 #define ITERS 10 double rec_cilkified(double * a, double * b, int n) { return 0; } double loop_cilkified(double * a, double * b, int n) { return 0; } double hyperobject_cilkified(double * a, double * b, int n) { return 0; } int close(double x, double y, int n) { double relative_diff = (x>y? (x-y)/x : (y-x)/x); return (relative_diff < sqrt((double) n) * exp2(-42))? 1 : 0; } // A simple test harness int inn_prod_driver(int n) { double * a = new double[n]; double * b = new double[n]; for (int i = 0; i < n; ++i) { a[i] = i; b[i] = i; } std::random_shuffle(a, a + n); std::random_shuffle(b, b + n); double seqresult = std::inner_product(a, a+n, b, 0); long t1 = example_get_time(); for(int i=0; i< ITERS; ++i) { seqresult = std::inner_product(a, a+n, b, 0); } long t2 = example_get_time(); double seqtime = (t2-t1)/(ITERS*1000.f); std::cout << "Sequential time: " << seqtime << " seconds" << std::endl; /***********************************************************/ /******** START TESTING RECURSIVE CILKFIED VERSION *******/ /***********************************************************/ double parresult = rec_cilkified(a, b, n); t1 = example_get_time(); for(int i=0; i< ITERS; ++i) { parresult = rec_cilkified(a, b, n); } t2 = example_get_time(); double partime = (t2-t1)/(ITERS*1000.f); std::cout << "Recursive cilkified time:" << partime << " seconds" << std::endl; std::cout << "Speedup is: " << seqtime/partime << std::endl; std::cout << "Sequential result is: "< 1) { n = std::atoi(argv[1]); } return inn_prod_driver(n); }