Our open-source tools and data sets

In 2015, we have released a brand new open-source Collective Knowledge Framework and Repository - a small, portable and customizable research platform to quickly prototype experimental workflows (such as multi-objective autotuning) from shared components with unified JSON API; crowdsource and reproduce experiments; apply predictive analytics and enable interactive articles. It aggregates all our past developments, ideas and techniques, and can be easily extended by the community via GitHub repositories. You can easily check out, reuse and improve the following workloads/artifacts and modules shared by the community! You can also find various results from experiment crowdsourcing in the CK live repository and even participate in our AI/SW/HW co-design competitions!


Students and scientists often spend more time developing some ad-hoc tools rather then doing research due to a lack of common infrastructures and interfaces. However, rising complexity of computer systems make such approach unsustainable. Since 1996, Grigori Fursin (cTuning founder) advocated for collaborative developments of common tools with unified interfaces. However, instead of redesigning the whole infrastructure from scratch which is even more costly and time-consuming, we developed several plugin and event-based frameworks to expose various design and optimization knobs. Our approach helped easily convert existing production tools into interactive research toolsets.

The most successful example of this approach is our Interactive Compilation Interface that has been originally developed PathScale and Open64 compiler and later moved to mainline GCC (plugin framework) to allow researchers use this powerful, portable and production compiler as an interactive research toolset. We also developed various open-source repositories, program analysis and optimization tools, and run-time adaptation frameworks. Such collaborative approach allowed development of the machine learning self-tuning compiler (MILEPOST GCC/cTuning CC) that is considered by IBM to be the first in the world [P34].

Our development timeline

# Year CK Description
[S1] 2015-03 - cur. Android application "Crowdsource Experiments" to for collaborative hardware and software optimization and machine learning using Android-based mobile devices provided by volunteers
  • Released in 2016
  • Connected to public Collective Knowledge Repository [R2]
  • Associated publications [P13, P11]
  • 1st open, reproducible and Pareto efficient SW/HW co-design competition for deep learning (speed, accuracy, costs) uses CK to put ML and systems researchers on the same page and share produced artifacts as reusable, portable and customizable components (open science) [E3]
[ Program at Google Play Website ][ Related program for deep learning at Google Play Website ]
[S2] 2014-11 - cur. Collective Knowledge Framework and Repository (CK aka cTuning4, BSD-license) - Collective Knowledge (CK) is a light-weight, portable, modular and python-based framework, repository, web service and SDK to organize, describe, cross-link and share user code, data, experimental setups and meta information as unified and reusable components with JSON API via standard Git services (such as GITHUB or BitBucket).
  • Opened to public in 2015
  • Pre-released in May, 2015 (V1.2, permissive and simplified BSD license)
  • Partially funded by EU FP7 TETRACOM 6-months grant [A4]
  • Supports our new publication model in computer engineering where all research artifacts (tools, benchmarks, datasets, models) are continuously shared and validated by the community [P14,E16,E17,E15,E12,E13]
  • Awards [A3]
  • Guest lectures [L2]
  • Associated publications [P14, P11, P15, P35, P14]
  • Associated events [E16,E17,E15,E12,E13]
  • Associated live repository [R2] - hosting in Azure is sponsored by Microsoft
  • ReQuEST: 1st open, reproducible and Pareto efficient SW/HW co-design competition for deep learning (speed, accuracy, costs) uses CK to put ML and systems researchers on the same page and share produced artifacts as reusable, portable and customizable components (open science) [E3]
[ Website ][ Partners / users ][ Use cases ][ Public repository to crowdsource optimizations ][ ACM project to integrate CK with Digital Library funded by Sloan Foundation ][ Artifact Evaluation ][ Development GitHub Website ][ Documentation ][ Google Group discussions ]
[S3] 2011-09 - 2013-09 Collective Mind Framework and Repository (cM aka cTuning3) - plugin-based knowledge management system to preserve, systematize and share all research, development and experimentation artifacts using private or in-house web and plugin-based, customizable, schema-free, NoSQL repository of knowledge combined with crowdsourcing and machine learning; collaborative and agile implementation and systematization of experimental scenarios combined with statistical analysis and data mining; plugin-based program and architecture autotuning and co-design combined with crowdsourcing, machine learning and run-time adaptation
  • Released in 2013 (V1.0beta, standard BSD license)
  • Partially funded by INRIA 4 year fellowship [A4]
  • Includes software [S4, S5, S6]
  • Aggregated and unified all Grigori's past research and development ideas and prototypes within new Collective Mind Framework and Repository to systematize collaborative research, development and experimentation
  • Continued new publication model in computer engineering where all research artifacts (tools, benchmarks, datasets, models) are continuously shared and validated by the community, and extended in new cM Lego-style R&D scenarios
  • Technology: easily customizable for any end-user R&D scenario through plugins; agile development methodology; NoSQL databases with JSON representation; ElasticSearch indexing; unified python plugins for web-services, autotuning, data mining and machine learning; OpenME interface to connect applications and tools written in C, C++, Fortran, PHP to cM; upport for practically any Unix and Windows-based desktops, laptops, supercomputers, cloud servers, and even tablets and mobile phones with ARM,Intel,ST,Loongson,AMD,NVidia and other chips; powerful graph capabilities
  • Publications [P17, P16, P18, P20, P21, P22]
  • Associated events [E25, E23, E27, E30]
  • Associated live repository and online advice service [R3]
