Giter VIP home page Giter VIP logo

onnc-umbrella's Introduction

ONNC (Open Neural Network Compiler)

Introduction

ONNC (Open Neural Network Compiler) is a retargetable compilation framework designed specifically for proprietary deep learning accelerators. Its software architecture expedites porting ONNC to any Deep Learning Accelerator (DLA) design that supports ONNX (Open Neural Network Exchange) operators. ONNC guarantees executability across every DLA by means of transforming ONNX models into DLA-specific binary forms and leveraging the intermediate representation (IR) design of ONNX along with effective algorithms to eliminate the overhead of data movement. ONNC is the first open source compiler available for NVDLA-based hardware designs. Its NVDLA backend can compile a model into an executable NVDLA Loadable file. Integrating ONNC with the NVDLA software stack opens up opportunities for developers and researchers to explore the NVDLA-based inference design at system level.

Papers

  • W. F. Lin, D. Y. Tsai, L. Tang, C. T. Hsieh, C. Y. Chou, P. H. Chang, and L. Hsu, “ONNC: A compilation framework connecting ONNX to proprietary deep learning accelerators,” in IEEE International Conference on Artificial Intelligence Circuits and Systems (AICAS 2019). IEEE, 2019.

  • W.F. Lin, C. T. Hsieh, C. Y. Chou, "ONNC-based Software Development Platform for Configurable NVDLA Designs", to appear in IEEE International Symposium on VLSI Design, Automation and Test (VLSI-DAT 2019). IEEE, 2019

Documentation

Current Status

How to contribute

Directory Structure

  • README.md - This document
  • docs - documents
  • include - header files for libonnc
  • lib - implementation for libonnc
  • tools - tools based on libonnc

Supported platforms

ONNC supports Ubuntu/x86_64 and MacOSX.

Here is a list of verified versions:

  • Ubuntu/x86_64

    • 16.04
  • MacOSX

    • High Sierra

Getting Started

There are three ways to build ONNC:

  1. Build ONNC via Docker
    Please refer to the ONNC Utilities document.
  2. Build ONNC via ONNC umbrella
    Please follow the instructions of README.md in onnc-umbrella.
    Here is the version of external library we are using in ONNC.
  3. Build ONNC without ONNC umbrella
    Please refer to the ONNC CMake build instruction

onnc-umbrella's People

Contributors

a127a127 avatar changshengyin avatar chengchiwang avatar cthsieh avatar cycheng avatar kito-cheng avatar lubatang avatar luishsu avatar peter-chang avatar wwcai-intellif avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

onnc-umbrella's Issues

build llvm fail

Follow your step, and the command:
./build.sh dbg /opt/onnc

But I got the following error message:

........
[/home/walker/onnc/build-SkyPat] finishing ...
[/home/walker/onnc] building llvm ...
[/home/walker/onnc/build-llvm] creating makefiles ...
./scripts/library.sh: line 115: cmake: command not found
[/home/walker/onnc/build-llvm] Cmake project - llvm failed.
Failed to execute command: 'cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/home/walker/onnc/onncroot -DLLVM_TARGETS_TO_BUILD=host;X86;ARM;AArch64 /home/walker/onnc/external/llvm'

[Bug][Doc] Missing dependency glog in `macOS - with Homebrew` section

I encountered the error and found the Homebrew section need to add the installation of this:

brew install glog

While the APT section already has it: libgoogle-glog-dev.

And actually for MacOSX user there is another bison version issue, which means maybe the section should be:

xcode-select --install
brew install git autoconf automake libtool pkg-config protobuf coreutils glog

# If bison is too old: (`bison -V` == 2.3)
brew install bison
echo 'export PATH="/usr/local/opt/bison/bin:$PATH"' >> ~/.bash_profile
export LDFLAGS="-L/usr/local/opt/bison/lib"

onnx v4 support?

