-
Notifications
You must be signed in to change notification settings - Fork 0
Motivation
Motivation
Are you an individual researcher or organization performing many experiments on a regular basis? You may find the Collective Knowledge framework (CK) useful if you suffer from one or more of the following problems:
- instead of innovating, you spend weeks and months preparing
- you have trouble sharing whole experimental workflows
- you have trouble managing and reusing your own scripts, tools,
- you have trouble retrieving data from your own or someone else's
- you spend lots of time updating your reports and papers whenever
- you do not have enough realistic workloads, benchmarks and data sets
- you face the ever increasing number of experimental choices
- you accumulate vast amounts of raw experimental data but do not
- you want to extract knowledge from raw data in form of models
- your organization pays dearly for its computational needs
Over the past 15 years, we have suffered from all the above problems, which intolerably slowed down our own research (on developing faster, smaller, more energy efficient and reliable computer systems via multi-objective autotuning, machine learning and run-time adaptation). Eventually, we have realized that the above problems can only be tackled collaboratively by bringing together an interdisciplinary community.
Hence, we designed Collective Knowledge (CK) as just a small and highly customizable Python wrapper framework with a unified JSON API, command line, web services and meta-descriptions. This allows researchers gradually warp and glue together any existing software, hardware and data, share and reuse wrappers via Git, unify information flow between them, quickly prototype experimental workflows from shared artifacts, apply predictive analytics and enable interactive articles.
CK is an open-source (under permissive license), lightweight (< 1 MB) and very portable research SDK. It has minimal dependencies and simple interfaces with software written in C, C++, Fortran, Java, PHP and other languages. Please, check out CK documentation and Getting Started Guide for more details: http://github.com/ctuning/ck/wiki
Though seemingly simple, such agile approach already proved to be powerful enough to help scientists and research engineers:
- abstract and unify access to their software, hardware and data
- provide a simple and user-friendly directory structure
- quickly prototype research ideas from shared components
- easily share CK repositories with whole experimental
- speed up search across all your local artifacts by JSON
- involve the community or workgroups to share realistic
- reproduce empirical experimental results in a different environment
- use built-in CK web server to view interactive graphs
- obtain help from an interdisciplinary community to explain
- simplify the use of statistical analysis and predictive
For example, our colleagues successfully use CK to accelerate computer systems' research and tackle issues known and unsolved for more than 15 years. They started practically enabling customizable, extensible and multi-objective software/hardware optimization, run-time adaptation and co-design as a CK experimental workflow shared via GitHub. The community can now gradually expose various tuning choices (algorithm and OpenCL/CUDA/MPI parameters, compiler flags, polyhedral transformations, CPU/GPU frequency, etc) and objectives (execution time, code size, compilation time, energy, processors size, accuracy, reliability) . The community can also reuse shared autotuning and machine learning plugins to speed up exploration of large and non-linear optimization spaces and even enable run-time adaptation (self-tuning computer systems).
For example, check out public GCC/LLVM optimization results of various shared workloads across diverse hardware including mobile devices provided by volunteers:
- http://cTuning.org/crowd-results
- https://play.google.com/store/apps/details?id=openscience.crowdsource.experiments
Furthermore, our colleagues have managed to speed up their real-world applications across latest platforms (from mobile phones to cloud servers) by 10x with the same numerical accuracy, reduce energy by 30% and code size by 50%. Furthermore, such CK templates can be easily reused in other research scenarios while allowing students and researchers start new experiments or reproduce others' results in minutes rather than days and weeks, as described here:
- http://cknowledge.org/interactive-report
- http://github.com/ctuning/ck/wiki/Getting_started_guide_example_slambench
- https://github.com/ctuning/ck/wiki/Getting_started_guide_clsmith
- http:/github.com/ctuning/ck-autotuning
- http:/github.com/ctuning/reproduce-pamela-project
- http:/github.com/ctuning/reproduce-carp-project
- https://github.com/dividiti/gemmbench
Our long-term mission is to help the research community dramatically accelerate knowledge discovery via open, agile, collaborative and reproducible research, experimentation and knowledge sharing while keeping it as simple as GitHub and Wikipedia - do join us!
For more details, please see our recent vision paper at DATE'16, ADAPT workshop, artifact sharing and evaluation initiative for computer systems' conferences, live demo with the CK-based reproducible and interactive articles, and ARM's testimonials about CK:
- http://bit.ly/ck-date16
- http://cTuning.org/ae
- http://adapt-workshop.org
- http://cknowledge.org/repo
- http://es.iet.unipi.it/tetracom/content/index.php/impacts
CK development is coordinated by the non-profit cTuning foundation and dividiti