[ Website ][ cM SVN download ][ cM wiki ][ New cM development tasks ][ Old cM development tasks ][ cM Google Group discussions ]
[S4] 2011-09 - cur. OpenME event-based plugin framework and unified interface to making rigid, hardwired applications and tools interactive, tunable and adaptive
  • Released in 2013
  • Technology: C, C++, Fortran, PHP, python event-based plugin framework
  • Included plugins to open up latest GCC and LLVM for fine-grain program analysis and autotuning, and to open up HPC applications for online tuning and adaptation on heterogeneous architectures [P17, P39]
  • Current version: 1.0beta (LGPL v2 license)
  • Associated publications [P17, P16, P18, P20, P21, P22]
[ Website ]
[S5] 2011-09 - cur. Alchemist plugin for fine-grain program feature extraction, decremental analysis, and optimization in GCC
  • Collaboration with STMicroelectronics [Q7, F4]
  • Pre-released in 2013
  • Current version: 1.0beta (GPL v2 license)
  • Technology: GCC dynamic plugin written in C
  • Associated publications [P17, P16, P18, P20, P21, P22]
[ Website ]
[S6] 2011-09 - cur. Android Collective Mind Node to crowdsource program and architecture characterization and multi-objective autotuning (execution time, code size, compilation time, power consumption) using any available Android-based mobile phone, tablet or laptop
  • Released in 2013
  • Connected to public Collective Mind Repository [R3]
  • Associated publications [P17, P28, P35, P37]
[ Google Play Website ]
[S7] 2010-03 - 2011-08 Colaborative Codelet Tuning Infrastructure (CTI aka cTuning2) to decompose large applications into codelets for continuous characterization and tuning
  • Collaboration with Intel, CEA, GENCI and UVSQ
  • Developed the concept based on Grigori's cTuning technology and developed first prototype with Grigori's team [Q6, Q4, Q3] as Intel Exascale Lab in-house autotuning infrastructure and repository extending cTuning1 framework and repository
  • Funded by [F5]
  • Associated job [J8]
  • More info about this activity [I2]
  • Technology: mixed MySQL and NoSQL database; customizable python, PHP and C plugin and web-based infrastructure
  • Availability: private use - after 2012 some parts developed by Grigori's team members became available under GPL v3 license
  • Discontinued for [S3]
[S8] 2010-01 - 2011-09 KDatasets to Multiple datasets for cBench [S12] (1000 per benchmark)
  • Released in 2010
  • Last version: 1.0 (GPL v2 license)
  • Funded by [F8]
  • Partially merged with Collective Mind repository [R3]
[ Website ]
[S9] 2009-01 - 2010-03 cTuning CC - machine learning based self-tuning meta-optimizer for any compiler including GCC, LLVM, ICC, etc.
  • Released in 2010
  • Last version: 2.5 (GPL v2 license)
  • Moved to Collective Mind Framework as a ctuning.compiler plugin [S3]
  • IBM press-release [P34]
[ Website ]
[S10] 2006-07 - 2009-06 MILEPOST GCC - machine learning based self-tuning compiler
  • Released in 2009
  • Last version: 2.5 (GPL v2 license)
  • Merged with cTuning CC [S9]
  • Funded by [F9]
  • Collaboration with IBM (Israel), University of Edinburgh (UK), ARC (now Synopsys, UK), CAPS Entreprise (France), and ICT (China)
  • Developed within EU FP6 MILEPOST project [J12]
  • More info about this activity [I3]
  • Associated live repository and online advice service [R5]
  • Considered by IBM to be the first practical machine-learning based compiler in the world (IBM press-release [P34])
