# AOS-Project This repository contains the material produced and used during the development of the project for the *Advanced Operating Systems* course. ### Folder Organization The repo is structured in four main folders: - The **report** folder that contains the LaTeX source of the final report. To compile the report you can take advantage of the Makefile provided in the *source* folder. Take into account that sometimes you have to interleave the execution of *biber report* with the *make* or *pdflatex* invocation to build the bibliography for the first time. - The **utils** folder that contains scripts and hacks used for deploying/compiling/running the components of the system used for the benchmarks execution. - The **sample-results** folder that contains the raw data and collected during the development of the project (10 runs of each benchmark for each platform) and the charts created starting from them. If you want to re-analyze some results simply copy the *results* folder that contains the raw data in the *plot* folder (inside the *utils* folder) and run the *create-charts* script. - The **notes** folder that contains notes taken during the development of the project to keep track of problems and solutions, they are of not any interest for the user. ### Usage Tips You can take advantage of the Makefile present under the *utils* folder to build all the necessary components. All the components will be installed in the **build** folder in the *utils* folder. The *Makefile* provides the following targets: - **requirements**: installs the packages needed for building the other components. - **runtime**: builds and installs in the system the pocl runtime. - **power_measurement**: builds the power measurement utility. - **benchmark**: builds the benchmark suite. - **all**: compiles and deploys the components (equivalent to the previous 4 targets), but does not execute the benchmarks. - **execute_benchmarks**: executes the benchmarks for all the platforms available (invokes the OPENCL_BENCHMARK_ALL target in the benchmark folder) - **execute_benchmarks_batch**: executes the benchmarks for all the platforms available 10 times (invokes the OPENCL_BENCHMARK_ALL_BATCH target in the benchmark folder) - **create_charts**: create the charts starting from the data collected in the previous run of the benchmarks. It also copies the charts in the *charts* folder in the current path. - **execute_and_plot**: the combination of the previous two targets. - **execute_and_plot_batch**: as the previous target but executes the benchmarks 10 times. ### Rodinia Repository In addition, since placing also the benchmark source folder in this same repository would have clobbered the commit history, I opted for a separate repository dedicated to host only the work on the Rodinia benchmark suite. You can find the benchmark repository [here](https://gogs.heisenberg.ovh/andreagus/rodinia-benchmark.git). ### Power Measurement Remember to connect the *SmartPower* to an USB port of the board, an to test it as described in section 2.3 of the report.