int main() { struct timer tm ; init_timer(&tm) ; pthread_barrier_init(&barrier0,NULL,2); pthread_barrier_init(&barrier1,NULL,2); start_timer(&tm) ; int ret1 = run_parallel() ; stop_timer(&tm) ; print_time(&tm) ; int ret2 = run_serial() ; if(ret1 != ret2) { printf("Mismatch\n") ; printf("par=%d,ser=%d\n", ret1, ret2) ; } else printf("Success %d\n", ret1) ; return 0 ; }
int main(int argc, char **argv) { uint32_t no_threads, chunksize, matrix_size; if (argc != 5) { fprintf(stderr, "INFO [%s:%3.d] - usage: %s <threads> " "<chunksize> <matrixsize> <paraclass>\n", __FILE__, __LINE__, argv[0]); exit(111); } no_threads = atoi(argv[1]); switch (no_threads) { case 6: case 5: case 4: case 3: case 2: case 1: break; default: fprintf(stderr, "INFO [%s:%3d] - (1:6) threads allowed\n", __FILE__, __LINE__); exit(111); } chunksize = atoi(argv[2]); if (chunksize <= 0) { fprintf(stderr, "INFO [%s:%3d] - please select a proper chunk size\n", __FILE__, __LINE__); exit(111); } matrix_size = atoi(argv[3]); switch (matrix_size) { case 64: case 128: case 256: case 512: case 1024: case 2048: case 4096: case 8192: break; default: fprintf(stderr, "INFO [%s:%3d] - please select a proper matrix size\n", __FILE__, __LINE__); exit(111); } try_memory_look(); if (!strcasecmp(argv[4], "pthread")) { return run_pthread(no_threads, matrix_size); } else if (!strcasecmp(argv[4], "serial")) { return run_serial(matrix_size); } else if (!strcasecmp(argv[4], "openmpnoschedule")) { return run_openmp_no_sched(no_threads, matrix_size); } else if (!strcasecmp(argv[4], "openmpschedule")) { return run_openmp_sched(no_threads, chunksize, matrix_size); } else if (!strcasecmp(argv[4], "openmpscheduledynamic")) { return run_openmp_sched_dyn(no_threads, chunksize, matrix_size); } else if (!strcasecmp(argv[4], "openmpi")) { return run_openmpi(no_threads, chunksize, matrix_size); } else { fprintf(stderr, "INFO [%s:%3d] - work mode not supported\n", __FILE__, __LINE__); exit(111); } return 111; }