It's a painful process to continuously switch between different versions of LLVM (including the ones built locally), set up numerous environment variables, and fix cmake when benchmarking and optimizing different AI/ML/math libraries.
Eventually, we decided to automate this process by introducing "virtual environments" for LLVM and related tools in the CK framework similar to Python virtualenv while supporting Linux, MacOS, Windows and Android. It automatically sets all necessary environment variables for
different versions of different tools natively installed on a user machine.
CK virtual environment requires minimal dependencies (just python, pip and git) and you can try it on your machine as follows (you can check CK installation guide if you have issues):
$ (sudo) pip install ck
$ ck pull repo:ck-env
$ ck detect soft --tags=compiler,llvm
CK will search for all installed clang instances on your machine (including Microsoft Visual Studio dependency on Windows) and will ask you which one to register for the CK virtual environment. You can then repeat this process and register multiple versions you use for testing. You can then see all registered virtual environments as follows:
$ ck show envor
$ ck show env --tags=compiler,llvm
Now you can start a specific virtual environment as follows:
$ ck virtual env --tags=compiler,llvm
CK will set up PATH, LD_LIBRARY_PATH and other variables to point to a specific clang version, and will start bash on Linux/MacOS or shell on Windows. You can then use different environment variable specific to a given Clang instance and starting from CK_ in your own scripts:
$ export | grep "CK_"
We also added the possibility to install pre-built versions of LLVM on different platforms using CK packages and automatically register CK virtual environment:
$ ck search package --tags=compiler,llvm
$ ck install package --tags=compiler,llvm,v6.0.0
$ ck show env --tags=compiler,llvm
$ ck virtual env --tags=compiler,llvm,v6.0.0
> ${CK_CC_FULL_PATH} --version
or
> %CK_CC_FULL_PATH% --version
Finally, you can also rebuild LLVM from a trunk and again automatically register it in the CK virtual environment:
$ ck install package --tags=compiler,llvm,vtrunk
You can find other software which you can automatically detect and register in the CK virtual environment using CK plugins in this online list.
If you are interested to know more about this and other CK functionality, please check the "CK getting started guide" or feel free to get in touch with the CK community!
News from dividiti.com about automatically selecting, optimizing and co-designing most efficient software/hardware stacks for emerging AI, ML and quantum workloads in terms of speed, accuracy, energy, size and costs using our open-source Collective Knowledge technology. Read success stories from our partners about dramatically accelerating their Research and Development, while reducing its risk and costs.
Monday, 23 July 2018
Thursday, 8 February 2018
ACM ReQuEST: 1st open and reproducible tournament to co-design Pareto-efficient deep learning (speed, accuracy, energy, size, costs)
The
first Reproducible Quality-Efficient Systems Tournament (ReQuEST) will
debut at ASPLOS’18 ( ACM conference on Architectural Support for
Programming Languages and Operating Systems, which is the premier forum
for multidisciplinary systems research spanning computer architecture
and hardware, programming languages and compilers, operating systems and
networking).
Organized
by a consortium of leading universities (Washington, Cornell, Toronto,
Cambridge, EPFL) and the cTuning foundation, ReQuEST aims to provide a
open-source tournament framework, a common experimental methodology and
an open repository for continuous evaluation and multi-objective
optimization of the quality vs. efficiency Pareto optimality of a wide
range of real-world applications, models and libraries across the whole
software/hardware stack.
ReQuEST will use the established artifact evaluation methodology together with the Collective Knowledge framework
validated at leading ACM/IEEE conferences to reproduce results, display
them on a live dashboard and share artifacts with the community.
Distinguished entries will be presented at the associated workshop and
published in the ACM Digital Library.
To win, the results of an entry do not necessarily have to lie on the
Pareto frontier, as an entry can be also praised for its originality,
reproducibility, adaptability, scalability, portability, ease of use,
etc.
The
first ReQuEST competition will focus on deep learning for image
recognition with an ambitious long-term goal to build a public
repository of portable and customizable “plug&play” AI/ML algorithms optimized across diverse data sets, models and platforms from IoT to
supercomputers (see live demo). Future competitions will consider other emerging
workloads, as suggested by our Industrial Advisory Board.
For more information, please visit http://cKnowledge.org/request
Subscribe to:
Posts (Atom)