Пример #1
0
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 ;
}
Пример #2
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;
}