/* * Runs benchmark. */ int main(int argc, char **argv) { int i; /* Loop index. */ double *mask; /* Mask. */ uint64_t end; /* End time. */ uint64_t start; /* Start time. */ unsigned char *img; /* Image. */ readargs(argc, argv); timer_init(); srandnum(seed); /* Benchmark initialization. */ if (verbose) printf("initializing...\n"); start = timer_get(); img = smalloc(p->imgsize*p->imgsize*sizeof(char)); for (i = 0; i < p->imgsize*p->imgsize; i++) img[i] = randnum() & 0xff; mask = smalloc(p->masksize*p->masksize*sizeof(double)); generate_mask(mask); end = timer_get(); if (verbose) printf(" time spent: %f\n", timer_diff(start, end)*MICROSEC); /* Apply filter. */ if (verbose) printf("applying filter...\n"); start = timer_get(); gauss_filter(img, p->imgsize, mask, p->masksize); end = timer_get(); total = timer_diff(start, end); /* Print timing statistics. */ printf("timing statistics:\n"); printf(" master: %f\n", master*MICROSEC); for (i = 0; i < nclusters; i++) printf(" slave %d: %f\n", i, slave[i]*MICROSEC); printf(" communication: %f\n", communication*MICROSEC); printf(" total time: %f\n", total*MICROSEC); /* House keeping. */ free(mask); free(img); return (0); }
/* * Runs benchmark. */ int main(int argc, char **argv) { int i; /* Loop index. */ int *a; /* Array to be sorted. */ uint64_t end; /* End time. */ uint64_t start; /* Start time. */ readargs(argc, argv); timer_init(); srandnum(seed); /* Benchmark initialization. */ if (verbose) printf("initializing...\n"); start = timer_get(); a = smalloc(p->n*sizeof(int)); for (i = 0; i < p->n; i++) a[i] = randnum() & 0xfffff; end = timer_get(); if (verbose) printf(" time spent: %f\n", timer_diff(start, end)*MICROSEC); /* Cluster data. */ if (verbose) printf("sorting...\n"); start = timer_get(); bucketsort(a, p->n); end = timer_get(); total = timer_diff(start, end); /* Print timing statistics. */ printf("timing statistics:\n"); printf(" master: %f\n", master*MICROSEC); for (i = 0; i < nclusters; i++) printf(" slave %d: %f\n", i, slave[i]*MICROSEC); printf(" communication: %f\n", communication*MICROSEC); printf(" total time: %f\n", total*MICROSEC); /* House keeping. */ free(a); return (0); }
/* * Runs benchmark. */ int main(int argc, char **argv) { int i; /* Loop index. */ int *map; /* Map of clusters. */ uint64_t end; /* End time. */ uint64_t start; /* Start time. */ vector_t *data; /* Data points. */ readargs(argc, argv); printf("CAPBench - KM kernel\n"); printf(" # of threads: %d \n", nthreads); timer_init(); srandnum(seed); omp_set_num_threads(nthreads); /* Benchmark initialization. */ start = timer_get(); data = smalloc(p->npoints*sizeof(vector_t)); for (i = 0; i < p->npoints; i++) { data[i] = vector_create(p->dimension); vector_random(data[i]); } end = timer_get(); /* Cluster data. */ printf("Entering in KM ROI - Clustering data...\n"); start = timer_get(); m5_reset_stats(0,0); map = kmeans(data, p->npoints, p->ncentroids, p->mindistance); end = timer_get(); m5_dump_stats(0,0); printf("KM total time: %f\n", timer_diff(start, end)*MICROSEC); /* House keeping. */ free(map); for (i = 0; i < p->npoints; i++) vector_destroy(data[i]); free(data); return (0); }
int main(int argc, char **argv) { if (argc != 7) { printf("Usage: npoints dimension ncentroids mindistance seed nthreads\n"); exit(1); } npoints = strtol(argv[1], NULL, 0); dimension = strtol(argv[2], NULL, 0); ncentroids = strtol(argv[3], NULL, 0); mindistance = strtol(argv[4], NULL, 0); seed = strtol(argv[5], NULL, 0); nthreads = strtol(argv[6], NULL, 0); srandnum(seed); data = calloc((unsigned int)npoints, sizeof(vector_t)); for (int i = 0; i < npoints; i++) { data[i] = calloc((unsigned int)dimension, sizeof(float)); for (int j = 0; j < dimension; j++) { data[i][j] = randnum() & 65535U; } } map = kmeans(); for (int i = 0; i < ncentroids; i++) { printf("Partition %d:\n", i); for (int j = 0; j < npoints; j++) { if (map[j] == i) { printf("%d ", j); } } printf("\n"); } free(map); for (int i = 0; i < npoints; i++) { free(data[i]); } free(data); return 0; }
/* * Runs benchmark. */ int main(int argc, char **argv) { int i; /* Loop index. */ int *mask; /* Mask. */ uint64_t end; /* End time. */ uint64_t start; /* Start time. */ char *img; /* Image. */ int numcorners=0; /* Total corners detected */ #ifdef _XEON_PHI_ double power; #endif readargs(argc, argv); timer_init(); srandnum(seed); omp_set_num_threads(nthreads); /* Benchmark initialization. */ if (verbose) printf("initializing...\n"); start = timer_get(); img = smalloc(p->imgsize*p->imgsize*sizeof(char)); for (i = 0; i < p->imgsize*p->imgsize; i++){ char val = randnum() & 0xff; img[i] = (val>0) ? val : val*(-1); } mask = smalloc(p->maskrows*p->maskcolumns*sizeof(int)); generate_mask(mask); end = timer_get(); if (verbose) printf(" time spent: %f\n", timer_diff(start, end)*MICROSEC); #ifdef _XEON_PHI_ power_init(); #endif /* Detect corners. */ if (verbose) printf("detecting corners...\n"); start = timer_get(); numcorners = fast(img, p->imgsize, mask); end = timer_get(); #ifdef _XEON_PHI_ power = power_end(); #endif printf("timing statistics:\n"); printf(" total time: %f\n", timer_diff(start, end)*MICROSEC); #ifdef _XEON_PHI_ printf(" average power: %f\n", power*0.000001); #endif printf(" corners detected: %d\n", numcorners); /* House keeping. */ free(mask); free(img); return (0); }