Skip to content

Latest commit

 

History

History
67 lines (45 loc) · 2.69 KB

CFUPlayground.md

File metadata and controls

67 lines (45 loc) · 2.69 KB

CFU Playground

CFU Playground is a full-stack open-source framework for TinyML Acceleration. The tool enables users to rapidly design and prototype tightly coupled accelerators and explore novel design space tradeoffs between CPU and accelerator.

Installing CFU Playground

From the repository root, run the following script:

./install_sim cfu

Run Training Scripts

Run the required script in the arch-gym conda environment. These scripts are present in sims/CFU-Playground:

  • Random Walker: python train_randomwalker_CFUPlayground.py

  • Random Search: python train_randomsearch_CFUPlayground.py

  • Quasi Random: python train_quasirandom_CFUPlayground.py

  • Grid Search: python train_gridsearch_CFUPlayground.py

  • NSGA2: python train_NSGA2_CFUPlayground.py

  • EMUKIT_GP: python train_EMUKIT_GP_CFUPlayground.py

Configuration options

There are various workloads available to train for in CFU Playground:

  • micro_speech, magic_wand, mnv2, hps, mlcommons_tiny_v01_amond, mlcommons_tiny_v01_imgc, mlcommons_tiny_v01_kws, mlcommons_tiny_v01_vww

There are also the following embench workloads available:

  • primecount, minver, aha_mont64, crc_32, cubic, edn, huffbench, matmul, md5, nbody, nettle_aes, nettle_sha256, nsichneu, picojpeg, qrduino, slre, st, statemate, tarfind, ud, wikisort

To update various parameters such as workload, num_steps, reward_formulation for the training scripts, follow these steps:

python training_script.py --parameter=value
Script Parameter Values default
workload any of the workloads listed above micro_speech
num_steps any integer 1
traject_dir directory name (relative to sims/CFU-Playground) <training algorithm name>_trajectories
use_envlogger boolean True
reward_formulation both, cells, cycles both

Design Space

Currently, CFU-Playground allows the exploration of the following design space:

System Parameter Values
Bypass True, False
Branch Prediction None, Static, Dynamic, Dynamic Target
Instruction Cache Size 0-16KiB
Data Cache Size 0-16KiB
Hardware Multiplier True, False
Hardware Divider True, False
Single Cycle Multiplier True, False
Single Cycle Shifter True, False
Safe True, False