to crowdsource multi-objective GCC/LLVM compiler flag
optimization. The results shared by volunteers are continuously
updated and classified here:
If you are interested, you can participate in this collaborative
optimization in 2 ways:
a) Using small Android app to crowdsource autotuning across
mobile devices: http://cTuning.org/crowdtuning-via-mobile-devices
b) Using CK framework on your laptop, server, data center. We tried
to make it as simple as possible. You just need to do a few steps:
- Check that you have Python >= 2.7 and Git installed
- Download CK from GitHub: $ git clone http://github.com/ctuning/ck ck-master
- Point PATH variable to ck-master/bin: $ export PATH=$PWD/ck-master/bin:$PATH
- Pull all repos for crowd-tuning (one of the examples of collaborative program optimization and machine learning): $ ck pull repo:ck-crowdtuning
- Start interactive experiment crowdsourcing: ck crowdsource experiments
- Start non-interactive crowdtuning for LLVM compilers: $ ck crowdtune program --quiet --llvm
- Start non-interactive crowdtuning for GCC compilers: $ ck crowdtune program --quiet --gcc
you can also participate in crowdtuning via
$ ck crowdtune program --quiet --target_os=mingw-64
Our crowdtuning engine randomly picks publicly shared workloads
(benchmarks, kernels, data sets) in CK format from GitHub,
tunes them, applies Pareto filter, prunes best found optimization
solution (leave only influential flags in case of compiler crowd-tuning)
and stores results in public CK aggregator.
Workloads are available here:
This new version of our framework is still in beta phase so we would like
to apologize in advance for possible glitches.
However, we still hope it will be of some use to compiler developers
to detect and fix problems with optimization heuristics using shared
workloads, to performance engineers to reuse the pool of the top
optimizations for a given compiler/CPU, or to researchers working
on machine-learning based self-tuning computing systems.
Depending on our availability and funding, we will continue making CK
more user friendly, adding more realistic workloads and developing new
optimization scenarios (CUDA/OpenCL crowd-tuning coming soon).
We are also improving the reproducibility of shared optimization results
by fixing common autotuning pipeline (http://github.com/ctuning/ck-autotuning )
whenever there is a problem replaying a given experiment ...
If you are interested to arrange new R&D projects based on this technology
or have feedback, do not hesitate to get in touch!