This repository has been archived on 2024-05-05. You can view files and clone it, but cannot push or open issues or pull requests.
work-stealing-scheduler/src/main.c

62 lines
1.2 KiB
C

#include "../includes/mandelbrot.h"
#include "../includes/quicksort.h"
#include <assert.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int
main(int argc, char *argv[])
{
int serial = 0;
int nthreads = -1;
int quicksort = 0;
int mandelbrot = 0;
double delay;
int opt;
while((opt = getopt(argc, argv, "qmst:")) != -1) {
if(opt < 0) {
goto usage;
}
switch(opt) {
case 'q':
quicksort = 1;
break;
case 'm':
mandelbrot = 1;
break;
case 's':
serial = 1;
break;
case 't':
nthreads = atoi(optarg);
break;
default:
goto usage;
}
}
if(nthreads < 0 && !serial) {
goto usage;
}
if(quicksort) {
delay = benchmark_quicksort(serial, nthreads);
} else if(mandelbrot) {
delay = benchmark_mandelbrot(serial, nthreads);
} else {
goto usage;
}
assert(delay >= 0.0);
printf("Done in %lf seconds.\n", delay);
return 0;
usage:
printf("Usage: %s -q|m [-t threads] [-s]\n", argv[0]);
return 1;
}