All Projects → ai-techsystems → Deepc

ai-techsystems / Deepc

Licence: apache-2.0
vendor independent deep learning library, compiler and inference framework microcomputers and micro-controllers

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to Deepc

Ngraph
nGraph has moved to OpenVINO
Stars: ✭ 1,322 (+408.46%)
Mutual labels:  compiler, deep-neural-networks, onnx, performance
Tvm
Open deep learning compiler stack for cpu, gpu and specialized accelerators
Stars: ✭ 7,494 (+2782.31%)
Mutual labels:  compiler, tensor, performance
Nxdk
The cross-platform, open-source SDK to develop for original Xbox: *new* xdk
Stars: ✭ 200 (-23.08%)
Mutual labels:  compiler, llvm
Llvm
[MERGED UPSTREAM] AVR backend for the LLVM compiler library
Stars: ✭ 222 (-14.62%)
Mutual labels:  compiler, llvm
Pi-Pool
Cardano Stakepool on Raspberry Pi
Stars: ✭ 204 (-21.54%)
Mutual labels:  raspberrypi, arm64
Rubyspeed
Compile ruby functions to C
Stars: ✭ 180 (-30.77%)
Mutual labels:  compiler, performance
Llvm Guide Zh
User Guides For those new to the LLVM system.(LLVM系统的新用户指南,中文翻译版)
Stars: ✭ 180 (-30.77%)
Mutual labels:  compiler, llvm
Adlik
Adlik: Toolkit for Accelerating Deep Learning Inference
Stars: ✭ 237 (-8.85%)
Mutual labels:  compiler, performance
Jitfromscratch
Example project from my talks in the LLVM Social Berlin and C++ User Group
Stars: ✭ 158 (-39.23%)
Mutual labels:  compiler, llvm
docker-opengl
Multi-Arch Docker - Mesa 3D OpenGL Software Rendering (Gallium) - LLVMpipe, and OpenSWR Drivers
Stars: ✭ 68 (-73.85%)
Mutual labels:  llvm, arm64
filebrowser-docker
🐳 filebrowser inside Docker container
Stars: ✭ 122 (-53.08%)
Mutual labels:  raspberrypi, arm64
aria2-ariang-docker
🐳 Aria2 downloader and AriaNg webui Docker image based on Alpine Linux
Stars: ✭ 49 (-81.15%)
Mutual labels:  raspberrypi, arm64
Wag
WebAssembly compiler implemented in Go
Stars: ✭ 177 (-31.92%)
Mutual labels:  compiler, arm64
Play with llvm
A book about LLVM & Clang(中文开源书:玩转 LLVM)
Stars: ✭ 175 (-32.69%)
Mutual labels:  compiler, llvm
Lhc
The LLVM LHC Haskell Optimization System
Stars: ✭ 188 (-27.69%)
Mutual labels:  compiler, llvm
Compile To Web
Discover what languages can be compiled to Web Assembly
Stars: ✭ 164 (-36.92%)
Mutual labels:  compiler, llvm
Ts Llvm
TypeScript to LLVM compiler (abandoned)
Stars: ✭ 230 (-11.54%)
Mutual labels:  compiler, llvm
V4L2-to-NDI
A video input (V4L2) to NDI converter that works with Raspberry Pi (32-bit and 64-bit), and Intel/AMD CPUs
Stars: ✭ 35 (-86.54%)
Mutual labels:  raspberrypi, arm64
Nngen
NNgen: A Fully-Customizable Hardware Synthesis Compiler for Deep Neural Network
Stars: ✭ 149 (-42.69%)
Mutual labels:  compiler, onnx
Rhine
🔬 a C++ compiler middle-end, using an LLVM backend
Stars: ✭ 157 (-39.62%)
Mutual labels:  compiler, llvm

deepC

is a vendor independent deep learning library, compiler and inference framework designed for small form-factor devices including μControllers, IoT and Edge devices

👉click here to see it in action👈

Build Status PyPI version Downloads Apache2.0 License Contributors Chat

🏃‍♂️ Using deepC

