From 917304ed422947d39bee510c5bfa0b0b3d87392a Mon Sep 17 00:00:00 2001 From: Daniel Lowell Date: Thu, 11 Apr 2019 23:12:29 -0500 Subject: [PATCH] Docs18 (#1673) * Added release notes. * Added pooling and 3-d convolution documentation. --- README.md | 7 +++++-- doc/src/convolution.rst | 27 +++++++++++++++++++++++++++ doc/src/index.rst | 2 ++ doc/src/pooling.rst | 20 ++++++++++++++++++++ doc/src/releasenotes.md | 40 ++++++++++++++++++++++++++++++++++++++++ include/miopen/miopen.h | 29 +++++++++++++++++------------ 6 files changed, 111 insertions(+), 14 deletions(-) diff --git a/README.md b/README.md index ea70a5fae8..0ca92c4757 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,9 @@ # MIOpen -AMD's library for high peformance machine learning primitives. MIOpen supports two programming models - +AMD's library for high performance machine learning primitives. +Sources and binaries can be found at [MIOpen's GitHub site](https://github.com/ROCmSoftwarePlatform/MIOpen). + +MIOpen supports two programming models - 1. OpenCL 2. [HIP](https://github.com/ROCm-Developer-Tools/HIP) @@ -16,7 +19,7 @@ AMD's library for high peformance machine learning primitives. MIOpen supports t * [Half](http://half.sourceforge.net/) - IEEE 754-based half-precision floating point library * [Boost](http://www.boost.org/) at least version 1.58 * MIOpen uses `boost-system` and `boost-filesystem` packages to enable persistent [kernel cache](https://github.com/ROCmSoftwarePlatform/MIOpen/blob/master/doc/src/cache.md) -* [rocBlas](https://github.com/ROCmSoftwarePlatform/rocBLAS) Minimum version 2.0.0 (recommended version 2.1.0) +* [rocBlas](https://github.com/ROCmSoftwarePlatform/rocBLAS) Minimum version 2.0.0 (recommended version 2.2.0) ## Installing MIOpen with pre-built packages diff --git a/doc/src/convolution.rst b/doc/src/convolution.rst index f0e283bceb..7b3510b493 100644 --- a/doc/src/convolution.rst +++ b/doc/src/convolution.rst @@ -40,21 +40,48 @@ miopenInitConvolutionDescriptor .. doxygenfunction:: miopenInitConvolutionDescriptor +miopenInitConvolutionNdDescriptor +--------------------------------- + +.. doxygenfunction:: miopenInitConvolutionNdDescriptor + miopenGetConvolutionDescriptor ------------------------------ .. doxygenfunction:: miopenGetConvolutionDescriptor +miopenGetConvolutionNdDescriptor +-------------------------------- + +.. doxygenfunction:: miopenGetConvolutionNdDescriptor + miopenSetConvolutionGroupCount ------------------------------ .. doxygenfunction:: miopenSetConvolutionGroupCount +miopenSetTransposeConvOutputPadding +----------------------------------- + +.. doxygenfunction:: miopenSetTransposeConvOutputPadding + + +miopenSetTransposeConvNdOutputPadding +------------------------------------- + +.. doxygenfunction:: miopenSetTransposeConvNdOutputPadding + + miopenGetConvolutionForwardOutputDim ------------------------------------ .. doxygenfunction:: miopenGetConvolutionForwardOutputDim +miopenGetConvolutionNdForwardOutputDim +-------------------------------------- + +.. doxygenfunction:: miopenGetConvolutionNdForwardOutputDim + miopenConvolutionForwardGetWorkSpaceSize ---------------------------------------- diff --git a/doc/src/index.rst b/doc/src/index.rst index 9199e7e5d0..2509db6110 100644 --- a/doc/src/index.rst +++ b/doc/src/index.rst @@ -7,6 +7,8 @@ Welcome to MIOpen ================= **Advanced Micro Devices, Inc's open source deep learning library.** +Sources and binaries can be found at `MIOpen's GitHub site `_. + .. toctree:: :maxdepth: 4 :caption: Contents: diff --git a/doc/src/pooling.rst b/doc/src/pooling.rst index 6c1eec1a3f..feb59048f4 100644 --- a/doc/src/pooling.rst +++ b/doc/src/pooling.rst @@ -10,6 +10,11 @@ miopenPoolingMode_t .. doxygenenum:: miopenPoolingMode_t +miopenIndexType_t +----------------- + +.. doxygenenum:: miopenIndexType_t + miopenCreatePoolingDescriptor ----------------------------- @@ -20,6 +25,16 @@ miopenSet2dPoolingDescriptor .. doxygenfunction:: miopenSet2dPoolingDescriptor +miopenSetPoolingIndexType +------------------------- + +.. doxygenfunction:: miopenSetPoolingIndexType + +miopenGetPoolingIndexType +------------------------- + +.. doxygenfunction:: miopenGetPoolingIndexType + miopenGet2dPoolingDescriptor ---------------------------- @@ -35,6 +50,11 @@ miopenPoolingGetWorkSpaceSize .. doxygenfunction:: miopenPoolingGetWorkSpaceSize +miopenPoolingGetWorkSpaceSizeV2 +------------------------------- + +.. doxygenfunction:: miopenPoolingGetWorkSpaceSizeV2 + miopenPoolingForward -------------------- diff --git a/doc/src/releasenotes.md b/doc/src/releasenotes.md index 1b5c0bfcfe..3f4781a3ea 100644 --- a/doc/src/releasenotes.md +++ b/doc/src/releasenotes.md @@ -1,6 +1,46 @@ ## MIOpen Release notes + +### 04/11/2019 [ 1.8.0 ] + +- This release contaings full 3-D convolution support and int8 support for interfence. +- Additionally, there are major updates in the performance database for major models including those found in Torchvision. +- An assortment of bugs have been resolved in this release. + + +Changes: + +- Fixed various issues in assembly kernels +- Fixed issue #92 and #79 for miopenOpTensor +- Fixed issue #88 for bzip2 +- Fixed issue #77 algorithm mismatch +- Added Winograd suport for fp32 backwards weights +- Added pooling inclusive mode +- Added tuning for direct group convolution algorithms +- Added additional kernel supoort for group convolutions +- Added API for 3-D convolutions +- Added support for int8 inference convolutions +- Added integer selection for pooling indexing +- Added minimum dependencies support +- Added RNN fp16 support on the MIOpen-HIP backend +- Added 1x1 convolution + bias + activation fusions +- Added workaround for issue #84 GPU memory access fault +- Added performance tuning for direct backwards weights +- Improved performance database coverage +- Improved internal quality by reducing redunant code +- Improved build instructions in README.md +- Improved performance database coverage for fusions +- Updated Docker components and requirements + + +Known Issues: + +- RNNs do not support fp16 on the MIOpen-OpenCL backend +- OpenCL backend does not support GEMM convolutions in fp16 + + + ### 02/06/2019 [ 1.7.1 ] - This release contains minor bug fixes and performance improvements. diff --git a/include/miopen/miopen.h b/include/miopen/miopen.h index 1d61c9288f..b9aa29c8d4 100644 --- a/include/miopen/miopen.h +++ b/include/miopen/miopen.h @@ -300,7 +300,7 @@ typedef enum { 4, /*!< Pack of four 8-bit int points in NCHW_VECT_C format (Partially supported) */ } miopenDataType_t; -/*! @ingroup tensor +/*! @ingroup pooling * @enum miopenIndexType_t * MIOpen index datatypes. */ @@ -718,7 +718,7 @@ miopenSetTransposeConvOutputPadding(miopenConvolutionDescriptor_t convDesc, int * This function is optional for initialization of Transpose convolution. If applicable, it must be * called before all computational APIs of Transpose convolution. It is preferable to call * miopenInitConvolutionNdDescriptor() first, then miopenSetTransposeConvNdOutputPadding() to fully -* initialize transpose convolutions. +* initialize transpose convolutions. Currently, 2-D and 3-D convolutions are supported. * * @param convDesc Convolution layer descriptor (output) * @param spatialDim Convolutional spatial dimension (input) @@ -758,9 +758,8 @@ miopenGetConvolutionForwardOutputDim(miopenConvolutionDescriptor_t convDesc, * * This function returns the dimensions of the resulting N-dimensional tensor of a (N-2)-dimensional * convolution, given the convolution descriptor, the input tensor descriptor - * and the filter descriptor. This function can help to setup the output tensor - * and allocate the proper amount of memory prior to launch the actual - * convolution. + * and the filter descriptor. It is used to setup the output tensor descriptor prior to executing + * the convolution layer. * * @param convDesc Convolution layer descriptor (input) * @param inputTensorDesc Input data tensor descriptor (input) @@ -1261,7 +1260,9 @@ MIOPEN_EXPORT miopenStatus_t miopenConvolutionBackwardBias(miopenHandle_t handle */ MIOPEN_EXPORT miopenStatus_t miopenCreatePoolingDescriptor(miopenPoolingDescriptor_t* poolDesc); -/*! @brief Set index data type for pooling layer +/*! @brief Set index data type for pooling layer. The default indexing type is uint8_t. + * Users can set the index type to any of the miopenIndexType_t sizes; 8, 16, 32, or 64 bit + * unsigned integers. * * @param poolDesc Pointer to a pooling layer descriptor (input) * @param index_type Index type (input) @@ -1270,7 +1271,8 @@ MIOPEN_EXPORT miopenStatus_t miopenCreatePoolingDescriptor(miopenPoolingDescript MIOPEN_EXPORT miopenStatus_t miopenSetPoolingIndexType(miopenPoolingDescriptor_t poolDesc, miopenIndexType_t index_type); -/*! @brief Get index data type for pooling layer +/*! @brief Get the index data type for pooling layer. The index type to any of the + * miopenIndexType_t sizes; 8, 16, 32, or 64 bit unsigned integers. * * @param poolDesc Pointer to a pooling layer descriptor (input) * @param index_type Index type (output) @@ -1279,9 +1281,9 @@ MIOPEN_EXPORT miopenStatus_t miopenSetPoolingIndexType(miopenPoolingDescriptor_t MIOPEN_EXPORT miopenStatus_t miopenGetPoolingIndexType(miopenPoolingDescriptor_t poolDesc, miopenIndexType_t* index_type); -/*! @brief Sets a 2-D pooling layer descriptor details +/*! @brief Sets a 2-D pooling layer descriptor details. * - * Sets the window shape, padding, and stride for a previously created 2-D pooling descriptor + * Sets the window shape, padding, and stride for a previously created 2-D pooling descriptor. * * @param poolDesc Pointer to a pooling layer descriptor (output) * @param mode Pooling mode enum (input) @@ -1304,7 +1306,7 @@ MIOPEN_EXPORT miopenStatus_t miopenSet2dPoolingDescriptor(miopenPoolingDescripto /*! @brief Gets a 2-D pooling layer descriptor details * - * Gets the window shape, padding, and stride for a previously created 2-D pooling descriptor + * Gets the window shape, padding, and stride for a previously created 2-D pooling descriptor. * * @param poolDesc Pointer to a pooling layer descriptor (input) * @param mode Pooling mode enum (output) @@ -1351,7 +1353,9 @@ miopenGetPoolingForwardOutputDim(const miopenPoolingDescriptor_t poolDesc, * * Retrieves the amount of workspace in bytes require for pooling. This call is required to * determine the amount of GPU memory needed for the backwards pooling algorithms. For max- - * pooling, an assumption is that index data type is uint8_t + * pooling, an assumption is that index data type is uint8_t, therefore the returned + * workspace size will be based on this assumption even if the user sets the index type with + * miopenSetPoolingIndexType(). * * @param yDesc Descriptor for pooling layer (input) * @param workSpaceSize Pointer to workSpaceSize (output) @@ -1364,7 +1368,8 @@ MIOPEN_EXPORT miopenStatus_t miopenPoolingGetWorkSpaceSize(const miopenTensorDes * * Retrieves the amount of workspace in bytes require for pooling. This call is required to * determine the amount of GPU memory needed for the backwards pooling algorithms. For max- - * pooling, there is no assumption on index data type + * pooling, there is no assumption on index data type. As the user can set the index datatype + * size using miopenSetPoolingIndexType(). * * @param poolDesc Pointer to a pooling layer descriptor (input) * @param yDesc Descriptor for pooling layer (input)