% Plot measurements

threads = [1 2 4 6 8 10 12];
ser_sift_threads = [ 4418 4418 4418 4418 4418 4418 4418 ];
ser_mnist_ser_threads = [ 7924 7924 7924 7924 7924 7924 7924 ];

omp_sift_th = [
    4469 4283 4096 3822 4060 4241 5193
];
omp_mnist_th = [
    8053 7806 7465 6828 7662 8013 8123
];
    
cilk_sift_th = [
    4225 4090 3696 3122 3860 4141 5103
];
cilk_mnist_th = [
    7744 7206 6965 6628 7362 7813 8123
];

pth_sift_th = [
    4254 2155 1133 877 724 640 682
];
pth_mnist_th = [
    7889 3963 2058 1445 1496 1379 1352
];

% 1ο Διάγραμμα: OMP
figure;
set(gcf, 'Position', [100, 100, 1280, 720]); % Set the figure size to HD
plot(threads, ser_sift_threads, '-o', 'DisplayName', 'Serial SIFT');
hold on;
plot(threads, ser_mnist_ser_threads, '-s', 'DisplayName', 'Serial MNIST');
plot(threads, omp_sift_th, '-^', 'DisplayName', 'OMP SIFT');
plot(threads, omp_mnist_th, '-d', 'DisplayName', 'OMP MNIST');
hold off;
title('OMP');
xlabel('Threads');
ylabel('Execution Time [msec]');
legend('Location', 'northeast');
grid on;
print(gcf, 'OMP_over_threads.png', '-dpng', '-r300');

% 2ο Διάγραμμα: CILK
figure;
set(gcf, 'Position', [100, 100, 1280, 720]); % Set the figure size to HD
plot(threads, ser_sift_threads, '-o', 'DisplayName', 'Serial SIFT');
hold on;
plot(threads, ser_mnist_ser_threads, '-s', 'DisplayName', 'Serial MNIST');
plot(threads, cilk_sift_th, '-^', 'DisplayName', 'CILK SIFT');
plot(threads, cilk_mnist_th, '-d', 'DisplayName', 'CILK MNIST');
hold off;
title('CILK');
xlabel('Threads');
ylabel('Execution Time [msec]');
legend('Location', 'northeast');
grid on;
print(gcf, 'CILK_over_threads.png', '-dpng', '-r300');

% 3ο Διάγραμμα: Pthreads
figure;
set(gcf, 'Position', [100, 100, 1280, 720]); % Set the figure size to HD
plot(threads, ser_sift_threads, '-o', 'DisplayName', 'Serial SIFT');
hold on;
plot(threads, ser_mnist_ser_threads, '-s', 'DisplayName', 'Serial MNIST');
plot(threads, pth_sift_th, '-^', 'DisplayName', 'Pthreads SIFT');
plot(threads, pth_mnist_th, '-d', 'DisplayName', 'Pthreads MNIST');
hold off;
title('Pthreads');
xlabel('Threads');
ylabel('Execution Time [msec]');
legend('Location', 'northeast');
grid on;
print(gcf, 'Pthreads_over_threads.png', '-dpng', '-r300');

