#include #include #include #include #include #include #include "cpu.h" #include "gpu.h" #define BSZ 4 #define NIT 100 using namespace std; unsigned long bsize = 512; double gtime(); string elapsed(double,double); void vinit(float* u,int n); int main(int argc,char* argv[]) { double ts,te; float *u; int bsz = BSZ; int nit = NIT; int sz; float sample; if (argc>1) bsz = atoi(argv[1]); sz = bsz*1024*1024; cpu_init(); gpu_init(); cout << endl; u = new float[sz]; cout << "Set size: " << sz/(1024UL*1024UL) << " Mfloats" << endl; cout << "Data size: " << (sz*sizeof(float))/(1024UL*1024UL) << " Mb" << endl; cout << "Iterations: " << NIT << endl; cout << "Block size: " << bsize << endl; cout << "Grid size: " << sz/bsize << endl; cout << endl; // ts = gtime(); cpu_run(u,sz,nit); // te = gtime(); // cout << "CPU Total: " << elapsed(ts,te) << endl; // cout << u[2] << endl; sample = u[2]; // ts = gtime(); gpu_run(u,sz,nit); // te = gtime(); // cout << "GPU Total: " << elapsed(ts,te) << endl; // cout << u[2] << endl; // if (u[2]!=sample) // { // cerr << "===========================" << endl; // cerr << " Bad data!! " << endl; // cerr << "===========================" << endl; // } // cout << endl; delete[] u; cpu_fini(); gpu_fini(); cout << endl; return 0; } void vinit(float* u,int n) { for (int i=0; i