Ускорение Симуляций модели и анализа

Что такое ускорение?

Обычно, при симуляции или анализе модели в SimBiology®, модель выражена в MATLAB® код. Можно ускорить симуляцию, преобразовав модель в скомпилированный код С, который выполняется быстрее. Поскольку этот шаг компиляции имеет небольшие временные накладные расходы, ускорение не рекомендуется для отдельных симуляций малых моделей. Однако для больших моделей или для повторных симуляций во время анализа ускорение может обеспечить значительное увеличение скорости, которое перевешивает небольшие временные накладные расходы.

Когда ускорить

Функциональность для ускорения симуляций работает оптимально при следующих условиях:

  • Выполнение повторных симуляций с различными начальными условиями

  • Выполнение очень длинных симуляций (для примера, симуляций, запуск которых занимает больше минуты)

Необходимые условия для ускорения симуляций и анализа

Чтобы подготовить свои модели к ускоренным симуляциям, установите и настройте компилятор:

  1. Установите компилятор C (если он еще не установлен в вашей системе). Текущий список поддерживаемых компиляторов см. в разделах Поддерживаемые и совместимые компиляторы.

  2. Убедитесь, что любые пользовательские функции в вашей модели могут использоваться для генерации кода из MATLAB, поэтому они могут преобразоваться в скомпилированные C. Для получения дополнительной информации смотрите Языки, Функции и Поддержка объектов для генерации C и Кода С++ (MATLAB Coder) или обратитесь в службу технической поддержки MathWorks.

Примечание

  • В Windows®, если вы не установили другой компилятор, SimBiology использует компилятор lcc-win64 для ускорения модели. Если вы установили другой поддерживаемый компилятор, он будет выбран автоматически. Для повышения эффективности функций ускорения можно установить поддерживаемый компилятор, отличный от lcc-win64, и он будет выбран автоматически.

Ускорение симуляций программно

Использовать sbioaccelerate если вы ускоряете модель SimBiology. Для SimFunction object и экспортированную модель (SimBiology.export.Model), использовать соответствующий accelerate способ.

Использование sbioaccelerate

Следуйте двухэтапному процессу для ускорения.

  1. Управляемый sbioaccelerate для подготовки вашей модели к ускоренным симуляциям. Используйте те же входные параметры, которые вы планируете использовать с sbiosimulate на следующем шаге. Для примера:

    sbioaccelerate(model,configset,doses);

    Для очень большой модели этот шаг может занять минуту или больше времени.

  2. Управляемый sbiosimulate с теми же входными параметрами, которые вы использовали с sbioaccelerate. Для примера:

    simdata = sbiosimulate(model,configset,doses);

Если вы передаете в массиве доз sbioaccelerateможно симулировать модель с помощью любого подмножества этих доз и не нужно запускать ускорение снова.

Для иллюстрированных примеров смотрите следующее.

Использование ускорения

A SimFunction объект автоматически ускоряется при первом выполнении функции. Следовательно, нет необходимости ускорять модель, прежде чем вы создадите объект. Однако вручную ускорите, используя accelerate метод объекта, если необходимо ускорить его в приложениях развертывания.

Для экспортированной модели смотрите accelerate.

Когда перезапустить ускорение

Если вы вносите какие-либо изменения в модель, такие как изменения реакций или добавление событий, необходимо повторить ускорение, прежде чем запускать симуляции.

Однако существуют исключения. Вам не нужно снова ускоряться, если вы вносите изменения в:

Ускорите симуляции с помощью SimBiology Model Analyzer

Можно включить ускорение модели в приложении SimBiology Model Analyzer, установив флажок Prepare the model for accelerated simulation на Model шаге программы.

Поиск и устранение проблем с ускоренными симуляциями

Если у вас есть пользовательские функции, используйте постоянные переменные только для тех (постоянных) переменных, которые вы не хотите пересчитывать или перезагружать каждый вызов функции. Причина в том, что в процессе ускорения SimBiology преобразует модель и пользовательские функции в скомпилированный код С Если вы пытаетесь использовать постоянную переменную для обмена данными между сгенерированными (или скомпилированными) функциями C, у вас могут быть другие результаты. Например, если вы используете постоянную переменную, чтобы подсчитать, сколько раз вызывается функция, каждая скомпилированная функция будет иметь отдельное количество. Эти постоянные переменные в соответствующих скомпилированных функциях будут отличаться от той, которая используется в заданной функции MATLAB.

Если вы задаете пользовательские функции в выражениях SimBiology, то можете увидеть следующее предупреждение, если ваш код несовместим с генерацией кода из MATLAB:

The SimBiology Expression and any user-defined functions
could not be accelerated. Please check that these expressions 
and any user-defined functions are supported for code generation
as described in the Code Generation from MATLAB documentation.

где Expression является любым из следующих:

  • Скорость реакции/выражение правила

  • Начальное выражение правила назначения

  • Повторное выражение правила назначения

  • Выражение триггера события

  • Выражение функции события

Для получения дополнительной информации смотрите Язык, Функцию и Поддержку объектов для генерации C и Кода С++ (MATLAB Coder) или обратитесь в службу технической поддержки MathWorks.

См. также

| | | |

Похожие темы