Here are few of many ways.

  1. Try deepC with Colab Noteboook
  2. Install it on Ubuntu, raspbian (or any other debian derivatives) using pip install deepC
  3. Compile onnx model- read this article or watch this video
  4. Use deepC with a Docker File

See more examples in tutorial dir.

📛 what is deepC?

deepC library, compiler and inference framework is designed to enable and perform deep learning neural networks by focussing on features of small form-factor devices like micro-controllers, eFPGAs, cpus and other embedded devices like raspberry-pi, odroid, arduino, SparkFun Edge, risc-V, mobile phones, x86 and arm laptops among others.

edge Devices

deepC also offers ahead of time compiler producing optimized executable based on LLVM compiler tool chain specialized for deep neural networks with ONNX as front end.

📝 Design

Main components of deepC have been designed to represent and optimize the common deep learning networks in high level graph IR and to transform the computation graph to minimize memory utilization, optimize data layout and fuse computation patterns for different hardware backends.

Architecture

Read more at high level design document

💧 PreRequisites

💻 Development

Build and start modifying deepC locally from source code with following steps

⭕ Ubuntu 18.04

Follow the steps to install pre-requisites

sudo apt-get update
sudo apt-get install build-essential python3.6-dev python3-pip swig doxygen clang-format clang clang-8 llvm-8 llvm-8-dev protobuf-compiler libprotoc-dev
sudo pip3 install numpy==1.15.0 onnx==1.5.0

Once you are done, build deepC

git clone https://github.com/ai-techsystems/deepC.git
cd deepC
make

⭕ Mac OS / Windows 10

Make sure you have the below pre-requisites

Mac OS:

Windows 10:

Once you are done, build deepC inside docker container

git clone https://github.com/ai-techsystems/deepC.git
cd deepC
python buildDocker.py

📜 Output

find include src swig -name \*.h -print0 -o -name \*.cpp -print0 | xargs -0 -P8 -n1 clang-format -i
make -C src
make[1]: Entering directory 'deepC/src'
make -C core
make[2]: Entering directory 'deepC/src/core'
compiling broadcast.cpp
/usr/bin/g++ -O3 -Wall -std=c++14 -fPIC -march=native -msse2 \
    -isystem ./packages/eigen-eigen-323c052e1731 -I./include \
    -c broadcast.cpp -o obj/broadcast.o
compiling tensor.cpp
...
...
/usr/bin/g++ -shared  ./obj/dnnc_swig.o ./obj/dnnc_pyutils.o ./obj/dnnc_api.o -o lib/libdnnc.so
ln -s -f lib/libdnnc.so _dnnc.so
/usr/bin/python3 ../test/swig/basic.py

Current Support

Supported Architectures Status
Arm ✔️
Armv7 ✔️
Arm64 ✔️
AMD64 ✔️
ppc64le ✔️
Supported OS Distributions Status
Linux Ubuntu 18.04 ✔️
Linux CentOS 6 ✔️
Linux Arch Linux ✔️
Linux Manjaro ✔️
Windows 1803 and above ✔️
Mac OS Sierra and above ✔️

➕ Contribute

dnn Compiler adopts apache committer model, we aim to create an open source project that is maintained and owned by the community. Checkout the Contributor Guide.

🙏 Acknowledgement

We acknowledge the efforts predecessor projects like LLVM, ONNX etc. to make this project a reality.


🕵️‍♂️ Why compiler❔

deepC is targeted towards devices with small formfactor like microcontrollers, which are part of all sorts of household devices: think appliances, cars, and toys. In fact, there are around 30 billion microcontroller-powered devices produced each year. They're cheap, require very little energy, and are very reliable.

By bringing deep learning models to tiny microcontrollers, we can boost the intelligence of billions of devices that we use in our lives, without relying on expensive hardware or reliable internet connections. Imagine smart appliances that can adapt to your daily routine, intelligent industrial sensors that understand the difference between problems and normal operation, and magical toys that can help kids learn in fun and delightful ways.

Contributors

Code Contributors

This project exists because of the people who [Contribute]. Thanks! 🙏

Financial Contributors

Become a financial contributor and help us sustain our community. [Contribute]

Individuals

Organizations

Support this project with your organization. Your logo will show up here with a link to your website. [Contribute]

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].