Things to do.
Predictable caching to do list
The place where everything else (not mentioned, or linked to under work-in-progress)
is held.
- Language & general compiler
- Cajoule strings for code generation to allow better optimisation. (working
out more accurate number of free registers to allocate).
- Symbol code generation -- look for address constants already in registers.
- Simple strength reduction
- PAR statement in the language
- Dynamic memory
- User defined types
- Partitioning
- Extend re-using partitions e.g.
- Inheriting partitions from parent procedures (hard?)
- In-procedure re-use (or do we just say that the programmer should write it in
sub-procedures and the current re-use semantics will take care of it).
- Machine
- PAR statement semantics -- fork/join/context stuff
- Shared memory effects.
- Caching
- Dynamic memory etc
- pointers, malloc, partitioning
- print pointer
- Experiments
- Simulate huge caches
- Line size experiments
- Multimedia kernels
- Write survey paper
- Prediction of performance
- Take basic period stuff, turn into persistence of each stride.
- Then persistence with windows of execution (multiple same strides,
with different starting points).
- Period & persistence with words per line as parameter.
- P&P with stride of cache as parameter.
- P&P when strides of parameters are complex (nested loops).
- What is performance? What do we want to predict?
- What kind of performance model do we want to produce?
- Simple (computable in compiler)
- No fantasy parameters like locality or other
cosmological constants.
Wild things
- James' avoiding replacing registers with PCache, and recovering from
performance modelling/prediction.
- Dan's thorough investigation of adaptive caching, after a power nap.