Add outline for software optimisation

This commit is contained in:
Hugo Mårdbrink 2024-03-30 23:12:02 +01:00
parent c493857e6c
commit 29b5365918

View file

@ -67,12 +67,15 @@ For the initial and naive software implementation, some hardware configurations
- L1 instruction cache size: 16kB
- L1 data cache size: 64kB
- L2 cache size: 256kB
- Vector length: 256
- Element length: 64
- Number of threads: 1
- Vector length: 256 bits
- Element length: 64 bits
- Number of cores & threads: 1
- L1 cache associativity: 2
- L2 cache associativity: 8
These are by no means optimal configurations, but to find the optimal, we need to first optimise the software implementation.
Making these configurations good enough as a baseline.
### Constants and definitions
Throughout the code, several constants and definitions are defined for ease to try different configurations. These are defined in the following way:
- `DCT_SIZE` is the size of the DCT block
@ -135,5 +138,11 @@ void dct_2d(element_t** matrix_in, element_t** matrix_out) {
}
```
### Software optimisations
## Compile time constants
## Flattening arrays and loops
## Vectorisation
## Changing data types
## Compiler optimisations