Commit 857093c1 authored by Leona C's avatar Leona C Committed by Scott Cyphers

Note experimental Codegen (#2672)

* [ONNX] Add documentation

* Update documentation contributor's instructions

* Doc theme to match ngraph.ai

* Minor formatting fixes and PR feedback

* ToC fixes

* ToC fixes

* Add changes

* Be consistent with BUILDDIR

* Be consistent with substitution

* Update Makefile

* Update style check, add feedback from reviewers, remove outdated link on ReleaseNotes
parent b0d86687
...@@ -2737,14 +2737,14 @@ span[id*='MathJax-Span'] { ...@@ -2737,14 +2737,14 @@ span[id*='MathJax-Span'] {
height: 35.2px; height: 35.2px;
display: inline-block; display: inline-block;
line-height: 44.8px; line-height: 44.8px;
padding: 0.1 0.1 em; padding: 0.1 0.1;
margin-left: 0.31em; margin-left: 0.43em;
margin-bottom: 0; margin-bottom: 0;
display: block; display: block;
font-family: "NeoSansIntel", sans; font-family: "NeoSansIntel", sans;
font-weight: bolder; font-weight: bolder;
text-transform: uppercase; text-transform: uppercase;
font-size: 107%; font-size: 103%;
color: #abb6cd; color: #abb6cd;
/* background-color: #53607d; */ /* background-color: #53607d; */
white-space: nowrap; white-space: nowrap;
......
...@@ -50,12 +50,15 @@ Memory Assignment Passes ...@@ -50,12 +50,15 @@ Memory Assignment Passes
Codegen Passes Codegen Passes
============== ==============
.. important:: Codegen is currently experimental only.
.. csv-table:: .. csv-table::
:header: "Codegen Passes", "More Detail" :header: "Codegen Passes", "More Detail"
:widths: 29, 31 :widths: 29, 31
:escape: ~ :escape: ~
``CommonFunctionCollection``, "" ``CommonFunctionCollection``, "Experimental Only"
Debug Passes Debug Passes
......
...@@ -14,15 +14,16 @@ Current framework integrations ...@@ -14,15 +14,16 @@ Current framework integrations
A framework is "supported" when there is a framework :term:`bridge` that can be A framework is "supported" when there is a framework :term:`bridge` that can be
cloned from one of our GitHub repos and built to connect to nGraph device backends, cloned from one of our GitHub repos and built to connect to nGraph device
all the while maintaining the framework's programmatic or user interface. Bridges backends while maintaining the framework's programmatic or user interface. Bridges
currently exist for the TensorFlow\* and MXNet\* frameworks. currently exist for the TensorFlow\* and MXNet\* frameworks.
.. figure:: ../graphics/whole-stack.png .. figure:: ../graphics/whole-stack.png
:width: 733px :width: 733px
:alt: JiT compiling of a computation :alt: JiT compiling of a computation
:abbr:`Just-in-Time (JiT)` Compiling for computation :abbr:`Just-in-Time (JiT)` Compiling for computation. nGraph `Core` components
are colored in blue.
Once connected via the bridge, the framework can then run and train a deep Once connected via the bridge, the framework can then run and train a deep
learning model with various workloads on various backends using nGraph Compiler learning model with various workloads on various backends using nGraph Compiler
...@@ -33,13 +34,13 @@ end use by data scientists, or for deployment in cloud container environments, ...@@ -33,13 +34,13 @@ end use by data scientists, or for deployment in cloud container environments,
nGraph Core ops and the nGraph C++ Library are designed for framework builders nGraph Core ops and the nGraph C++ Library are designed for framework builders
themselves. We invite anyone working on new and novel frameworks or neural themselves. We invite anyone working on new and novel frameworks or neural
network designs to explore our highly-modularized stack of components that can network designs to explore our highly-modularized stack of components that can
be implemented or integrated in virtually limitless ways. be implemented or integrated in countless ways.
Please read the articles in this section if you are considering incorporating Please read this section if you are considering incorporating components from
components from the nGraph Compiler stack in your framework or neural network the nGraph Compiler stack in your framework or neural network design. Contents
design. Articles here are also useful if you are working on something here are also useful if you are working on something built-from-scratch, or on
built-from-scratch, or on an existing framework that is less widely-supported an existing framework that is less widely-supported than the popular frameworks
than the popular frameworks like TensorFlow and PyTorch. like TensorFlow and PyTorch.
.. figure:: ../graphics/translation-flow-to-ng-fofx.png .. figure:: ../graphics/translation-flow-to-ng-fofx.png
:width: 725px :width: 725px
......
...@@ -24,18 +24,18 @@ nGraph Compiler stack ...@@ -24,18 +24,18 @@ nGraph Compiler stack
`nGraph`_ is an open-source graph compiler for :abbr:`Artificial Neural Networks (ANNs)`. `nGraph`_ is an open-source graph compiler for :abbr:`Artificial Neural Networks (ANNs)`.
The nGraph Compiler stack provides an inherently efficient graph-based compilation The nGraph Compiler stack provides an inherently efficient graph-based compilation
infrastructure designed to be compatible with the many of the upcoming infrastructure designed to be compatible with many upcoming
:abbr:`Application-Specific Integrated Circuits (ASICs)`, like the Intel® Nervana™ :abbr:`Application-Specific Integrated Circuits (ASICs)`, like the Intel® Nervana™
Neural Network Processor (Intel® Nervana™ NNP), while also unlocking a massive Neural Network Processor (Intel® Nervana™ NNP), while also unlocking a massive
performance boost on any existing hardware targets in your neural network: both GPUs performance boost on any existing hardware targets for your neural network: both
and CPUs. Using its flexible infrastructure, you will find it becomes much easier GPUs and CPUs. Using its flexible infrastructure, you will find it becomes much
to create Deep Learning (DL) models that can adhere to the "write once, run anywhere" easier to create Deep Learning (DL) models that can adhere to the "write once,
mantra that enables your AI solutions to easily go from concept to production to scale. run anywhere" mantra that enables your AI solutions to easily go from concept to
production to scale.
Frameworks using nGraph to execute workloads have shown `up to 45X`_ performance Frameworks using nGraph to execute workloads have shown `up to 45X`_ performance
boost compared to native implementations. For a high-level overview, see the boost compared to native implementations. For a high-level overview, see the
:doc:`project/introduction`. :doc:`project/introduction` and our latest :doc:`project/release-notes`.
.. toctree:: .. toctree::
:maxdepth: 1 :maxdepth: 1
......
...@@ -128,14 +128,13 @@ Although not always ideal, it is automatically enforced and reduces ...@@ -128,14 +128,13 @@ Although not always ideal, it is automatically enforced and reduces
merge conflicts. merge conflicts.
- The .clang-format file located in the root of the project specifies - The .clang-format file located in the root of the project specifies
our format. our format. Simply run:
- The script maint/apply-code-format.sh enforces that formatting
at the C/C++ syntactic level. ``` make style-check &&
- The script at maint/check-code-format.sh verifies that the make style-apply```
formatting rules are met by all C/C++ code (again, at the
syntax level). The script has an exit code of `0` when code
meets the standard and non-zero otherwise. This script does
*not* modify the source code.
- Formatting with `#include` files: - Formatting with `#include` files:
- Put headers in groups separated by a blank line. Logically order - Put headers in groups separated by a blank line. Logically order
the groups downward from system-level to 3rd-party to `ngraph`. the groups downward from system-level to 3rd-party to `ngraph`.
......
...@@ -156,14 +156,12 @@ use **clang format** to enforce certain formatting. Although not always ideal, ...@@ -156,14 +156,12 @@ use **clang format** to enforce certain formatting. Although not always ideal,
it is automatically enforced and reduces merge conflicts. it is automatically enforced and reduces merge conflicts.
- The :file:`.clang-format` file located in the root of the project specifies - The :file:`.clang-format` file located in the root of the project specifies
our format. our format. Simply run:
* The script :file:`maint/apply-code-format.sh` enforces that formatting .. code-block:: console
at the C/C++ syntactic level.
* The script at :file:`maint/check-code-format.sh` verifies that the formatting $ make style-check
rules are met by all C/C++ code (again, at the syntax level). The script has $ make style-apply
an exit code of ``0`` when code meets the standard and non-zero otherwise.
This script does *not* modify the source code.
- Formatting with ``#include`` files: - Formatting with ``#include`` files:
......
...@@ -95,11 +95,11 @@ optimal: ...@@ -95,11 +95,11 @@ optimal:
:width: 555px :width: 555px
:alt: :alt:
The following computation is constructed to execute ``(A+B)*C``, but in the The computation is constructed to execute ``(A+B)*C``, but in the context of
context of nGraph, we can further optimize the graph to be represented as ``A*C``. nGraph, we can further optimize the graph to be represented as ``A*C``. From the
From the first graph shown on the left, the operation on the constant ``B`` can first graph shown on the left, the operation on the constant ``B`` can be
be computed at the compile time (known as constant folding), and the graph can computed at the compile time (known as constant folding), and the graph can be
be further simplified to the one on the right because the constant has value of further simplified to the one on the right because the constant has value of
zero. Without such graph-level optimizations, a deep learning framework with a zero. Without such graph-level optimizations, a deep learning framework with a
kernel library will compute all operations, and the resulting execution will be kernel library will compute all operations, and the resulting execution will be
suboptimal. suboptimal.
...@@ -153,9 +153,9 @@ PlaidML addresses the kernel explosion problem in a manner that lifts a heavy ...@@ -153,9 +153,9 @@ PlaidML addresses the kernel explosion problem in a manner that lifts a heavy
burden off kernel developers. It automatically lowers networks from nGraph burden off kernel developers. It automatically lowers networks from nGraph
into Tile, a :abbr:Domain-Specific Language (DSL) designed for deep learning into Tile, a :abbr:Domain-Specific Language (DSL) designed for deep learning
that allows developers to express how an operation should calculate tensors in that allows developers to express how an operation should calculate tensors in
an intuitive, mathematical form. Integration of PlaidML with nGraph means an intuitive, mathematical form via `Stripe`_. Integration of PlaidML with
extra flexibility to support newer deep learning models in the absence of nGraph means extra flexibility to support newer deep learning models in the
by-hand optimized kernels for the new operations. absence of by-hand optimized kernels for the new operations.
Solution: nGraph and PlaidML Solution: nGraph and PlaidML
...@@ -164,17 +164,17 @@ Solution: nGraph and PlaidML ...@@ -164,17 +164,17 @@ Solution: nGraph and PlaidML
Each of the problems above can be solved with nGraph and PlaidML. We developed Each of the problems above can be solved with nGraph and PlaidML. We developed
nGraph and integrated it with PlaidML so developers wanting to craft solutions nGraph and integrated it with PlaidML so developers wanting to craft solutions
with :abbr:`AI (Artificial Intelligence)` won't have to face such a steep with :abbr:`AI (Artificial Intelligence)` won't have to face such a steep
learning curve in taking their concepts from design to production to scale. The learning curve in taking their concepts from design to production, and to scale.
fundamental efficiencies behind Moore's Law are not dead; rather than fitting The fundamental efficiencies behind Moore's Law are not dead; rather than fitting
`more transistors on denser and denser circuits`_, we're enabling advances `more transistors on denser and denser circuits`_, with nGraph and PlaidML,
in compute with more transformers on denser and more data-heavy we're enabling advances in compute with more transformers on denser and more
:abbr:`Deep Learning Networks (DNNs)`, and making it easier to apply data-heavy :abbr:`Deep Learning Networks (DNNs)`, and making it easier to apply
:abbr:`Machine Learning (ML)` to different industries and problems. :abbr:`Machine Learning (ML)` to different industries and problems.
For developers with a neural network already in place, executing workloads using For developers with a neural network already in place, executing workloads using
the nGraph Compiler provides further performance benefits and allows for quicker the nGraph Compiler provides further performance benefits and allows for quicker
adaptation of models. It also make it much easier to upgrade hardware adaptation of models. It also makes it much easier to upgrade hardware
infrastructure pieces as workloads grow and require more careful balancing. infrastructure pieces as workloads grow.
This documentation provides technical details of nGraph's core functionality, This documentation provides technical details of nGraph's core functionality,
framework and backend integrations. Creating a compiler stack like nGraph and framework and backend integrations. Creating a compiler stack like nGraph and
...@@ -189,3 +189,4 @@ will make life easier for many kinds of developers: ...@@ -189,3 +189,4 @@ will make life easier for many kinds of developers:
.. _more transistors on denser and denser circuits: https://www.intel.com/content/www/us/en/silicon-innovations/moores-law-technology.html .. _more transistors on denser and denser circuits: https://www.intel.com/content/www/us/en/silicon-innovations/moores-law-technology.html
.. _Stripe: https://arxiv.org/abs/1903.06498
\ No newline at end of file
...@@ -3,9 +3,17 @@ ...@@ -3,9 +3,17 @@
Release Notes Release Notes
############# #############
|release| This is |release|.
CHANGELOG
=========
(Last updated September 2018)
This release focuses on accelerating deep learning inference workloads on This release focuses on accelerating deep learning inference workloads on
Intel® Xeon® (CPU processor) and has the following key features: Intel® Xeon® (CPU processor) and has the following key features:
...@@ -31,9 +39,3 @@ In our tests, the optimized workloads can perform up to 45X faster than native ...@@ -31,9 +39,3 @@ In our tests, the optimized workloads can perform up to 45X faster than native
frameworks, and we expect performance gains for other workloads due to our frameworks, and we expect performance gains for other workloads due to our
powerful :doc:`../core/fusion/index` feature. powerful :doc:`../core/fusion/index` feature.
See also our recent `API changes`_
.. _API changes: https://github.com/NervanaSystems/ngraph/blob/master/changes.md
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment