{"id":13700218,"url":"https://github.com/dividiti/ck-caffe","last_synced_at":"2025-05-04T18:34:41.588Z","repository":{"id":85195127,"uuid":"60531899","full_name":"dividiti/ck-caffe","owner":"dividiti","description":"Collective Knowledge workflow for Caffe to automate installation across diverse platforms and to collaboratively evaluate and optimize Caffe-based workloads across diverse hardware, software and data sets (compilers, libraries, tools, models, inputs):","archived":false,"fork":false,"pushed_at":"2019-11-06T14:17:05.000Z","size":3555,"stargazers_count":194,"open_issues_count":29,"forks_count":40,"subscribers_count":21,"default_branch":"master","last_synced_at":"2025-02-24T07:52:00.292Z","etag":null,"topics":["accuracy","android","caffe","collaborative-optimization","collective-knowledge","costs","cuda","customizable-workflows","dnn-as-a-service","dnn-optimization","json-api","linux","opencl","performance-portability","portable-package-manager","reproducible-experiments","resources","windows"],"latest_commit_sha":null,"homepage":"http://cKnowledge.org","language":"CMake","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dividiti.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGES","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":"AUTHORS","dei":null}},"created_at":"2016-06-06T13:53:26.000Z","updated_at":"2025-01-26T08:16:56.000Z","dependencies_parsed_at":"2023-05-02T22:16:29.776Z","dependency_job_id":null,"html_url":"https://github.com/dividiti/ck-caffe","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dividiti%2Fck-caffe","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dividiti%2Fck-caffe/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dividiti%2Fck-caffe/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dividiti%2Fck-caffe/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dividiti","download_url":"https://codeload.github.com/dividiti/ck-caffe/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252383105,"owners_count":21739275,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["accuracy","android","caffe","collaborative-optimization","collective-knowledge","costs","cuda","customizable-workflows","dnn-as-a-service","dnn-optimization","json-api","linux","opencl","performance-portability","portable-package-manager","reproducible-experiments","resources","windows"],"created_at":"2024-08-02T20:00:50.674Z","updated_at":"2025-05-04T18:34:36.538Z","avatar_url":"https://github.com/dividiti.png","language":"CMake","funding_links":[],"categories":["CMake"],"sub_categories":[],"readme":"[![compatibility](https://github.com/ctuning/ck-guide-images/blob/master/ck-compatible.svg)](https://github.com/ctuning/ck)\r\n[![automation](https://github.com/ctuning/ck-guide-images/blob/master/ck-artifact-automated-and-reusable.svg)](http://cTuning.org/ae)\r\n[![workflow](https://github.com/ctuning/ck-guide-images/blob/master/ck-workflow.svg)](http://cKnowledge.org)\r\n\r\n[![DOI](https://zenodo.org/badge/60531899.svg)](https://zenodo.org/badge/latestdoi/60531899)\r\n[![License](https://img.shields.io/badge/License-BSD%203--Clause-blue.svg)](https://opensource.org/licenses/BSD-3-Clause)\r\n\r\n# News\r\n\r\n* 20181205: It seems that Caffe for Android fails with the latest NDK. \r\nHowever, we checked that we can still automatically build Caffe \r\nfor Android via CK with the NDK r13b and Boost 1.64 as described \r\n[here](https://github.com/dividiti/ck-caffe/issues/141).\r\n\r\n# [cknowledge.org/ai](http://cknowledge.org/ai): Crowdsourcing benchmarking and optimisation of AI\r\n\r\nA suite of open-source tools for [collecting knowledge on optimising AI](http://bit.ly/hipeac49-ckdl):\r\n* [Android app](http://cKnowledge.org/android-apps.html)\r\n* [Desktop app](https://github.com/dividiti/ck-crowdsource-dnn-optimization)\r\n* [CK-Caffe](https://github.com/dividiti/ck-caffe)\r\n* [CK-Caffe2](https://github.com/ctuning/ck-caffe2)\r\n* [CK-TensorFlow](https://github.com/ctuning/ck-tensorflow)\r\n* [CK-MXNet](https://github.com/ctuning/ck-mxnet)\r\n* [CK-PyTorch](https://github.com/ctuning/ck-pytorch)\r\n* [CK-CNTK](https://github.com/ctuning/ck-cntk)\r\n* [CK-TinyDNN](https://github.com/ctuning/ck-tiny-dnn)\r\n* [CK-MVNC (Movidius Neural Compute Stick)](https://github.com/ctuning/ck-mvnc)\r\n* [CK-TensorRT](https://github.com/ctuning/ck-tensorrt)\r\n* [CK-KaNN](https://github.com/ctuning/ck-kann)\r\n* etc.\r\n\r\n# Collective Knowledge repository for collaboratively optimising Caffe-based designs\r\n\r\n## Introduction\r\n\r\n[CK-Caffe](https://github.com/dividiti/ck-caffe) is an open framework for\r\ncollaborative and reproducible optimisation of convolutional neural networks.\r\nIt's based on the [Caffe](http://caffe.berkeleyvision.org) framework from the\r\nBerkeley Vision and Learning Center ([BVLC](http://bvlc.eecs.berkeley.edu)) and\r\nthe [Collective Knowledge](http://cknowledge.org) framework for customizable\r\ncross-platform builds and experimental workflows with JSON API from the\r\n[cTuning Foundation](http://ctuning.org) (see CK intro for more details: [1](https://arxiv.org/abs/1506.06256),\r\n[2](https://www.researchgate.net/publication/304010295_Collective_Knowledge_Towards_RD_Sustainability) ).\r\nIn essence, CK-Caffe is an open-source suite of convenient wrappers and workflows with unified\r\nJSON API for simple and customized building, evaluation and multi-objective optimisation\r\nof various Caffe implementations (CPU, CUDA, OpenCL) across diverse platforms\r\nfrom mobile devices and IoT to supercomputers.\r\n\r\nAs outlined in our [vision](http://dx.doi.org/10.1145/2909437.2909449),\r\nwe invite the community to collaboratively design and optimize convolutional\r\nneural networks to meet the performance, accuracy and cost requirements for\r\ndeployment on a range of form factors - from sensors to self-driving cars. To\r\nthis end, CK-Caffe leverages the key capabilities of CK to crowdsource\r\nexperimentation across diverse platforms, CNN designs, optimization\r\noptions, and so on; exchange experimental data in a flexible JSON-based format;\r\nand apply leading-edge predictive analytics to extract valuable insights from\r\nthe experimental data.\r\n\r\nSee [cKnowledge.org/ai](http://cKnowledge.org/ai), \r\n[reproducible and CK-powered AI/SW/HW co-design competitions at ACM/IEEE conferences](http://cKnowledge.org/request),\r\n[shared optimization statistics](http://cKnowledge.org/repo),\r\n[reusable AI artifact in the CK format](http://cKnowledge.org/ai-artifacts)\r\nand [online demo of CK AI API with self-optimizing DNN](http://cKnowledge.org/ai/ck-api-demo) for more details.\r\n\r\n## Maintainers\r\n* Linux/MacOS: [dividiti](http://dividiti.com) - not actively maintained\r\n* Windows: currently no maintainer\r\n\r\n## Authors/contributors\r\n\r\n* Anton Lokhmotov, [dividiti](http://dividiti.com)\r\n* Unmesh Bordoloi, [General Motors](http://gm.com)\r\n* Grigori Fursin, [dividiti](http://dividiti.com) / [cTuning foundation](http://ctuning.org)\r\n* Dmitry Savenko, [Xored](http://xored.com)\r\n* Daniil Efremov, [Xored](http://xored.com)\r\n* Flavio Vella, [dividiti](http://dividiti.com)\r\n\r\n## Public benchmarking results\r\n\r\n### Comparing the accuracy of 4 models\r\n\r\nIn this [Jupyter\r\nnotebook](https://github.com/dividiti/ck-caffe/blob/master/script/explore-accuracy/explore_accuracy.20160808.ipynb),\r\nwe compare the Top-1 and Top-5 accuracy of 4 models:\r\n\r\n- [AlexNet](https://github.com/BVLC/caffe/tree/master/models/bvlc_alexnet)\r\n- [SqueezeNet 1.0](https://github.com/DeepScale/SqueezeNet/tree/master/SqueezeNet_v1.0)\r\n- [SqueezeNet 1.1](https://github.com/DeepScale/SqueezeNet/tree/master/SqueezeNet_v1.1)\r\n- [GoogleNet](https://github.com/BVLC/caffe/tree/master/models/bvlc_googlenet)\r\n\r\nThe experimental data (stored in the main CK-Caffe repository under '[experiment](https://github.com/dividiti/ck-caffe/tree/master/experiment)') essentially confirms that [SqueezeNet](https://arxiv.org/abs/1602.07360) matches (and even slightly exceeds) the accuracy of [AlexNet](https://papers.nips.cc/paper/4824-imagenet-classification-with-deep-convolutional-neural-networks.pdf) on the [ImageNet validation set](http://academictorrents.com/details/5d6d0df7ed81efd49ca99ea4737e0ae5e3a5f2e5) (50,000 images).\r\n\r\n### Comparing the performance across models and configurations\r\n\r\nWe have performed several detailed performance analysis studies across a range of platforms using CK-Caffe. The following results are publicly available:\r\n\r\n- [NVIDIA TX1](https://github.com/dividiti/ck-caffe-nvidia-tx1) ([view on github.com](https://github.com/dividiti/ck-caffe-nvidia-tx1/blob/master/script/caffe-tensorrt/ck-caffe-nvidia-tx1-with-tensorrt.20170429.ipynb); [view on nbviewer.jupyter.org](https://nbviewer.jupyter.org/github/dividiti/ck-caffe-nvidia-tx1/blob/master/script/caffe-tensorrt/ck-caffe-nvidia-tx1-with-tensorrt.20170429.ipynb?raw)): 4 models, 6 Caffe configs + 2 TensorRT 1.0 EA configs (also varying the batch size). **NB:** The Caffe results are released with approval from General Motors. The TensorRT 1.0 EA results are obtained with [CK-TensorRT](https://github.com/ctuning/ck-tensorrt) and released with approval from General Motors and NVIDIA.\r\n\r\n- [NVIDIA GTX1080](https://github.com/dividiti/ck-caffe-nvidia-gtx1080) ([view on github.com](https://github.com/dividiti/ck-caffe-nvidia-gtx1080/blob/master/script/analysis/ck-caffe-nvidia-gtx1080.20170518.ipynb); [view on nbviewer.jupyter.org](https://nbviewer.jupyter.org/github/dividiti/ck-caffe-nvidia-gtx1080/blob/master/script/analysis/ck-caffe-nvidia-gtx1080.20170518.ipynb?raw)): 4 models, 14 configs (also varying the batch size). **NB:** The Caffe results are released with approval from General Motors.\r\n\r\n- [Firefly RK3399](http://en.t-firefly.com/en/firenow/Firefly_RK3399) ([view on github.com](https://github.com/dividiti/ck-caffe-firefly-rk3399/blob/master/script/batch_size-libs-models/analysis.20170531.ipynb);\r\n[view on nbviewer.jupyter.org](https://nbviewer.jupyter.org/github/dividiti/ck-caffe-firefly-rk3399/blob/master/script/batch_size-libs-models/analysis.20170531.ipynb)): 3 models, 9 configs (also varying the batch size).\r\n\r\n- [Samsung Chromebook 2](http://www.samsung.com/us/computer/chrome-os-devices/XE503C12-K01US-specs) ([view on github.com](https://github.com/dividiti/ck-caffe-explore-batch-size-chromebook2/blob/master/script/compare-time-fw/compare_time_fw.20160809.ipynb); [view on nbviewer.jupyter.org](https://nbviewer.jupyter.org/github/dividiti/ck-caffe-explore-batch-size-chromebook2/blob/master/script/compare-time-fw/compare_time_fw.20160809.ipynb?raw)): 4 models, 4 configs (also varying the batch size).\r\n\r\n- [Samsung Chromebook 2](http://www.samsung.com/us/computer/chrome-os-devices/XE503C12-K01US-specs) ([view on github.com](https://github.com/dividiti/ck-caffe-samsung-chromebook2/blob/master/script/batch_size-openblas_threads-models/analysis.20170520.ipynb); [view on nbviewer.jupyter.org](https://nbviewer.jupyter.org/github/dividiti/ck-caffe-samsung-chromebook2/blob/master/script/batch_size-openblas_threads-models/analysis.20170520.ipynb)): 3 models, OpenBLAS v0.2.19 (also varying the batch size and the number of threads).\r\n\r\n\r\n## Quick installation on Ubuntu\r\n\r\nPlease refer to our [Installation Guide](https://github.com/dividiti/ck-caffe/wiki/Installation) for detailed instructions for Ubuntu, Gentoo, Yocto, RedHat, CentOS, Windows and Android.\r\n\r\n### Installing general dependencies\r\n\r\n```\r\n$ sudo apt install coreutils \\\r\n                   build-essential \\\r\n                   make \\\r\n                   cmake \\\r\n                   wget \\\r\n                   git \\\r\n                   python \\\r\n                   python-pip\r\n```\r\n\r\n### Installing essential Caffe dependencies\r\n```\r\n$ sudo apt install libleveldb-dev \\\r\n                   libsnappy-dev \\\r\n                   gfortran\r\n```\r\n\r\n### Installing optional Caffe dependencies\r\nCK can automatically build the following dependencies from source using versions that should work well together. Installing via `apt`, however, is somewhat faster.\r\n\r\n```\r\n$ sudo apt install libboost-all-dev \\\r\n                   libgflags-dev \\\r\n                   libgoogle-glog-dev \\\r\n                   libhdf5-serial-dev \\\r\n                   liblmdb-dev \\\r\n                   libprotobuf-dev \\\r\n                   protobuf-compiler \\\r\n                   libopencv-dev\r\n```\r\n\r\n### Installing CK\r\n\r\n\r\n```\r\n$ sudo pip install ck\r\n```\r\n\r\nSkip \"sudo\" if installing on Windows.\r\n\r\nAlternatively, you can install CK in a user space as follows:\r\n```\r\n$ git clone http://github.com/ctuning/ck ck-master\r\n$ export PATH=$PWD/ck-master/bin:$PATH\r\n$ export PYTHONPATH=$PWD/ck-master:$PYTHONPATH\r\n```\r\n\r\n### Testing CK\r\n\r\n```\r\n$ ck version\r\n```\r\n\r\nWe suggest you to configure CK to install packages to the CK virtual environment entries (env):\r\n```\r\n$ ck set kernel var.install_to_env=yes\r\n```\r\n\r\n### Installing CK-Caffe repository\r\n\r\n```\r\n$ ck pull repo:ck-caffe --url=https://github.com/dividiti/ck-caffe\r\n```\r\n\r\n### Installing CK packages\r\n\r\nVery often latest Caffe conflicts with the older protobuf version installed on a system.\r\nThat's why we suggest to install protobuf via CK before installing Caffe:\r\n```\r\n$ ck install package --tags=protobuf-host\r\n```\r\n\r\n### Building Caffe and all dependencies via CK\r\n\r\nThe first time you run caffe benchmark (on Linux or Windows), \r\nCK will build and install all missing dependencies for your machine,\r\ndownload required data sets and will start benchmark:\r\n\r\n```\r\n$ ck run program:caffe\r\n```\r\n\r\nCK may ask you to select some detected software and packages to be used for installation (when multiple choices are available).\r\nIn such cases, we suggest you to either use a default value (just press Enter) or stable (recommended) versions.\r\n\r\n### Testing installation via image classification\r\n\r\n```\r\n $ ck compile program:caffe-classification --speed\r\n $ ck run program:caffe-classification\r\n```\r\n\r\nNote that you will be asked to select a JPEG image from available CK data sets.\r\nWe have added standard demo images (`cat.jpg`, `catgrey.jpg`, `fish-bike.jpg`, `computer_mouse.jpg`)\r\nto the ['ctuning-datasets-min' repository](https://github.com/ctuning/ctuning-datasets-min).\r\n\r\nYou can list them via:\r\n```\r\n $ ck pull repo:ctuning-datasets-min\r\n $ ck search dataset --tags=dnn\r\n```\r\n\r\nYou can minimize interactive selection of multiple software dependencies by adding \"--reuse_deps\" flag during compilation, i.e.\r\n```\r\n $ ck compile program:caffe-classification --speed --reuse_deps\r\n $ ck run program:caffe-classification\r\n```\r\n\r\nIf you have Android SDK and NDK installed, you can compile and run the same classification example on your Android device \r\nconnected to a host machine via ADB as follows:\r\n\r\n```\r\n $ ck compile program:caffe-classification --speed --target_os=android21-arm64\r\n $ ck run program:caffe-classification --target_os=android21-arm64\r\n```\r\n\r\n### Participating in collaborative evaluation and optimization of various Caffe engines and models (on-going crowd-benchmarking)\r\nYou can participate in crowd-benchmarking of Caffe via:\r\n```\r\n$ ck crowdbench caffe --user={your email or ID to acknowledge contributions} --env.CK_CAFFE_BATCH_SIZE=5\r\n```\r\n\r\nDuring collaborative benchmarking, you can select various engines (which will be built on your machine)\r\nand models for evaluation.\r\n\r\nYou can also manually install additional flavours of Caffe engines across diverse hardware\r\nand OS (Linux/Windows/Android on Odroid, Raspberry Pi, ARM, Intel, AMD, NVIDIA, etc.)\r\nas described [here](https://github.com/dividiti/ck-caffe/wiki/Installation).\r\n\r\nYou can also install extra models as follows:\r\n```\r\n $ ck list package --tags=caffemodel\r\n $ ck install package:{name of above packages}\r\n```\r\n\r\nYou can even evaluate DNN engines on Android mobile devices connected via `adb` to your host machine via:\r\n\r\n```\r\n$ ck crowdbench caffe --target_os=android21-arm64 --env.CK_CAFFE_BATCH_SIZE=1\r\n```\r\n\r\nFeel free to try different batch sizes by changing command line option `--env.CK_CAFFE_BATCH_SIZE`.\r\n\r\nYou can crowd-benchmark Caffe on Windows without re-compilation,\r\ni.e. using Caffe CPU or OpenCL binaries pre-built by the CK.\r\nYou should install such binaries as follows:\r\n\r\n```\r\n $ ck install package:lib-caffe-bvlc-master-cpu-bin-win\r\n```\r\nor\r\n```\r\n $ ck install package:lib-caffe-bvlc-opencl-libdnn-viennacl-bin-win\r\n```\r\n\r\nYou can also use this [Android app](http://cKnowledge.org/android-apps.html)\r\nto crowdsource benchmarking of ARM-based Caffe libraries for image recognition.\r\n\r\nYou can see continuously aggregated results in the\r\n[public Collective Knowledge repository](http://cknowledge.org/repo/web.php?native_action=show\u0026native_module_uoa=program.optimization\u0026scenario=1eb2f50d4620903e).\r\n\r\nYou can also open this website from the command line:\r\n```\r\n $ ck browse experiment.bench.caffe\r\n```\r\n\r\n## Unifying multi-dimensional and multi-objective autotuning\r\n\r\nIt is also possible to take advantage of our [universal multi-objective CK autotuner](https://github.com/ctuning/ck/wiki/Autotuning)\r\nto optimize Caffe. As a first simple example, we added batch size tuning via CK. You can invoke it as follows:\r\n\r\n```\r\n$ ck autotune caffe\r\n```\r\n\r\nAll results will be recorded in the local CK repository and \r\nyou will be given command lines to plot graphs or replay experiments such as:\r\n```\r\n$ ck plot graph:{experiment UID}\r\n$ ck replay experiment:{experiment UID} --point={specific optimization point}\r\n```\r\n\r\n## Unifying AI API\r\n\r\nCK allows us to unify AI interfaces while collaboratively optimizing underneath engines.\r\nFor example, we added similar support to install, use and evaluate \r\n[Caffe2](https://github.com/ctuning/ck-caffe2) and [TensorFlow](https://github.com/ctuning/ck-tensorflow) via CK:\r\n\r\n```\r\n$ ck pull repo:ck-caffe2\r\n$ ck pull repo:ck-tensorflow\r\n\r\n$ ck install package:lib-caffe2-master-eigen-cpu-universal --env.CAFFE_BUILD_PYTHON=ON\r\n$ ck install package:lib-tensorflow-1.1.0-cpu\r\n$ ck install package:lib-tensorflow-1.1.0-cuda\r\n\r\n$ ck run program:caffe2 --cmd_key=classify\r\n$ ck run program:tensorflow --cmd_key=classify\r\n\r\n$ ck crowdbench caffe2 --env.BATCH_SIZE=5 --user=i_want_to_ack_my_contribution\r\n$ ck crowdbench tensorflow --env.BATCH_SIZE=5 --user=i_want_to_ack_my_contribution\r\n\r\n$ ck autotune caffe2\r\n$ ck autotune tensorflow\r\n```\r\n### Creating dataset subsets\r\n\r\nThe ILSVRC2012 validation dataset contains 50K images. For quick experiments,\r\nyou can create a subset of this dataset, as follows. Run:\r\n\r\n```\r\n$ ck install package:imagenet-2012-val-lmdb-256\r\n```\r\n\r\nWhen prompted, enter the number of images to convert to LMDB, say, `N` = 100.\r\nThe first `N` images will be taken.\r\n\r\n### Creating realistic/representative training sets\r\n\r\nWe provided an option in all our AI crowd-tuning tools to let the community report \r\nand share mispredictions (images, correct label and wrong misprediction) \r\nto gradually and collaboratively build realistic data/training sets:\r\n* [Public repository (see \"mispredictions and unexpected behavior)](http://cknowledge.org/repo/web.php?action=index\u0026module_uoa=wfe\u0026native_action=show\u0026native_module_uoa=program.optimization)\r\n* [Misclassified images via CK-based AI web-service](http://cknowledge.org/repo/web.php?action=index\u0026module_uoa=wfe\u0026native_action=show\u0026native_module_uoa=program.optimization)\r\n\r\n### Customizing caffe benchmarking via CK command line\r\n\r\nYou can customize various Caffe parameters such as batch size and iterations via CK command line:\r\n\r\n```\r\n$ ck run program:caffe --env.CK_CAFFE_BATCH_SIZE=1 --env.CK_CAFFE_ITERATIONS=10\r\n```\r\n\r\n### Installing CK on Windows, Android and various flavours of Linux\r\n\r\nYou can find details about CK-Caffe installation for Windows, various flavours\r\nof Linux and Android [here](http://github.com/dividiti/ck-caffe/wiki/Installation).\r\n\r\n## Online demo of a unified CK-AI API\r\n\r\n* [Simple demo](http://cknowledge.org/repo/web.php?template=ck-ai-basic) to classify images with\r\ncontinuous optimization of DNN engines underneath, sharing of mispredictions and creation of a community training set;\r\nand to predict compiler optimizations based on program features.\r\n\r\n\r\n## Next steps\r\n\r\nCK-Caffe is part of an ambitious long-term and community-driven\r\nproject to enable collaborative and systematic optimization\r\nof realistic workloads across diverse hardware\r\nin terms of performance, energy usage, accuracy, reliability,\r\nhardware price and other costs\r\n([ARM TechCon'16 talk and demo](https://github.com/ctuning/ck/wiki/Demo-ARM-TechCon'16),\r\n[DATE'16](http://tinyurl.com/zyupd5v),\r\n[CPC'15](http://arxiv.org/abs/1506.06256)).\r\n\r\nWe are working with the community to unify and crowdsource performance analysis\r\nand tuning of various DNN frameworks (or any representative workloads)\r\nusing Collective Knowledge Technology:\r\n* [CK-TensorFlow](https://github.com/dividiti/ck-tensorflow)\r\n* [CK-Caffe2](https://github.com/ctuning/ck-caffe2)\r\n* [Android app for DNN crowd-benchmarking and crowd-tuning](http://cKnowledge.org/android-apps.html)\r\n* [CK-powered ARM workload automation](https://github.com/ctuning/ck-wa)\r\n\r\nWe continue to gradually expose various design and optimization\r\nchoices including full parameterization of existing models.\r\n\r\n## Open R\u0026D challenges\r\n\r\nWe use crowd-benchmarking and crowd-tuning of such realistic workloads across diverse hardware for\r\n[open academic and industrial R\u0026D challenges](https://github.com/ctuning/ck/wiki/Research-and-development-challenges.mediawiki) -\r\njoin this community effort!\r\n\r\n## Related publications with long-term vision\r\n\r\n```\r\n@inproceedings{Lokhmotov:2016:OCN:2909437.2909449,\r\n author = {Lokhmotov, Anton and Fursin, Grigori},\r\n title = {Optimizing Convolutional Neural Networks on Embedded Platforms with OpenCL},\r\n booktitle = {Proceedings of the 4th International Workshop on OpenCL},\r\n series = {IWOCL '16},\r\n year = {2016},\r\n location = {Vienna, Austria},\r\n url = {http://doi.acm.org/10.1145/2909437.2909449},\r\n acmid = {2909449},\r\n publisher = {ACM},\r\n address = {New York, NY, USA},\r\n keywords = {Convolutional neural networks, OpenCL, collaborative optimization, deep learning, optimization knowledge repository},\r\n}\r\n\r\n@inproceedings{ck-date16,\r\n    title = {{Collective Knowledge}: towards {R\\\u0026D} sustainability},\r\n    author = {Fursin, Grigori and Lokhmotov, Anton and Plowman, Ed},\r\n    booktitle = {Proceedings of the Conference on Design, Automation and Test in Europe (DATE'16)},\r\n    year = {2016},\r\n    month = {March},\r\n    url = {https://www.researchgate.net/publication/304010295_Collective_Knowledge_Towards_RD_Sustainability}\r\n}\r\n```\r\n\r\n* \u003ca href=\"https://github.com/ctuning/ck/wiki/Publications\"\u003eAll related references with BibTex\u003c/a\u003e\r\n\r\n## Testimonials and awards\r\n\r\n* 2015: ARM and the cTuning foundation use CK to accelerate computer engineering: [HiPEAC Info'45 page 17](https://www.hipeac.net/assets/public/publications/newsletter/hipeacinfo45.pdf), [ARM TechCon'16 presentation and demo](https://github.com/ctuning/ck/wiki/Demo-ARM-TechCon'16), [public CK repo](https://github.com/ctuning/ck-wa)\r\n\r\n## Troubleshooting\r\n\r\n* When compiling OpenCL version of Caffe on Linux targeting NVidia GPU, select generic x86_64/libOpenCL.so rather than NVidia OpenCL driver when asked by the CK.\r\n\r\n## Feedback\r\n\r\nFeel free to engage with our community via this mailing list:\r\n* http://groups.google.com/group/collective-knowledge\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdividiti%2Fck-caffe","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdividiti%2Fck-caffe","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdividiti%2Fck-caffe/lists"}