https://github.com/matteoldani/asl-2022
Advanced System Laboratory project
https://github.com/matteoldani/asl-2022
Last synced: 3 months ago
JSON representation
Advanced System Laboratory project
- Host: GitHub
- URL: https://github.com/matteoldani/asl-2022
- Owner: matteoldani
- Created: 2022-09-16T07:27:02.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2022-09-16T07:49:35.000Z (over 2 years ago)
- Last Synced: 2025-01-21T01:15:04.096Z (4 months ago)
- Language: C
- Size: 19.7 MB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Avanced Systenm Lab - 2022
This repo contains the code for the Advanced System Lab course held @ ETHZ
## Goal
Optimize the Non-Negative Matrix Factorization with multiplicative updates algorithm proposed by Lee and Seung. The optimization is done
based on the given configuration and uses AVX2 instructions.## Team
- Daniele Coppola [email protected]
- Viktor Gsteiger [email protected] (18-054-700)
- Masa Nesic [email protected]
- Matteo Oldani [email protected]## Content
[[_TOC_]]
## Configuration:
The code in this repository has been developed for the following system configuration. We suggest using the same or a
similar configuration to achieve comparable results.- CPU: Intel(R) Core(TM) i5-6600K CPU @ 3.50GHz
- L1d cache: 128 KiB
- L1i cache: 128 KiB
- L2 cache: 1 MiB
- L3 cache: 6 MiB
- DRAM: 16 GB DDR4 @ 2133 MT/s (2 x 8 GB)NOTE: Turbo boost has been disabled.
## Installation:
The codebase requires the prior installation of either [OpenBLAS](https://www.openblas.net/)
or [Intel MKL](https://www.intel.com/content/www/us/en/developer/tools/oneapi/onemkl-link-line-advisor.html#gs.zo0tex) (
can be installed with `sudo apt install intel-mkl` on Linux).Other than that the codebase does not require any other installations.
## Operating Instructions:
The operating of the codebase is relatively straightforward thanks to the makefile included in the `/code` folder. The
different parts of the code can be compiled using different commands in the makefile. Following we explain the commands
that can be used:- `basline`: Compile and link the baseline implementations. The resulting binary can be found in `build/baseline`. The
binary can be run either with the parameters ` ` or ` ` and it
executes a test run of the baselines and returns the error of the factorization.
- `performance`: Compile and link the performance calculation. The resulting binary can be found in `build/performance`.
The binary can be run with the
parameters ` [?]` and
either returns the performance results or saves them to the provided output file.
- `roofline`: Compile and link the roofline calculation. The resulting binary can be found in `build/roofline`. The
binary can be run with the parameters ` ` and should be used
together with a roofline analyser tool such
as [Intel Advisor](https://www.intel.com/content/www/us/en/developer/tools/oneapi/advisor.html) or similar
- `tests`: Compile and link the testing and performance evaluation utility. The resulting binary can be found
in `build/tests`. The binary can be run with the following parameter `[?]` and it executes the
testing and performance evaluation. The results will be printed to the standard output where for each registered
function the test result and a cycle count will be returned.
- `optimisations`: Compile and link the created optimisations. The resulting binary can be found
in `build/optimisations`. This does not include a main file and can therefore not be run.
- `least_square`: Compile and link the least squares NNMF implementation. The resulting binary can be found
in `build/least_square`. The binary can be run either with the following parameters ` ` or `-1`. The first
parameters will run a performance evaluation with the provided matrix sizes while the second will run a predefined
increasing matrix size evaluation for plotting.
- `clean`: Clean the repository from any binary files