I noticed with current release (v1.0) of onnc-umbrella, tools/onnc only supports ONNX v3 format, which is supported in PyTorch v0.4 that's too darn old. New PyTorch versions such 1.0/1.2 etc. migrates to ONNX v4 already, when will you roll out the ONNX v4 support in ONNC? Thanks.

When I feed ONNC with v4 model, it complains as below:

$ ./onnc -mquadruple=nvdla ~/onnx_sample_models/ssd.onnx 
Fatal: Cannot inference shape of this onnx model, got exception from ONNX: Your model ir_version is higher than the checker's.

Build fails with Make llvmm failed

Hi,
I am trying to install ONNC, but when I run ./build.sh normal the build fails with the following error (I am posting just the last part because the error log is quite long):

/home/curzel/onnc-umbrella/external/llvm/include/llvm/ExecutionEngine/Orc/OrcRemoteTargetClient.h:722:26: error: could not convert ‘((llvm::orc::remote::OrcRemoteTargetClient<ChannelT>*)this)->callB<llvm::orc::remote::OrcRemoteTargetRPCAPI::ReadMem>(Src, Size)’ from ‘Expected<vector<unsigned char,allocator<unsigned char>>>’ to ‘Expected<vector<char,allocator<char>>>’
     return callB<ReadMem>(Src, Size);
            ~~~~~~~~~~~~~~^~~~~~~~~~~
[ 95%] Building C object tools/llvm-c-test/CMakeFiles/llvm-c-test.dir/helpers.c.o
[ 95%] Building C object tools/llvm-c-test/CMakeFiles/llvm-c-test.dir/include-all.c.o
[ 95%] Building C object tools/llvm-c-test/CMakeFiles/llvm-c-test.dir/main.c.o
[ 95%] Building C object tools/llvm-c-test/CMakeFiles/llvm-c-test.dir/module.c.o
In file included from /home/curzel/onnc-umbrella/external/llvm/include/llvm/ADT/STLExtras.h:32,
                 from /home/curzel/onnc-umbrella/external/llvm/tools/lli/OrcLazyJIT.h:18,
                 from /home/curzel/onnc-umbrella/external/llvm/tools/lli/lli.cpp:16:
/home/curzel/onnc-umbrella/external/llvm/include/llvm/ADT/SmallVector.h: In instantiation of ‘void llvm::SmallVectorTemplateBase<T, true>::push_back(const T&) [with T = std::pair<void*, long unsigned int>]’:
/home/curzel/onnc-umbrella/external/llvm/include/llvm/Support/Allocator.h:247:33:   required from ‘void* llvm::BumpPtrAllocatorImpl<AllocatorT, SlabSize, SizeThreshold>::Allocate(size_t, size_t) [with AllocatorT = llvm::MallocAllocator; long unsigned int SlabSize = 4096; long unsigned int SizeThreshold = 4096; size_t = long unsigned int]’
/home/curzel/onnc-umbrella/external/llvm/include/llvm/Support/YAMLParser.h:130:42:   required from here
/home/curzel/onnc-umbrella/external/llvm/include/llvm/ADT/SmallVector.h:309:11: warning: ‘void* memcpy(void*, const void*, size_t)’ writing to an object of type ‘struct std::pair<void*, long unsigned int>’ with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess]
     memcpy(this->end(), &Elt, sizeof(T));
     ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/c++/8/utility:70,
                 from /usr/include/c++/8/algorithm:60,
                 from /home/curzel/onnc-umbrella/external/llvm/include/llvm/ADT/STLExtras.h:20,
                 from /home/curzel/onnc-umbrella/external/llvm/tools/lli/OrcLazyJIT.h:18,
                 from /home/curzel/onnc-umbrella/external/llvm/tools/lli/lli.cpp:16:
/usr/include/c++/8/bits/stl_pair.h:208:12: note: ‘struct std::pair<void*, long unsigned int>’ declared here
     struct pair
            ^~~~
