Обычно, при симуляции или анализе модели в SimBiology®, модель выражена в MATLAB® код. Можно ускорить симуляцию, преобразовав модель в скомпилированный код С, который выполняется быстрее. Поскольку этот шаг компиляции имеет небольшие временные накладные расходы, ускорение не рекомендуется для отдельных симуляций малых моделей. Однако для больших моделей или для повторных симуляций во время анализа ускорение может обеспечить значительное увеличение скорости, которое перевешивает небольшие временные накладные расходы.
Функциональность для ускорения симуляций работает оптимально при следующих условиях:
Выполнение повторных симуляций с различными начальными условиями
Выполнение очень длинных симуляций (для примера, симуляций, запуск которых занимает больше минуты)
Чтобы подготовить свои модели к ускоренным симуляциям, установите и настройте компилятор:
Установите компилятор C (если он еще не установлен в вашей системе). Текущий список поддерживаемых компиляторов см. в разделах Поддерживаемые и совместимые компиляторы.
Убедитесь, что любые пользовательские функции в вашей модели могут использоваться для генерации кода из MATLAB, поэтому они могут преобразоваться в скомпилированные C. Для получения дополнительной информации смотрите Языки, Функции и Поддержка объектов для генерации C и Кода С++ (MATLAB Coder) или обратитесь в службу технической поддержки MathWorks.
Примечание
В Windows®, если вы не установили другой компилятор, SimBiology использует компилятор lcc-win64 для ускорения модели. Если вы установили другой поддерживаемый компилятор, он будет выбран автоматически. Для повышения эффективности функций ускорения можно установить поддерживаемый компилятор, отличный от lcc-win64, и он будет выбран автоматически.
Использовать sbioaccelerate
если вы ускоряете модель SimBiology. Для SimFunction object
и экспортированную модель (SimBiology.export.Model
), использовать соответствующий accelerate
способ.
Следуйте двухэтапному процессу для ускорения.
Управляемый sbioaccelerate
для подготовки вашей модели к ускоренным симуляциям. Используйте те же входные параметры, которые вы планируете использовать с sbiosimulate
на следующем шаге. Для примера:
sbioaccelerate(model
,configset
,doses
);
Для очень большой модели этот шаг может занять минуту или больше времени.
Управляемый sbiosimulate
с теми же входными параметрами, которые вы использовали с sbioaccelerate
. Для примера:
simdata
= sbiosimulate(model
,configset
,doses
);
Если вы передаете в массиве доз sbioaccelerate
можно симулировать модель с помощью любого подмножества этих доз и не нужно запускать ускорение снова.
Для иллюстрированных примеров смотрите следующее.
A SimFunction
объект автоматически ускоряется при первом выполнении функции. Следовательно, нет необходимости ускорять модель, прежде чем вы создадите объект. Однако вручную ускорите, используя accelerate
метод объекта, если необходимо ускорить его в приложениях развертывания.
Для экспортированной модели смотрите accelerate
.
Если вы вносите какие-либо изменения в модель, такие как изменения реакций или добавление событий, необходимо повторить ускорение, прежде чем запускать симуляции.
Однако существуют исключения. Вам не нужно снова ускоряться, если вы вносите изменения в:
Любые варианты
InitialAmount
свойство вида
Capacity
свойство отсеков
Value
свойство параметров
StopTime
свойство configset
OutputTimes
свойство SolverOptions
Time
свойство ScheduleDose
Interval
, RepeatCount
, и StartTime
свойства RepeatDose
Можно включить ускорение модели в приложении 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.
accelerate
| accelerate
| sbioaccelerate
| SimBiology.export.Model
| SimFunction object