exponenta event banner

Оптимизация памяти на месте

Оптимизация на месте - это метод оптимизации памяти, который использует один буфер, то есть одну и ту же память для хранения входных и выходных данных. Каждый раз, когда в алгоритме имеется промежуточное выходное значение, один и тот же буфер перезаписывается для сохранения этого значения. Этот метод оптимизирует использование памяти и генерирует код, который использует очень меньшее количество памяти.

Следующие функции DSP System Toolbox™ поддерживают оптимизацию памяти на месте.

Чтобы проиллюстрировать метод оптимизации на месте, рассмотрим эту модель, которая содержит последовательность из трех соединенных блоков дискретного КИХ-фильтра. Каждый блок фильтрует входной сигнал, который он получает, и генерирует выходной сигнал того же размера, что и входной сигнал.

Three Discrete FIR Filter blocks are connected to each other in a sequence. Each block is labelled. The first block is named Discrete FIR Filter, second block is named Discrete FIR Filter1, and the last block is named Discrete FIR Filter2. The input port of the first block is connected to an Inport block. The output port of the last block is connected to an Outport block.

При создании кода из такой модели в создаваемом коде можно увидеть контекстную оптимизацию.

В этом разделе показан оптимизированный код, созданный на месте. Три for циклы с индексом итерации n соответствуют соответствующему блоку дискретного КИХ-фильтра в модели Simulink ®. В каждом из этих трехfor петли, выходной сигнал фильтра вычисляется и сохраняется в буфере m3fir_Y.Output[]. Буфер m3fir_Y.Output[] перезаписывает свое значение каждый раз, когда блок дискретного КИХ-фильтра имеет обновленный выходной сигнал.

This image shows a sequence of for loops in the in-place optimized generated code. The first two for loops control the iteration over the number of input channels and the samples in each channel. The first for loop with the iteration index n corresponds to the first Discrete FIR Filter block.

This image contains two for loops with the iteration index n. These loops correspond to the last two Discrete FIR Filter blocks.

Сгенерированный код повторно использует выходной буфер и, следовательно, эффективен и использует меньше памяти.

При создании кода из алгоритма MATLAB ®, содержащего последовательность dsp.FIRFilter объекты, вы видите аналогичную оптимизацию в созданном коде.

См. также

Функции

Связанные темы