Hardware accelerator templates and design frameworks for implementing recurrent neural networks (RNNs) and variants thereof are described. A design framework module obtains a flow graph for an RNN algorithm. The flow graph identifies operations to be performed to implement the RNN algorithm and further identifies data dependencies between ones of the operations. The operations include matrix operations and vector operations. The design framework module maps the operations of the flow graph to an accelerator hardware template, yielding an accelerator instance comprising register transfer language code that describes how one or more matrix processing units and one or more vector processing units are to be arranged to perform the RNN algorithm. At least one of the one or more MPUs, as part of implementing the RNN algorithm, is to directly provide or directly receive a value from one of the one or more VPUs.
Please help me write a proper abstract based on the patent claims. CLAIM: 1. A method in a design framework module implemented by an electronic device for generating an accelerator instance optimized to implement a recurrent neural network (RNN) algorithm comprising: obtaining, by the design framework module, a flow graph for the RNN algorithm, the flow graph identifying a plurality of operations to be performed to implement the RNN algorithm and further identifying data dependencies between ones of the plurality of operations, wherein the plurality of operations include one or more matrix operations and one or more vector operations; and mapping, by the design framework module, the plurality of operations of the flow graph to an accelerator hardware template to yield the accelerator instance comprising register transfer language (RTL) code that describes how one or more matrix processing units (MPUs) and one or more vector processing units (VPUs) are to be arranged to perform the RNN algorithm, wherein at least one of the one or more MPUs, as part of implementing the RNN algorithm, is to directly provide or directly receive a value from one of the one or more VPUs. 2. The method of claim 1, wherein the obtaining comprises: computing, by the design framework module, the flow graph based upon a plurality of equations corresponding to the RNN algorithm. 3. The method of claim 1, wherein the mapping is based upon hardware design constraints indicating amounts or capabilities of hardware elements that can be utilized in the accelerator instance. 4. The method of claim 1, wherein the mapping is based upon optimization goals indicating properties of the accelerator instance that should be optimized for. 5. The method of claim 1, wherein the mapping is based upon one or more dataset properties identifying properties of input data for the RNN algorithm to be used with the accelerator instance. 6. The method of claim 1, wherein the mapping further yields a compiler that is executable to program an accelerator, generated based upon the accelerator instance, to execute micro-code to implement the RNN algorithm. 7. The method of claim 6, wherein the compiler is to program the accelerator by causing a control unit of the accelerator to execute at least some of the micro-code. 8. The method of claim 1, further comprising: validating a performance of and functionalities of the generated accelerator instance against one or more performance and functional models derived from hardware design constraints and optimization goals. 9. The method of claim 1, further comprising at least one of: programming a Field Programmable Gate Array (FPGA), using the accelerator instance, to cause the FPGA to become operable to implement the RNN algorithm; and providing the RTL code to be used as an input to a logic synthesis tool to yield a circuit design for an Application-Specific Integrated Circuit (ASIC). 10. The method of claim 1, wherein the RNN algorithm is either: a gated recurrent unit (GRU) RNN variant; or a long short term memory (LSTM) RNN variant. 11. A non-transitory machine readable storage medium having instructions which, when executed by one or more processors of a device, cause the device to implement a design framework module to generate an accelerator instance optimized to implement a recurrent neural network (RNN) algorithm by performing operations comprising: obtaining a flow graph for the RNN algorithm, the flow graph identifying a plurality of operations to be performed to implement the RNN algorithm and further identifying data dependencies between ones of the plurality of operations, wherein the plurality of operations include one or more matrix operations and one or more vector operations; and mapping the plurality of operations of the flow graph to an accelerator hardware template to yield the accelerator instance comprising register transfer language (RTL) code that describes how one or more matrix processing units (MPUs) and one or more vector processing units (VPUs) are to be arranged to perform the RNN algorithm, wherein at least one of the one or more MPUs, as part of implementing the RNN algorithm is to directly provide or directly receive a value from one of the one or more VPUs. 12. The non-transitory machine readable storage medium of claim 11, wherein the obtaining comprises: computing the flow graph based upon a plurality of equations corresponding to the RNN algorithm. 13. The non-transitory machine readable storage medium of claim 11, wherein the mapping is based upon hardware design constraints indicating amounts or capabilities of hardware elements that can be utilized in the accelerator instance. 14. The non-transitory machine readable storage medium of claim 11, wherein the mapping is based upon optimization goals indicating properties of the accelerator instance that should be optimized for. 15. The non-transitory machine readable storage medium of claim 11, wherein the mapping is based upon one or more dataset properties identifying properties of input data for the RNN algorithm to be used with the accelerator instance. 16. The non-transitory machine readable storage medium of claim 11, wherein the mapping further yields a compiler that is executable to program an accelerator, generated based upon the accelerator instance, to execute micro-code to implement the RNN algorithm. 17. The non-transitory machine readable storage medium of claim 16, wherein the compiler is to program the accelerator by causing a control unit of the accelerator to execute at least some of the micro-code. 18. The non-transitory machine readable storage medium of claim 11, wherein the operations further comprise: validating a performance of and functionalities of the generated accelerator instance against one or more performance and functional models derived from hardware design constraints and optimization goals. 19. The non-transitory machine readable storage medium of claim 18, wherein the operations further comprise at least one of: programming a Field Programmable Gate Array (FPGA), using the accelerator instance, to cause the FPGA to become operable to implement the RNN algorithm; and providing the RTL code to be used as an input to a logic synthesis tool to yield a circuit design for an Application-Specific Integrated Circuit (ASIC). 20. A device comprising: one or more processors; and one or more non-transitory machine readable storage media having instructions which, when executed by the one or more processors, cause the device to implement a design framework module that is to generate an accelerator instance optimized to implement a recurrent neural network (RNN) algorithm by performing operations comprising: obtaining a flow graph for the RNN algorithm, the flow graph identifying a plurality of operations to be performed to implement the RNN algorithm and further identifying data dependencies between ones of the plurality of operations, wherein the plurality of operations include one or more matrix operations and one or more vector operations; and mapping the plurality of operations of the flow graph to an accelerator hardware template to yield the accelerator instance comprising register transfer language (RTL) code that describes how one or more matrix processing units (MPUs) and one or more vector processing units (VPUs) are to be arranged to perform the RNN algorithm, wherein at least one of the one or more MPUs, as part of implementing the RNN algorithm is to directly provide or directly receive a value from one of the one or more VPUs.