Commit 400bf7da authored by Leona C's avatar Leona C Committed by Scott Cyphers

Update template for release notes and CHANGELOG with latest few summaries from…

Update template for release notes and CHANGELOG with latest few summaries from ngraph releases repo (#2696)

* Update Release Notes for Github summaries, incorporate feedback from doc review, fix typos, etc

* Fix links

* Rename RCs on template

* PR reviews

* Remove trailing spaces and add clarification on Python API example

* Fix typo
parent 5cec2e37
...@@ -1725,6 +1725,7 @@ h1 { ...@@ -1725,6 +1725,7 @@ h1 {
h2, .rst-content .toctree-wrapper p.caption { h2, .rst-content .toctree-wrapper p.caption {
font-size: 139%; font-size: 139%;
font-weight: lighter; font-weight: lighter;
color: #30333c;
} }
h3 { h3 {
......
...@@ -73,11 +73,11 @@ author = 'Intel Corporation' ...@@ -73,11 +73,11 @@ author = 'Intel Corporation'
# built documents. # built documents.
# #
# The short X.Y version. # The short X.Y version.
version = '0.16' version = '0.17'
# The Documentation full version, including alpha/beta/rc tags. Some features # The Documentation full version, including alpha/beta/rc tags. Some features
# available in the latest code will not necessarily be documented first # available in the latest code will not necessarily be documented first
release = '0.16.1' release = '0.17.0'
# The language for content autogenerated by Sphinx. Refer to documentation # The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages. # for a list of supported languages.
......
...@@ -27,7 +27,7 @@ Automating graph construction ...@@ -27,7 +27,7 @@ Automating graph construction
============================== ==============================
In a :abbr:`Machine Learning (ML)` ecosystem, it makes sense to use automation In a :abbr:`Machine Learning (ML)` ecosystem, it makes sense to use automation
and abstraction whereever possible. nGraph was designed to automatically use and abstraction where possible. nGraph was designed to automatically use
the "ops" of tensors provided by a framework when constructing graphs. However, the "ops" of tensors provided by a framework when constructing graphs. However,
nGraph's graph-construction API operates at a fundamentally lower level than a nGraph's graph-construction API operates at a fundamentally lower level than a
typical framework's API, and writing a model directly in nGraph would be somewhat typical framework's API, and writing a model directly in nGraph would be somewhat
......
...@@ -101,7 +101,7 @@ Maintenance Passes ...@@ -101,7 +101,7 @@ Maintenance Passes
---------------------------- ----------------------------
.. figure:: ../../graphics/algebraic-simpl.png .. figure:: ../../graphics/algebraic-simpl.png
:width: 650px :width: 450 px
Algebraic simplification Algebraic simplification
...@@ -152,7 +152,7 @@ can be. ...@@ -152,7 +152,7 @@ can be.
The pass also called **Reshape/Transpose Elimination** will find and optimize where The pass also called **Reshape/Transpose Elimination** will find and optimize where
we can "push" two ``Transpose`` ops through a matrix multiplication. For example, we can "push" two ``Transpose`` ops through a matrix multiplication. For example,
if you have two matrices (say, *foo* and *bar*), both of these matrices will be if you have two matrices (say, *foo* and *bar*), both of these matrices will be
transposed (to produce *foo.t* and *bar.t*, respectively), aftew which *foo.t* transposed (to produce *foo.t* and *bar.t*, respectively), after which *foo.t*
and *bar.t* get multiplied together. and *bar.t* get multiplied together.
Often a more efficient way to implement this is to switch the order of the Often a more efficient way to implement this is to switch the order of the
...@@ -160,7 +160,7 @@ arguments *foo* and *bar*, multiply them together, and then transpose the output ...@@ -160,7 +160,7 @@ arguments *foo* and *bar*, multiply them together, and then transpose the output
of the matmul. Effectively, this cuts two `Transpose` operations down to just of the matmul. Effectively, this cuts two `Transpose` operations down to just
one, where the **Reshape/Transpose** elimination will do that rewrite for you. one, where the **Reshape/Transpose** elimination will do that rewrite for you.
Another common pattern can be optimized via nGraph is the case where two Another common pattern that can be optimized via nGraph is the case where two
transpositions cancel each other out. One example of this is taking the transpositions cancel each other out. One example of this is taking the
"Transpose" of the transpose of a matrix, though actually a more common case is "Transpose" of the transpose of a matrix, though actually a more common case is
when the graph is translating among different batch formats. We can often move when the graph is translating among different batch formats. We can often move
...@@ -169,7 +169,6 @@ and in cases where two transposes wind up canceling each other out, we can cut ...@@ -169,7 +169,6 @@ and in cases where two transposes wind up canceling each other out, we can cut
them both out of the graph. them both out of the graph.
.. _reshape_transpose_sink: .. _reshape_transpose_sink:
``Reshape Sinking`` ``Reshape Sinking``
......
...@@ -63,7 +63,8 @@ additional component to be able to use these configuration settings. ...@@ -63,7 +63,8 @@ additional component to be able to use these configuration settings.
* ``KMP_BLOCKTIME`` Sets the time, in milliseconds, that a thread should wait * ``KMP_BLOCKTIME`` Sets the time, in milliseconds, that a thread should wait
after completing the execution of a parallel region, before sleeping. after completing the execution of a parallel region, before sleeping.
* ``KMP_AFFINITY`` Enables the runtime library to bind threads to physical * ``KMP_AFFINITY`` Enables the runtime library to bind threads to physical
processing units. processing units. A useful article that explains more about how to use this
option for various CPU backends is here: https://web.archive.org/web/20190401182248/https://www.nas.nasa.gov/hecc/support/kb/Using-Intel-OpenMP-Thread-Affinity-for-Pinning_285.html
* ``KMP_SETTINGS`` Enables (``true``) or disables (``false``) the printing of * ``KMP_SETTINGS`` Enables (``true``) or disables (``false``) the printing of
OpenMP\* runtime library environment variables during program execution. OpenMP\* runtime library environment variables during program execution.
* ``OMP_NUM_THREADS`` Specifies the number of threads to use. * ``OMP_NUM_THREADS`` Specifies the number of threads to use.
...@@ -162,9 +163,8 @@ Compiler stack runs on transformers handled by Intel® Architecture (IA), and ...@@ -162,9 +163,8 @@ Compiler stack runs on transformers handled by Intel® Architecture (IA), and
thus can make more efficient use of the underlying hardware. thus can make more efficient use of the underlying hardware.
.. _KMP options: https://software.intel.com/en-us/cpp-compiler-developer-guide-and-reference-controlling-thread-allocation
.. KMP options: https://software.intel.com/en-us/node/522691
.. _KMP options: https://software.intel.com/en-us/node/522691
.. _MKL-DNN: https://github.com/intel/mkl-dnn .. _MKL-DNN: https://github.com/intel/mkl-dnn
.. _gnu.org site: https://gcc.gnu.org/onlinedocs/libgomp/Environment-Variables.html .. _gnu.org site: https://gcc.gnu.org/onlinedocs/libgomp/Environment-Variables.html
.. _Movidius: https://www.movidius.com/ .. _Movidius: https://www.movidius.com/
......
...@@ -18,6 +18,9 @@ cloned from one of our GitHub repos and built to connect to nGraph device ...@@ -18,6 +18,9 @@ cloned from one of our GitHub repos and built to connect to nGraph device
backends 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.
ONNX is not a framework; however, it can be used with nGraph's :doc:../python_api/index`
to import and execute ONNX models.
.. 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
......
...@@ -132,7 +132,7 @@ and nGraph bridges are provided below: ...@@ -132,7 +132,7 @@ and nGraph bridges are provided below:
operator transformation. The relevant interfaces are: operator transformation. The relevant interfaces are:
- GetInputNode: obtains input node for the conversion operator. The nodes - GetInputNode: obtains input node for the conversion operator. The nodes
are manged through a map. are managed through a map.
- SetOutputNode: sets the constructed node to the map. - SetOutputNode: sets the constructed node to the map.
- Related code : - Related code :
+ ``Paddle/fluid/operators/ngraph/ngraph_bridge.h`` `link to ngraph_bridge header code`_ + ``Paddle/fluid/operators/ngraph/ngraph_bridge.h`` `link to ngraph_bridge header code`_
......
...@@ -16,11 +16,10 @@ MXNet\*, where `Intel has contributed efforts showing`_ how to work with our ...@@ -16,11 +16,10 @@ MXNet\*, where `Intel has contributed efforts showing`_ how to work with our
nGraph Compiler stack as an `experimental backend`_. Our approach provides nGraph Compiler stack as an `experimental backend`_. Our approach provides
**more opportunities** to start working with different kinds of graph **more opportunities** to start working with different kinds of graph
optimizations **than would be available to the MXNet framework alone**, for optimizations **than would be available to the MXNet framework alone**, for
reasons outlined in our `introduction`_ documentation. reasons outlined in our `introduction`_ documentation. Note that the
MXNet bridge requires trained models only; it does not support distributed
training.
.. TODO : Link to latest on mxnet when/if they do this instead of linking to PR;
keep in mind this tutorial will still work regardless of the merge status of
the experimental backend if you already use the ngraph-mxnet Github repo
.. figure:: ../../graphics/ngraph-mxnet-models.png .. figure:: ../../graphics/ngraph-mxnet-models.png
...@@ -98,7 +97,7 @@ To load the model into nGraph, we simply bind the symbol into an Executor. ...@@ -98,7 +97,7 @@ To load the model into nGraph, we simply bind the symbol into an Executor.
At binding, the MXNet Subgraph API finds nGraph, determines how to partition At binding, the MXNet Subgraph API finds nGraph, determines how to partition
the graph, and in the case of Resnet, sends the entire graph to nGraph for the graph, and in the case of Resnet, sends the entire graph to nGraph for
compilation. This produces a single call to an NNVM ``NGraphSubgraphOp`` embedded compilation. This produces a single call to an `NNVM`_ ``NGraphSubgraphOp`` embedded
with the compiled model. At this point, we can test the model's performance. with the compiled model. At this point, we can test the model's performance.
.. literalinclude:: ../../../../examples/subgraph_snippets/mxnet-gluon-example.py .. literalinclude:: ../../../../examples/subgraph_snippets/mxnet-gluon-example.py
...@@ -111,4 +110,5 @@ with the compiled model. At this point, we can test the model's performance. ...@@ -111,4 +110,5 @@ with the compiled model. At this point, we can test the model's performance.
.. _introduction: http://ngraph.nervanasys.com/docs/latest/project/introduction.html .. _introduction: http://ngraph.nervanasys.com/docs/latest/project/introduction.html
.. _gluon model zoo: https://github.com/apache/incubator-mxnet/blob/master/python/mxnet/gluon/model_zoo/vision/resnet.py#L499 .. _gluon model zoo: https://github.com/apache/incubator-mxnet/blob/master/python/mxnet/gluon/model_zoo/vision/resnet.py#L499
.. _subgraph acceleration API: https://cwiki.apache.org/confluence/display/MXNET/Unified+integration+with+external+backend+libraries .. _subgraph acceleration API: https://cwiki.apache.org/confluence/display/MXNET/Unified+integration+with+external+backend+libraries
.. _NNVM: https://github.com/dmlc/nnvm
.. _nGraph-MXNet: https://github.com/NervanaSystems/ngraph-mxnet/blob/master/README.md .. _nGraph-MXNet: https://github.com/NervanaSystems/ngraph-mxnet/blob/master/README.md
...@@ -22,7 +22,7 @@ nGraph Compiler stack ...@@ -22,7 +22,7 @@ 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 many 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™
...@@ -116,5 +116,5 @@ Indices and tables ...@@ -116,5 +116,5 @@ Indices and tables
.. _nGraph: https://www.ngraph.ai .. nGraph: https://www.ngraph.ai
.. _up to 45X: https://ai.intel.com/ngraph-compiler-stack-beta-release/ .. _up to 45X: https://ai.intel.com/ngraph-compiler-stack-beta-release/
\ No newline at end of file
.. ops/index.rst .. ops/index.rst
#################### ####################
List of Core ``ops`` List of Core ``ops``
...@@ -163,7 +163,7 @@ dependency computation graph. ...@@ -163,7 +163,7 @@ dependency computation graph.
bridges and that can be compiled by all transformers. A framework bridge may bridges and that can be compiled by all transformers. A framework bridge may
define framework-specific ops to simplify graph construction, provided that the define framework-specific ops to simplify graph construction, provided that the
bridge can enable every transformer to replace all such ops with equivalent bridge can enable every transformer to replace all such ops with equivalent
clusters or subgraphs composed of core ops. Similary, transformers may define clusters or subgraphs composed of core ops. In a similar manner, transformers may define
transformer-specific ops to represent kernels or other intermediate operations. transformer-specific ops to represent kernels or other intermediate operations.
If a framework supports extending the set of ops it offers, a bridge may even If a framework supports extending the set of ops it offers, a bridge may even
...@@ -181,7 +181,7 @@ expose transformer-specific ops to the framework user. ...@@ -181,7 +181,7 @@ expose transformer-specific ops to the framework user.
running kernels; rather, our compilation will match ``ops`` to appropriate running kernels; rather, our compilation will match ``ops`` to appropriate
kernels for the backend(s) in use. Thus, we expect that adding of new Core kernels for the backend(s) in use. Thus, we expect that adding of new Core
ops should be infrequent and that most functionality instead gets added with ops should be infrequent and that most functionality instead gets added with
new functions that build sub-graphs from existing core ops. new functions that build sub-graphs from existing core ops.
It is easiest to define a new op by adapting an existing op. Some of the tasks It is easiest to define a new op by adapting an existing op. Some of the tasks
that must be performed are: that must be performed are:
......
.. release-notes: .. ngraph/release-notes:
Release Notes Release Notes
############# #############
This is |release|. The latest |version| download below
* `Format .zip`_
* `Format tar.gz`_
See also: https://github.com/NervanaSystems/ngraph/releases for previous versions.
CHANGELOG |release|
===================
CHANGELOG
=========
(Last updated September 2018) nGraph v0.17.0-rc.0
-------------------
+ Allow negative padding in more places
+ Add code generation for some quantized ops
+ Preliminary dynamic shape support
+ initial distributed ops
Recent API Changes
~~~~~~~~~~~~~~~~~~
This release focuses on accelerating deep learning inference workloads on + Pad op takes CoordinateDiff instead of Shape pad values to allow for negative padding.
Intel® Xeon® (CPU processor) and has the following key features:
* Out-of-box installation experience for TensorFlow*, MXNet*, and ONNX.
* Validated optimizations for 17 workloads each on both TensorFlow and MXNet,
as well as 14 for ONNX.
* Support for Ubuntu 16.04 (TensorFlow, MXNet and ONNX).
* Support for OSX 10.13.x (buildable for TensorFlow and MXNet).
This |version| release includes optimizations built for popular workloads Changelog
already widely deployed in production environments. These workloads cover =========
the following categories:
nGraph v0.16.0-rc.3
-------------------
* ``image recognition & segmentation`` + NodeInput and NodeOutput classes prepare for simplifications of Node
* ``object detection`` + Test improvements
* ``language translation`` + Additional quantization ops
* ``speech generation & recognition`` + Performance improvements
* ``recommender systems`` + Fix memory leak
* ``Generative Adversarial Networks (GAN)`` + Concat optimization
* ``reinforcement learning`` + Doc updates
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
powerful :doc:`../core/fusion/index` feature.
.. _Format .zip: https://github.com/NervanaSystems/ngraph/archive/v0.17.0-rc.0.zip
.. _Format tar.gz: https://github.com/NervanaSystems/ngraph/archive/v0.17.0-rc.0.tar.gz
\ No newline at end of file
...@@ -8,13 +8,19 @@ This section contains the Python API component of the nGraph Compiler stack. The ...@@ -8,13 +8,19 @@ This section contains the Python API component of the nGraph Compiler stack. The
Python API exposes nGraph™ C++ operations to Python users. For quick-start you Python API exposes nGraph™ C++ operations to Python users. For quick-start you
can find an example of the API usage below. can find an example of the API usage below.
Note that the output at ``print(model)`` may vary; it varies according to the
number of nodes or variety of :term:`step` used to compute the printed solution.
Various NNs configured in different ways should produce the same result for
simple calculations or accountings. More complex computations may have minor
variations with respect to how precise they ought to be. For example, a more
efficient graph ``<Multiply: 'Multiply_12' ([2, 2])>`` can also be achieved
with some configurations.
.. literalinclude:: ../../../../python/examples/basic.py .. literalinclude:: ../../../../python/examples/basic.py
:language: python :language: python
:lines: 18-47 :lines: 18-47
:caption: "Basic example"
======= =======
......
...@@ -3,8 +3,8 @@ ...@@ -3,8 +3,8 @@
[nGraph][ngraph_github] is an open-source graph compiler for Artificial [nGraph][ngraph_github] is an open-source graph compiler for Artificial
Neural Networks (ANNs). The nGraph Compiler stack provides an inherently Neural Networks (ANNs). The nGraph Compiler stack provides an inherently
efficient graph-based compilation infrastructure designed to be compatible efficient graph-based compilation infrastructure designed to be compatible
with the many upcoming processors, like the Intel(R) Nervana(TM) Neural Network with the many upcoming processors, like the Intel Nervana&trade; Neural Network
Processor (Intel(R) Nervana(TM) NNP), while also unlocking a massive performance Processor (Intel&reg; Nervana&trade; NNP), while also unlocking a massive performance
boost on any existing hardware targets in your neural network: both GPUs boost on any existing hardware targets in your neural network: both GPUs
and CPUs. Using its flexible infrastructure, you will find it becomes and CPUs. Using its flexible infrastructure, you will find it becomes
much easier to create Deep Learning (DL) models that can adhere to the much easier to create Deep Learning (DL) models that can adhere to the
...@@ -40,6 +40,7 @@ computation is simple. The following example shows how to create a minimal ...@@ -40,6 +40,7 @@ computation is simple. The following example shows how to create a minimal
`(A + B) * C` computation graph and calculate a result using 3 numpy arrays `(A + B) * C` computation graph and calculate a result using 3 numpy arrays
as input. as input.
```python ```python
import numpy as np import numpy as np
import ngraph as ng import ngraph as ng
...@@ -84,3 +85,5 @@ print('Result = ', result) ...@@ -84,3 +85,5 @@ print('Result = ', result)
[api_cpp]: https://ngraph.nervanasys.com/docs/latest/backend-support/cpp-api.html [api_cpp]: https://ngraph.nervanasys.com/docs/latest/backend-support/cpp-api.html
[core documentation]: https://ngraph.nervanasys.com/docs/latest/core/overview.html [core documentation]: https://ngraph.nervanasys.com/docs/latest/core/overview.html
[nGraph Ops]: http://ngraph.nervanasys.com/docs/latest/ops/index.html [nGraph Ops]: http://ngraph.nervanasys.com/docs/latest/ops/index.html
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