Universal, customizable and multi-objective software and hardware autotuning
July 10, 2021 ยท View on GitHub
All CK components can be found at cKnowledge.io and in one GitHub repository!
This project is hosted by the cTuning foundation.
This is a CK repository for the universal, customizable, multi-dimensional and multi-objective SW/HW benchmarking, autotuning and co-design with a unified JSON API across Linux, Android, MacOS and Windows-based machines.

This repository included CK modules, actions and components for unified
- program compilation and execution (with multiple data sets)
- crowd-benchmarking
- statistical analysis of empirical results
- plugin-based autotuning
- automatic performance modeling
- static and dynamic features extraction
- learning to predict optimizations and run-time adaptation
- reproducibility of experimental results
Further info:
- Shared portable CK program workflows
- Open CK platform to publish and download stable CK components
- MLPerf crowd-benchmarking demo
- Documentation about portable CK workflows
- Related CK publications
Author
Contributors
- See the list of contributors
Shared CK modules with actions
- program
- program.output
- pipeline
- pipeline.cmd
- platform.gpgpu
- algorithm
- choice
- compiler
- dataset
- dataset.features
- program.behavior
- program.dynamic.features
- program.experiment.speedup
- program.species
- program.static.features
Installation
First install the CK framework as described here.
Then install this CK repository as follows:
$ ck pull repo:ck-autotuning
You can now browse and reuse program workflows shared at the CK portal.
Please refer to the CK online guides including CK portable workflows and the autotuning example.
Troubleshooting
- Issues with GLIBCXX_3.4.20/3.4.21 when using LLVM installed via CK: These sometimes occur on earlier Ubuntu versions (14.04) on ARM/x86. This can be fixed by upgrading to later versions of Ubuntu, or can sometimes be fixed by:
$ sudo add-apt-repository ppa:ubuntu-toolchain-r/test
$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get dist-upgrade
- Issues with libncursesw.so.6 (not found) on some older machines: It can be fixed by compiling and installing lib-ncurses with the support for wide characters. This can be done automatically via CK:
$ ck install package:lib-ncurses-6.0-root
Questions and comments
Please feel free to get in touch with the CK community if you have any questions, suggestions and comments!