Подготовка модели для масштабируемой компиляции

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

Исследуйте и реструктурируйте модель

Чтобы открыть модель Линии электропередачи в качестве примера, введите ssc_transmission_line в MATLAB® Командное окно. Затем сохраните модель под новым именем (например, transmission_line) в вашей папке работы, чтобы смочь сделать модификации к нему.

Этот пример демонстрирует линию электропередачи путем конкатенации 50 идентичных сегментов T-раздела. Пользовательский блок Simscape™, T-Section Transmission Line, представляет один сегмент T-раздела. Каждый сегмент T-раздела 0,1 м длиной, поэтому линия электропередачи представляет длину на 5 м коаксиального кабеля. Модель содержит пять идентичных подсистем, названных S1 через S5, с каждой подсистемой, состоящей из десяти блоков сегмента T-раздела, named T-1 через T-10.

Предварительный анализ показывает что модель:

  • Имеет повторяющийся шаблон блоков Simscape

  • Содержит очень немногих Simulink® блоки, что означает, что часть Simscape модели считает в течение большей части времени компиляции

  • Использует решатель переменного шага и не требует генерации кода

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

Анализируйте модель Используя консультативный инструмент

Следующий шаг должен анализировать модель с помощью инструмента Advisory. Можно вызвать sscScalableAdvisor функция с помощью следующего синтаксиса:

sscScalableAdvisor(modelname,subsyspaths)

где:

  • modelname имя модели, чтобы анализировать в виде вектора символов, строки или указателя на модель. Этот аргумент требуется.

  • subsyspaths дополнительный аргумент, который идентифицирует повторяющиеся подсистемы в модели. Задайте этот аргумент, как массив ячеек подсистемы называет, включая путь к каждой подсистеме от корня модели, чтобы иметь артефакты компиляции быть снова использованным среди подсистем с идентичным содержимым.

    Если модель содержит допускающие повторное использование компоненты, в форме на которые ссылаются или соединенных подсистем, инструмент распознает их автоматически. Если модели содержат другие типы подсистем, необходимо предоставить их именам subsyspaths аргумент для инструмента Advisory, чтобы рассмотреть их как повторяющиеся компоненты.

В этом примере вы обеспечиваете имена всех пяти подсистем, S1 через S5, в массиве ячеек как второй входной параметр:

r = sscScalableAdvisor('transmission_line', ...
{'transmission_line/S1', 'transmission_line/S2', 'transmission_line/S3', ...
'transmission_line/S4', 'transmission_line/S5',})
r = 

ScalableReport for model 'transmission_line'

          TotalModelCompilationTime: 7.2313
            SimscapeCompilationTime: 6.7703
                         PeakMemory: '27 MB'

    ScalableSimscapeCompilationTime: 3.5232
                 ScalablePeakMemory: '19 MB'

                         Subsystems: [1×4 table]

Recommended to enable Simscape scalable compilation.

Инструмент Advisory возвращает статистику компиляции и рекомендует включить масштабируемую компиляцию. Если бы модель содержала неподдерживаемые шаблоны, рабочие процессы или оптимизацию, рекомендация не состояла бы в том, чтобы включить масштабируемую компиляцию, и инструмент Advisory перечислит применимые ограничения. В этом случае, однако, ни одно из ограничений не применяется, и время компиляции значительно уменьшается. Время компиляции для части Simscape модели составляет 3,5232 с вместо 6,7703 с, который снижает общее время компиляции приблизительно на 45% (7.2313 - 6.7703 + 3.5232 = 3,9842 с).

Примечание

Время компиляции модели зависит от нескольких факторов, таких как используемый процессор, другие процессы, запускающиеся одновременно, кэширование памяти, и так далее. Точные числа могут варьироваться немного между последовательными запусками инструмента Advisory, но отношение между различными частями процесса компиляции остается то же самое. Используйте эти данные, чтобы оценить потенциальное усиление от масштабируемой компиляции.

Можно также просмотреть данные по повторному использованию подсистемы:

r.Subsystems
ans =

  1×4 table

                            Total Instances    Compiled Instances    Reuse       Details  
                            _______________    __________________    ______    ___________

    transmission_line/S1           5                   1             "100%"    {1×5 table}

В этой модели все пять подсистем идентичны, и поэтому повторное использование составляет 100% (эти пять экземпляров заменяются одним скомпилированным экземпляром). В других моделях статистика повторного использования может отличаться. Например, если подсистемы имеют различные настройки или параметризацию, отчет инструмента Advisory указывает, сколько скомпилированных экземпляров необходимо, и вычисляет статистику повторного использования соответственно. В этом случае, Details таблица предоставляет больше информации.

Создайте допускающие повторное использование компоненты

Поскольку результаты компиляции, обеспеченные инструментом Advisory на предыдущем шаге, являются удовлетворительными, вы не должны рассматривать другие способы реструктурировать модель. Теперь необходимо подготовить модель к масштабируемой компиляции, на самом деле заменив повторные подсистемы в анализе инструмента Advisory с допускающими повторное использование компонентами, в этом случае, со ссылочными подсистемами:

  1. Щелкните правой кнопкой по подсистеме S1.

  2. Из контекстного меню выберите Subsystem & Model Reference> Convert to> Referenced Subsystem.

  3. Сохраните Subsystem file name как S1. Используйте кнопку Browse, если вы хотите сохранить подсистему в другой папке.

  4. Нажмите Convert. В результате содержимое подсистемы S1 сохранено как отдельный файл блок-схемы S1.slx в папке вы задали, и подсистема, S1 в модели заменяется подсистемой, на которую ссылаются.

  5. Удалите подсистемы S2, S3, S4 и S5.

  6. Щелкните правой кнопкой по подсистеме S1 и перетащите его вместо подсистемы S2.

  7. Повторите для подсистем S3, S4 и S5.

    Заметьте, что ваша модель все еще содержит подсистемы под названием S1, S2, S3, S4, и S5, но они теперь вся ссылка та же подсистема S1, сохраненный как отдельный файл блок-схемы.

Включите масштабируемую компиляцию

Включать масштабируемую компиляцию для модели:

  1. Откройте диалоговое окно Configuration Parameters.

  2. На панели Simscape установите флажок Reuse components during compilzation.

Можно также использовать эквивалентный интерфейс командной строки, чтобы установить параметр конфигурации модели:

set_param(bdroot,'SimscapeCompileComponentReuse','on')

Похожие темы