@@ -344,3 +344,29 @@ in Figure :numref:`ch-deploy/winograd`.
344344
345345![ Winogradsteps] ( ../img/ch08/ch09-winograd.png )
346346:label : ` ch-deploy/winograd `
347+
348+ To use Winograd of *** F*** (2$\times$` <!-- --> ` {=html}2,
349+ 3$\times$` <!-- --> ` {=html}3) for any output size, we need to divide the
350+ output into 2$\times$` <!-- --> ` {=html}2 blocks. We can then perform the
351+ preceding four steps using the corresponding input to obtain the
352+ corresponding output. Winograd is not limited to solving
353+ *** F*** (2$\times$` <!-- --> ` {=html}2, 3$\times$` <!-- --> ` {=html}3). For
354+ any *** F*** ($m \times m$, $r \times r$), appropriate constant matrices
355+ *** A*** , *** B*** , and *** G*** can be found to reduce the number of
356+ multiplications through indirect computation. However, as $m$ and $r$
357+ increase, the number of additions involved in input and output and the
358+ number of multiplications of constant weights increase. In this case,
359+ the decrease in the computation workload brought by fewer
360+ multiplications is offset by additions and constant multiplications.
361+ Therefore, we need to evaluate the benefits of Winograd before using it.
362+
363+ This section describes methods for processing data and optimizing
364+ performance during model inference. An appropriate data processing
365+ method can facilitate the input feature extraction and output
366+ processing. And to fully leverage the computing power of hardware, we
367+ can use parallel computing and operator-level hardware instruction and
368+ algorithm optimization. In addition, the memory usage and load/store
369+ rate are also important for the inference performance. Therefore, it is
370+ essential to design an appropriate memory overcommitment strategy for
371+ inference. Related methods have been discussed in the section about the
372+ compiler backend.
0 commit comments