[ 95%] Building C object tools/llvm-c-test/CMakeFiles/llvm-c-test.dir/metadata.c.o
[ 95%] Building C object tools/llvm-c-test/CMakeFiles/llvm-c-test.dir/object.c.o
[ 95%] Building C object tools/llvm-c-test/CMakeFiles/llvm-c-test.dir/targets.c.o
[ 95%] Linking CXX executable ../../bin/llvm-c-test
[ 95%] Built target llvm-c-test
Scanning dependencies of target llvm-cxxdump
[ 95%] Building CXX object tools/llvm-cxxdump/CMakeFiles/llvm-cxxdump.dir/llvm-cxxdump.cpp.o
make[2]: *** [tools/lli/CMakeFiles/lli.dir/build.make:63: tools/lli/CMakeFiles/lli.dir/lli.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:9413: tools/lli/CMakeFiles/lli.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....
[ 95%] Building CXX object tools/llvm-cxxdump/CMakeFiles/llvm-cxxdump.dir/Error.cpp.o
[ 95%] Linking CXX executable ../../bin/llvm-cxxdump
[ 95%] Built target llvm-cxxdump
make: *** [Makefile:152: all] Error 2
[/home/curzel/onnc-umbrella/build-llvm] Make llvm failed.
Failed to execute command: 'make -j2 all install'

All the necessary packages should already be installed, let me know if you need additional informtion.

Command to run onnc

I have done follow and see many files in the build-MODE/tools/unittests (The direction on my computer is : onnc-umbrella/build-dbg/tools/unittests/).
Can you write to help me command to run each unittest ? I really don't know how can run it?
Thank you so much!

onnc compilation is not parallelized

both build.sh and build.cmake.sh can't make use of multiple processors for ONNC compilation

replacing "${MAKE} ${PARALLEL_BUILD_FLAG}" with "make -j4" will trigger multiple process for compilation.

Example

Do you have a simple example to show how to compile an ONNX model and run it on a target platform, e.g., x86?

JSON/JsonScanner.cpp is missing

I was building with command ./build.sh normal ../build-onnc-unbrella/.
The compilation failed with following message.
Please help to resolve it, thanks!

g++ -DHAVE_CONFIG_H   -I/workspace/onnc-umbrella/src/include  -I/workspace/onnc-umbrella/build-normal/include  -I/workspace/onnc-umbrella/build-normal/lib -I/workspace/onnc-umbrella/onncroot/include -I/workspace/onnc-umbrella/src/lib/Target -I/workspace/onnc-umbrella/src/lib/Target/Sophon -I/workspace/onnc-umbrella/src/lib/Target/Sophon/include -Waddress -Wchar-subscripts -Wcomment -Wformat -Wparentheses -Wreorder -Wreturn-type -Wsequence-point -Wstrict-aliasing -Wstrict-overflow=1 -Wswitch -Wtrigraphs -Wuninitialized -Wunknown-pragmas -Wunused-function -Wunused-label -Wunused-value -Wunused-variable -Wvolatile-register-var -Wno-return-stack-address     -g -O2 -MT JSON/JsonScanner.o -MD -MP -MF $depbase.Tpo -c -o JSON/JsonScanner.o JSON/JsonScanner.cpp &&\
mv -f $depbase.Tpo $depbase.Po
g++: error: JSON/JsonScanner.cpp: No such file or directory
g++: fatal error: no input files
compilation terminated.
Makefile:2277: recipe for target 'JSON/JsonScanner.o' failed
make[1]: *** [JSON/JsonScanner.o] Error 1
make[1]: Leaving directory '/workspace/onnc-umbrella/build-normal/lib'
Makefile:532: recipe for target 'install-recursive' failed
make: *** [install-recursive] Error 1
[/workspace/onnc-umbrella/build-normal] Make onnc failed.
Failed to execute command: 'make DESTDIR=/workspace/onnc-umbrella/install-normal install'

Make onnc failed. make[1]: *** [JSON/JsonParser.cpp] Error 1

I followed the steps in Mac OS
./build.sh normal /opt/onnc/ or ./build.sh dbg /Users/jason_jiang/project/build/

However, both come up with this problem

/bin/sh /Users/jason_jiang/project/onnc-umbrella/src/scripts/ylwrap /Users/jason_jiang/project/onnc-umbrella/src/lib/JSON/JsonParser.ypp y.tab.c JSON/JsonParser.cpp y.tab.h echo JSON/JsonParser.cpp | sed -e s/cc$/hh/ -e s/cpp$/hpp/ -e s/cxx$/hxx/ -e s/c++$/h++/ -e s/c$/h/y.output JSON/JsonParser.output -- bison -y -d /Users/jason_jiang/project/onnc-umbrella/src/lib/JSON/JsonParser.ypp:23.1-5: invalid directive:%code'
/Users/jason_jiang/project/onnc-umbrella/src/lib/JSON/JsonParser.ypp:23.7-14: syntax error, unexpected identifier
make[1]: *** [JSON/JsonParser.cpp] Error 1
make: *** [install-recursive] Error 1`

Can anybody give some help?

Build onnc fail with error "collect2: error: ld returned 1 exit status tools/onnc/CMakeFiles/onnc.dir/build.make:150: recipe for target 'tools/onnc/onnc' failed"

Hi, can anybody give some help on the onnc. I got the following error when I try to
this command ./build.sh normal nvdla ../build/

implementation.cc:(.text+0x1ad3): undefined reference to google::protobuf::internal::fixed_address_empty_string[abi:cxx11]'
collect2: error: ld returned 1 exit status
tools/onnc/CMakeFiles/onnc.dir/build.make:150: recipe for target 'tools/onnc/onnc' failed
make[2]: *** [tools/onnc/onnc] Error 1
CMakeFiles/Makefile2:1981: recipe for target 'tools/onnc/CMakeFiles/onnc.dir/all' failed
make[1]: *** [tools/onnc/CMakeFiles/onnc.dir/all] Error 2
Makefile:140: recipe for target 'all' failed
make: *** [all] Error 2
[/home/jjsjiang/onnc-umbrella/build-normal] Make onnc failed.
Failed to execute command: 'make DESTDIR=/home/jjsjiang/onnc-umbrella/install-normal install'`

Make onnc failed

Follow your step:
./build.sh dbg /opt/onnc

but meet the following error message:

/bin/bash ../../libtool --tag=CXX --mode=link g++ -std=c++14 -g -O2 -o onnc main.o ONNCApp.o ONNCConfig.o -L/home/walker/onnc/onnc-master/build-dbg/lib /home/walker/onnc/onnc-master/build-dbg/lib/libonnc.a -lprotobuf -pthread -lpthread /home/walker/onnc/onnc-master/onncroot/lib/libonnx.a /home/walker/onnc/onnc-master/onncroot/lib/libonnx_proto.a -lpthread /home/walker/onnc/onnc-master/onncroot/lib/libskypat.a -lglog -lprotobuf -lpthread -lz
libtool: link: g++ -std=c++14 -g -O2 -o onnc main.o ONNCApp.o ONNCConfig.o -pthread -L/home/walker/onnc/onnc-master/build-dbg/lib /home/walker/onnc/onnc-master/build-dbg/lib/libonnc.a /home/walker/onnc/onnc-master/onncroot/lib/libonnx.a /home/walker/onnc/onnc-master/onncroot/lib/libonnx_proto.a /home/walker/onnc/onnc-master/onncroot/lib/libskypat.a -lglog -lprotobuf -lpthread -lz -pthread
/home/walker/onnc/onnc-master/build-dbg/lib/libonnc.a(BM188xBackend.o): In function onnc::Lower* onnc::LowerRegistry::emplace<onnc::MulLower>()': /home/walker/onnc/onnc-master/src/include/onnc/Transforms/TensorSel/LowerRegistry.h:60: undefined reference to onnc::MulLower::MulLower()'
collect2: error: ld returned 1 exit status
Makefile:455: recipe for target 'onnc' failed
make[2]: *** [onnc] Error 1
make[2]: Leaving directory '/home/walker/onnc/onnc-master/build-dbg/tools/onnc'
Makefile:406: recipe for target 'install-recursive' failed
make[1]: *** [install-recursive] Error 1
make[1]: Leaving directory '/home/walker/onnc/onnc-master/build-dbg/tools'
Makefile:530: recipe for target 'install-recursive' failed
make: *** [install-recursive] Error 1
[/home/walker/onnc/onnc-master/build-dbg] Make onnc failed.
Failed to execute command: 'make DESTDIR=/home/walker/onnc/onnc-master/install-dbg install'

onnc not submodule and don't mention step in README.md

I got following error when I clone the repo, and I think it should add a git clone onnc src step to README.md, add it to submodule or do the clone in build script.

$ ./build.cmake.sh 
~/onnc-umbrella/build ~/onnc-umbrella
CMake Error at external/CMakeLists.txt:5 (include):
  include could not find load file:

    /home/users/kito/onnc-umbrella/external/../src/cmake/option.cmake


CMake Error at external/CMakeLists.txt:6 (include):
  include could not find load file:

    /home/users/kito/onnc-umbrella/external/../src/cmake/onnc_target.cmake


CMake Error at external/CMakeLists.txt:7 (enum_onnc_targets):
  Unknown CMake command "enum_onnc_targets".


-- Configuring incomplete, errors occurred!
See also "/home/users/kito/onnc-umbrella/build/CMakeFiles/CMakeOutput.log".
[kito@atccpl05 onnc-umbrella]$ ./build.cmake.sh 
~/onnc-umbrella/build ~/onnc-umbrella
CMake Error at external/CMakeLists.txt:5 (include):
  include could not find load file:

    /home/users/kito/onnc-umbrella/external/../src/cmake/option.cmake


CMake Error at external/CMakeLists.txt:6 (include):
  include could not find load file:

    /home/users/kito/onnc-umbrella/external/../src/cmake/onnc_target.cmake


CMake Error at external/CMakeLists.txt:7 (enum_onnc_targets):
  Unknown CMake command "enum_onnc_targets".


-- Configuring incomplete, errors occurred!
See also "/home/users/kito/onnc-umbrella/build/CMakeFiles/CMakeOutput.log".

How to setup and build ONNC

Hi everyone. I am just beginning for study ONNC. I want to study it. But i don't know how is install it and build it.
Please, Tell me step by step to do it.
(Ex. What I must download? and then...)
Thank for everyone help me.

make j4, is building the libraries everytime Even though no source modifications. done.

Every time I issue a build command, via make -j4, even though I have not done any modifications to the files, it is rebuilding every time from the below point and is taking 20 to 30 minutes for the completion. How to fix this?


[ 0%] Built target gen_json_parser
Scanning dependencies of target libonnc_Target_Sophon_BM168x_asm__bm168x_asm_proto_dir
[ 0%] Built target libonnc_Target_Sophon_BM168x_asm__bm168x_asm_proto_dir
Scanning dependencies of target libonnc_Target_Sophon_BM168x_asm__bm168x_asm_proto
[ 0%] Generating ../../../../include/onnc/Target/Sophon/BM168x/asm/bm168x_asm.pb.h, ../../../../include/onnc/Target/Sophon/BM168x/asm/bm168x_asm.pb.cc
[ 0%] Built target libonnc_Target_Sophon_BM168x_asm__bm168x_asm_proto
Scanning dependencies of target libonnc_Target_Sophon_BM188x__common_calibration2_proto_dir
[ 0%] Built target libonnc_Target_Sophon_BM188x__common_calibration2_proto_dir
Scanning dependencies of target libonnc_Target_Sophon_BM188x__common_calibration2_proto
[ 0%] Generating ../../../include/onnc/Target/Sophon/BM188x/common_calibration2.pb.h, ../../../include/onnc/Target/Sophon/BM188x/common_calibration2.pb.cc
[ 0%] Built target libonnc_Target_Sophon_BM188x__common_calibration2_proto
Scanning dependencies of target code_gen
[ 0%] Built target code_gen
Scanning dependencies of target libonnc_Transforms_TensorSel
[ 0%] Building CXX object lib/Transforms/TensorSel/CMakeFiles/libonnc_Transforms_TensorSel.dir/DefaultAttributes.cpp.o
[ 0%] Building CXX object lib/Transforms/TensorSel/CMakeFiles/libonnc_Transforms_TensorSel.dir/Lower.cpp.o
[ 0%] Building CXX object lib/Transforms/TensorSel/CMakeFiles/libonnc_Transforms_TensorSel.dir/LowerRegistry.cpp.o
[ 1%] Building CXX object lib/Transforms/TensorSel/CMakeFiles/libonnc_Transforms_TensorSel.dir/AbsLower.cpp.o
[ 1%] Building CXX object lib/Transforms/TensorSel/CMakeFiles/libonnc_Transforms_TensorSel.dir/AcosLower.cpp.o
[ 1%] Building CXX object lib/Transforms/TensorSel/CMakeFiles/libonnc_Transforms_TensorSel.dir/AddLower.cpp.o

build systemc failed on macpro m1 (macOS Sonoma)

/onnc-compiler/onnc-umbrella/external/systemc] configuring ...
checking build system type... arm-apple-darwin23.3.0
checking host system type... arm-apple-darwin23.3.0
checking target system type... arm-apple-darwin23.3.0
checking for a BSD-compatible install... /opt/homebrew/bin/ginstall -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /opt/homebrew/bin/gmkdir -p
checking for gawk... no
checking for mawk... no
checking for nawk... no
checking for awk... awk
checking whether make sets $(MAKE)... yes
checking whether make supports nested variables... yes
checking how to create a pax tar archive... gnutar
checking whether make supports nested variables... (cached) yes
checking for g++... g++
checking whether the C++ compiler works... yes
checking for C++ compiler default output file name... a.out
checking for suffix of executables...
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C++ compiler... yes
checking whether g++ accepts -g... yes
checking for style of include used by make... GNU
checking dependency style of g++... gcc3
checking whether we are using a Clang/LLVM C++ compiler... yes
checking for gcc... g++
checking whether we are using the GNU C compiler... yes
checking whether g++ accepts -g... yes
checking for g++ option to accept ISO C89... unsupported
checking whether g++ understands -c and -o together... yes
checking dependency style of g++... gcc3
checking whether we are using a Clang/LLVM C compiler... yes
checking for ar... ar
checking the archiver (ar) interface... ar
checking dependency style of g++... gcc3
checking whether ln -s works... yes
configure: error: "sorry...architecture not supported"
[/onnc-compiler/onnc-umbrella/build-systemc] Configure autotools project - systemc failed.
Failed to execute command: '/onnc-compiler/onnc-umbrella/external/systemc/configure --prefix=/onnc-compiler/onnc-umbrella/onncroot'

All onnc::onnx::Reader parse failed, even with the built-in model

Command run:

/opt/onnc/bin/unittests

[ RUN ] ONNXReaderTest.parse_file
Error: Cannot parse onnx input file ****/onnc-umbrella/src/tools/unittests/data/bvlc_alexnet/model.onnx
[ FAILED ]
****/onnc-umbrella/src/tools/unittests/ONNXReaderTest.cpp:27: fatal: failed to assert

[----------] 1 test from TensorSelTest.
[ RUN ] TensorSelTest.alexnet
Error: Cannot parse onnx input file ****/onnc-umbrella/src/tools/unittests/data/bvlc_alexnet/model.onnx
[ FAILED ]
****/onnc-umbrella/src/tools/unittests/TensorSelTest.cpp:59: fatal: failed to assert
Value of: err.isGood()
Actual: false
Expected: true
[==========] 112 tests from 18 cases ran.
[ FAILED ] 2 tests.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.