doc.tex (4252B)
1 \documentclass{article} 2 \usepackage[utf8]{inputenc} 3 \usepackage[greek,english]{babel} 4 \usepackage{alphabeta} 5 \usepackage{fancyhdr} 6 \usepackage{listings} 7 \usepackage{mathtools} 8 \usepackage{xcolor} 9 \usepackage{biblatex} 10 \usepackage[left=1cm,right=1cm]{geometry} 11 12 \lstset { 13 basicstyle=\ttfamily, 14 columns=fullflexible, 15 breaklines=true, 16 keepspaces=true, 17 showstringspaces=false 18 } 19 20 \title{Εργαστήριο Παράλληλων Συστημάτων - Εργασία 1} 21 \author{Χρήστος Μαργιώλης} 22 \date{Δεκέμβριος 2022} 23 24 \begin{document} 25 26 \begin{titlepage} 27 \maketitle 28 \end{titlepage} 29 30 \renewcommand{\contentsname}{Περιεχόμενα} 31 \tableofcontents 32 \pagebreak 33 34 \section{Κώδικας} 35 36 Ο κώδικας έχει σχόλια μόνο στα σημεία που θεώρησα ότι μπορεί να προκύψει κάποιο 37 «μπέρδεμα». 38 39 \lstinputlisting[language=C]{ex1.c} 40 41 \section{Προβλήματα} 42 43 Δεν κατάφερα να υλοποιήσω τον υπολογισμό του ελάχιστο με χρήση αλγορίθμου 44 δυαδικού δέντρου (ερώτημα d2.2). 45 46 \section{Βοηθητικό script} 47 48 \lstinputlisting[language=sh]{randinput} 49 50 Το script \lstinline{randinput} (δεν τρέχει σε Windows) δέχεται ως είσοδο τον 51 αριθμό των νημάτων, καθώς και το $N$. Στην συνέχεια τυπώνει (με την 52 συγκεκριμένη σειρά) τον αριθμό των νημάτων, το $N$, και $N$ τυχαίους αριθμούς. 53 Αυτό είναι χρήσιμο στο να μπορούμε να κάνουμε δοκιμές με διαφορετικά δεδομένα 54 (ειδικά για μεγάλες τιμές $N$) χωρίς να πρέπει να δώσουμε τα δεδομένα 55 χειροκίνητα. 56 57 Η χρήση του script έχει ως εξής: 58 59 \begin{lstlisting} 60 usage: randinput nthreads N 61 \end{lstlisting} 62 63 Παρακάτω φαίνεται μία ενδεικτική χρήση: 64 65 \begin{lstlisting} 66 $ ./randinput 2 3 67 2 68 3 69 8 70 0 71 1 72 5 73 1 74 2 75 0 76 4 77 8 78 \end{lstlisting} 79 80 'Αρα έχουμε 2 νήματα, έναν πίνακα $3x3$, τα στοιχεία του οποίου είναι: 81 \[[[8, 0, 1], [5, 1, 2], [0, 4, 8]]\] 82 83 Τώρα, μπορούμε να διοχετεύσουμε την έξοδο του script σε ένα αρχείο και να το 84 δώσουμε ως είσοδο στο κύριο πρόγραμμα: 85 86 \begin{lstlisting} 87 ./randinput 2 3 > input.txt 88 \end{lstlisting} 89 90 \section{Ενδεικτικά τρεξίματα} 91 92 \textit{Σημειώνεται ότι το πρόγραμμα τρέχει κανονικά και χωρίς αρχείο για είσοδο.} 93 94 Για 2 threads και $A = 4x4$: 95 96 \includegraphics[width=\textwidth]{res/run1.png} \\ 97 98 Για 4 threads και $A = 10x10$: 99 100 \includegraphics{res/run2.png} \\ 101 102 Για 3 threads και $A = 100x100$. Παρατηρούμε ότι το συγκεκριμένο τρέξιμο 103 είχε δεδομένα τέτοια ώστε να μην πληρείται η προϋπόθεση του να είναι ο πίνακας 104 αυστηρά διαγώνια δεσπόζων: 105 106 \includegraphics[width=\textwidth]{res/run3.png} \\ 107 108 Στα παρακάτω τρεξίματα ο πίνακας θα είναι $1000x1000$, θα έχει τα ίδια 109 στοιχεία, αλλά κάθε τρέξιμο θα έχει διαφορετικό αριθμό threads, ωστέ να 110 παρατηρήσουμε τις διαφορές στην ταχύτητα εκτέλεσης του προγράμματος ανάλογα με 111 τον αριθμό των threads. 112 113 Παρατηρούμε ότι όταν τα threads είναι περισσότερα από 1, η ταχύτητα εκτέλεσης 114 σχεδόν υποδιπλασιάζεται. 115 116 Για 1 thread: 117 118 \includegraphics[width=\textwidth]{res/run4.png} \\ 119 120 Για 2 threads: 121 122 \includegraphics[width=\textwidth]{res/run5.png} \\ 123 124 Για 3 threads: 125 126 \includegraphics[width=\textwidth]{res/run6.png} \\ 127 128 Για 4 threads: 129 130 \includegraphics[width=\textwidth]{res/run7.png} \\ 131 132 \end{document}