#include #include typedef long arrayelt; arrayelt *A, *B, *C; long arraydim = 12345678, arraysize; void getparms(int argc, char* argv[]) { if (argc > 1) arraydim = atol(argv[1]); arraysize = arraydim * sizeof(arrayelt); printf("arraysize = %.0fMB\n", (float)arraysize / 1024 / 1024); } void getarray(arrayelt*& a) { a = (arrayelt*)malloc(arraysize); } void freearray(arrayelt* a) { free(a); } void initarrays(void) { for (long ai = 0; ai < arraydim; ai++) { A[ai] = ai; B[ai] = ai + 1; } } inline arrayelt mathalgo(const arrayelt a, const arrayelt b) { return (a * a + b); } void domath(void) { for (long ai = 0; ai < arraydim; ai++) C[ai] = mathalgo(A[ai], B[ai]); } int main(int argc, char* argv[]) { printf("hello! - using CPU\n"); getparms(argc, argv); getarray(A); getarray(B); getarray(C); initarrays(); domath(); freearray(A); freearray(B); freearray(C); printf("goodbye\n"); return (0); }