[ Website ]
[S11] 2006-01 - 2010-03 cTuning and CCC (Continuous Collective Compilation) frameworks for collaborative user-defined program and architecture characterization, multi-objective optimization (execution time, code size, compilation time, power consumption) and co-design of computer systems using public repositories of knowledge, plugin-based autotuning, machine learning and crowdsourcing
  • Released in 2008
  • Current version: 2.5 (GPL v2 license)
  • Collaboration with IBM (Israel), University of Edinburgh (UK), ARC (now Synopsys, UK), CAPS Entreprise (France), and ICT (China)
  • Developed within EU FP6 MILEPOST project [J12]
  • More info about this activity [I3]
  • Technology: mixed MySQL and NoSQL database; customizable PHP,C,C++ plugin and web-based infrastructure
  • Discontinued for [S3]
  • IBM press-release [P34]
[ Development website ][ Tools ]
[S12] 2006-01 - 2010-03 cBench (Collective Benchmark) to unify and systematize benchmarking with multiple datasets for realistic and collaborative program and architecture autotuning and co-design combined with machine learning; unify training and tuning of MILEPOST GCC []; enable research on split compilation []
  • Released in 2008
  • Last version: 1.1 (GPL v2 license)
  • Discontinued and merged with Collective Mind repository [R3]
[ Website ]
[S13] 2006-01 - 2010-03 cDatasets (Collective Datasets) to multiple datasets for cBench [S12] (20..100 per benchmark)
  • Released in 2008
  • Last version: 1.1 (GPL v2 license)
  • Discontinued and merged with Collective Mind repository [R3]
[ Website ]
[S14] 2004-10 - 2010-03 UNIDAPT - universal plugin-based program run-time adaptation framework
  • Software support for Grigori's technique for split compilation (to dynamic optimization and adaptation for statically compiled programs using multi-versioning and light run-time adaptation mechanisms) [P57, P45]
  • Supports predictive scheduling for heterogeneous architectures [P39] and adaptive libraries combined with automatically built run-time decision trees [P37]
  • Funded by [A8, F6]
  • Publications [P57, P39, P37, P48, P45, P38, P35, P32, P28, P17]
  • Finalized in mainline GCC 4.8 in 2012
  • Prepared for mainline GCC during Google Summer of Code program in 2009 [F6]
  • Redesigned and unified in [S4]
[ Website ][ GCC multi-versioning description ]
[S15] 2004-06 - 2006-06 Framework for Continuous Optimization (FCO)
  • Released in 2006
  • Licence: GPL v2
  • Collaboration with Institute of Computing Technology (China) to tune applications and compilers for LoongSon and Godson processors [F8, J9]
  • Discontinued for S11
[ Old description ][ Framework with ICI for Open64 compiler ][ Framework with ICI for PathScale compiler ]
[S16] 2004-06 - 2004-12 Code, data and experiment sharing tool to decentralize collection of huge amount of experiments during tuning GCC optimization heuristic
  • I started implementing a plugin framework and a plugin for GCC to transparently tune optimization heuristic and embed special function to collect run-time info about behavior of real programs and data sets in real environments from multiple users. Originally, I connected my framework to MySQL database, but it could not cope with huge amount of data. Therefore, I tried to implement another solution - sharing best optimizations/speedups via P2P networks such as overnet, bittorent and edonkey. Unfortunately, the solution became rather complex and unstable due to a lack of stable and universally acceptable P2P tools. So, I had to move back to MySQL database in the EU FP6 MILEPOST project [S10]. However, I later implemented my own P2P sharing mechanism with noSQL Hadoop-based repository in [S2, S3] while investigating capabilities of new third-party P2P tools.
[S17] 2004-06 - 2009-06 Interactive Compilation Interface (ICI) to open up production compilers (GCC, Open64, PathScale, etc.) through light-weight event-based plugin framework and transform them into powerful interactive research toolsets
  • Publications [P57, P54, P50, P39, P37, P32, P31, P26, P28, P17]
  • Released in 2006; Merged with mainline GCC in 2009 [F6]
  • Last version: 2.5 (GPL v2 license)
  • Redesigned and unified in [S4]
