Linux/MacOS:
Windows:
Coverage:
Collective Knowledge is our "swiss knife" for open, collaborative and reproducible experimentation. CK is a small, portable and customizable research SDK to
- share artifacts as reusable and indexable Python components with unified JSON API and meta information (programs, benchmarks, data sets, tools, predictive models, etc) - see Artifact Evaluation website and Reusable AI artifacts;
- automate detection or installation of all software dependencies on Linux, Windows, MacOS, Android while enabling co-existence of different versions (compilers, benchmarks, libraries, tools) for a given experimental workflow across diverse Linux, Windows and Android based platforms via CK cross-platform customizable package and environment manager;
- enable simple virtual environment for native OS packages besides Python packages;
- quickly prototype experimental workflows from shared components (such as customizable and multi-objective autotuning for DSL, OpenCL, CUDA, MPI, OpenMP and compiler flags) across diverse hardware and software (CK repo);
- crowdsource experiments across diverse hardware and workloads provided by volunteers and validate ideas or report unexpected behavior and bugs (CK repo);
- reuse and collaboratively extend JSON description of all existing platforms from IoT to supercomputers (CK repo);
- abstract access to continuously evolving software and hardware stack (CK repo);
- automate, reproduce and crowdsource empirical experiments using CK JSON-based web services (live repo);
- unify access to predictive analytics (scikit-learn, R, DNN, etc) via unified JSON API and CK web services (CK repo);
- enable reproducible and interactive articles (CK repo).
We use CK to gradually develop common API and meta for reproducible computer systems research together with the community and ACM!
Feel free to contact us if you need free help to convert your artifacts and workflows to the CK format.
- cKnowledge.org - project website with the latest news
- CK-powered and reproducible AI/SW/HW co-design competitions
- News archive
- Practical use cases
- CK-powered AI hub
- Academic and industrial partners
- Documentation including "Getting Started Guide"
- CK motivation
- Development plans
- CK-related publications
- CK-powered open research challenges
- Previous deprecated version (Collective Mind)
- CK Mailing list
@inproceedings{ck-date16,
title = {{Collective Knowledge}: towards {R\&D} sustainability},
author = {Fursin, Grigori and Lokhmotov, Anton and Plowman, Ed},
booktitle = {Proceedings of the Conference on Design, Automation and Test in Europe (DATE'16)},
year = {2016},
month = {March},
url = {https://www.researchgate.net/publication/304010295_Collective_Knowledge_Towards_RD_Sustainability}
}
- Permissive 3-clause BSD license. (See
LICENSE.txtfor more details).
- 2017: Test of time award for our ACM CGO'07 paper that led to creating CK
- 2017: ARM video about CK-powered optimization of DNN at the Embedded Vision Summit
- 2017: ACM evaluates CK technology to share experimental workflows in Digital Libraries
- 2017: CK-powered experimental workflow from the UCambridge received a distinguished artifact award at the CGO'17: GitHub, PDF, CK dashboard snapshot
- 2016: Imperial College London colleagues won HiPEAC TT award for their CK-based project to crowdsource OpenCL bug detection: GitHub;
- 2016: General Motors and dividiti use CK to crowdsource benchmarking and optimization of CAFFE: public CK repo
- 2015: ARM and the cTuning foundation use CK to accelerate computer engineering: HiPEAC Info'45 page 17, ARM TechCon'16 presentation and demo, public CK repo
- 2014: HiPEAC technology transfer award
CK development is coordinated by the cTuning foundation (non-profit research organization) and dividiti. We would like to thank the EU TETRACOM 609491 Coordination Action for initial funding, Microsoft for sponsoring hosting of a CK public repository in the Azure cloud, and all our partners for continuing support. We are also extremely grateful to all volunteers for their valuable feedback and contributions.
The minimal installation requires:
- Python 2.7 or 3.3+ (limitation is mainly due to unitests)
- Python PIP (if you would like to install CK via PIP)
- Git command line client.
On Ubuntu, you can install these dependencies via
$ apt-get install -y python python-pip git
On Windows, you can download and install these tools from the following sites:
- Git: https://git-for-windows.github.io
- Minimal Python: https://www.python.org/downloads/windows
- Anaconda scientific Python with all packages: https://www.continuum.io/downloads#_windows
You can now install a stable CK version via PIP simply as following (you may need to prefix it with "sudo" on Linux):
$ pip install ck
Alternatively, you can install a development CK version in your local user space via GIT as following:
$ git clone https://github.com/ctuning/ck.git ck
and then add CK to PATH on Linux as following:
$ export PATH=$PWD/ck/bin:$PATH
or on Windows as following:
$ set PATH={CURRENT PATH}\ck\bin;%PATH%
Further installation details can be found here.
If you would like to try CK without installing it, you can run the following Docker image:
$ docker run -it ctuning/ck
Also note that we added Docker automation to CK (to help evaluate artifacts at the conferences, share interactive and reproducible articles or crowdsource experiments for example).
Please check 'ck-docker' repository at GitHub:
$ ck show repo:ck-docker
You can download and view one of our CK-based interactive and reproducible articles as following:
$ ck pull repo:ck-docker
$ ck run docker:ck-interactive-article --browser (--sudo)
See the list of other CK-related Docker images here.
However note that the main idea behind CK is to be able to rebuild user experimental workflows natively, take advantage of the latest software environment and hardware, and enable open research via collaborative reuse and agile improvement of all shared artifacts and workflows.
See the list of real use cases by the growing CK community.
- Mailing list for open, collaborative and reproducible R&D including knowledge preservation, sharing and reuse: http://groups.google.com/group/collective-knowledge
- Mailing list for software and hardware multi-objective (performance/energy/accuracy/size/reliability/cost) benchmarking, autotuning, crowdtuning and run-time adaptation: http://groups.google.com/group/ctuning-discussions
- Public wiki with CK-powered open challenges in computer engineering: https://github.com/ctuning/ck/wiki/Research-and-development-challenges
- Grigori Fursin, cTuning foundation / dividiti
- Anton Lokhmotov, dividiti