[ Website ]
[S18] 1999-02 - 2006-06 Source-to-source polyhedral transformation server - source-to-source C and Fortran polyhedral transformation server based on MARS compiler
  • First released in 2001
  • Developed during EU FP5 MHAOTEU project [F6] and PhD studies [Z6]
  • Last version: V1.15i (GPL v2 license)
  • Used in first experiments to predict complex optimizations (not just 1 transformation) using machine learning and program semantic and dynamic features (hardware counters)
  • Discontinued for compilers with Interactive Compilation Interface or OpenME [S15, S17, S4]
[ Description ] [Source-to-source transformation server V1.15i for SPARC (~3.9Mb) from CK / cM] [Source-to-source transformation server V1.15i for x86 (~1.2Mb) from CK / cM] [EOS hill-climbing autotuning example (padding, tiling, unrolling) (jpg) from CK / cM]
[S19] 1999-02 - 2006-06 Edinburgh Optimizing Software (EOS) - plugin-based client-server program and architecture characterization and autotuning framework
  • Released in 2001
  • Uses source-to-source C and Fortran polyhedral transformation server based on MARS compiler [S18]
  • Developed during EU FP5 MHAOTEU project [F6] and PhD studies [Z6]
  • Last version: V2.2 (GPL v2 license)
  • Technology: NoSQL based database; java and C plugins; socket communication between modules; java based GUI
  • Included plugins for program memory/CPU characterization through semantically non-equivalent assembler/binary patching [P63, P62, P59, P58, P29]; own source-to-source compiler; fine-grain autotuning plugins (unrolling, array padding) with partial polyhedral optimization support (tiling, fusion/fission, vectorization)
  • Used in first experiments to predict complex optimizations (not just 1 transformation) using machine learning and program semantic and dynamic features (hardware counters)
  • Discontinued for S15 and later for S11
[ Description ] [Download tar.gz package (~6Mb) from CK / cM] [Screenshot (gif) from CK / cM] [EOS architecture (gif) from CK / cM] [EOS hill-climbing autotuning example (padding, tiling, unrolling) (jpg) from CK / cM]
[S20] 1997-06 - 1999-02 SuperComputer Service (SCS) - framework to provide and unify remote access to high-performance computing systems for non-specialists as a simple web service
  • Released in 1999
  • Last version: V1.3 (GPL license)
  • Technology: MySQL based database; java, perl, C, Visual Basic, Visual C modules; standard http/ftp communication; web-based GUI
  • Used to simplify execution of Grigori's neural network modelling software on distributed and varying HPC resources
  • Publications [P67, P68, P69, P70]
  • Repository [R8]
  • Partially funded by [A11, J23]
  • Discontinued for S19
[Download tar.bz2 package (~10Mb) from CK / cM] [Shapshot 1 (png) from CK / cM] [Shapshot 2 (png) from CK / cM] [Shapshot 3 (png) from CK / cM] [Shapshot 4 (png) from CK / cM]
[S21] 1993-02 - 1999-02 Semiconductor Brain - semiconductor and modelled neural networks with Grigori's own ADC/DAC PC board and analysis software
  • Released in 1997
  • Last version: V2.1 (GPL license)
  • Works with special hardware (ADC/DAC board): [H1]
  • Validated by improving recognition and restoration of characters by neural network in noised environments
  • Technology: Visual Basic and assembler; PSpise analog circuit and digital logic simulation software; MPI for HPC
  • Partially funded by [A11, J23]
  • Publications [P68, P69, P70]
  • Repository [R8]
  • Due to very slow simulation and limiation of semiconducor technology decided to switch to program and architecture optimization to eventually enable fast and low-power neural networks and machine learning
[Download seminconductor neural elements measurement software (ECT) for DOS (~200Kb) from CK / cM] [Download seminconductor neural elements measurement software (ECT) for Windows (~1.6Mb) from CK / cM] [Download sources of the seminconductor neural elements measurement software (ECT) for Windows (~300Kb) from CK / cM] [Shapshot 1 (jpg) from CK / cM] [Shapshot 2 (jpg) from CK / cM]
[S22] 1991-08 - 1991-08 Productivity tool to automatically pack files to remote and removable disks with limited space using fast and random strategy instead of greedy one
  • My first autotuning experience - at that time, we had removable disks with only 360Kb, and it was extremely challenging to archive files on multiple disks. As a practical solution, I created a tool that checked free space on all disks and size of all files to randomly find the best packing strategy (within amount of time specified by a user). Interestingly, it worked as good as a greedy algorithm but about an order of magnitude faster which was important on very slow computers of that time. This was my first successful autotuning experience that I reused in all my further research.

Misc links