Обычно, при симуляции или анализе модели в SimBiology®, модель описывается в коде MATLAB®. Можно ускорить симуляцию путем преобразования модели в скомпилированный код С, который выполняется быстрее. Поскольку этот шаг компиляции имеет маленькое время наверху, ускорение не рекомендуется для отдельных симуляций маленьких моделей. Однако для больших моделей, или для повторных симуляций во время анализа, ускорение может обеспечить значительное увеличение скорости, которое перевешивает маленькое время наверху.
Функциональность, чтобы ускорить симуляции выполняет оптимально при следующих условиях:
Выполнение повторенных симуляций с различными начальными условиями
Запуская очень длинные симуляции (например, симуляции, которые занимают больше времени, чем минута, чтобы запуститься),
Чтобы подготовить ваши модели к ускоренным симуляциям, установите и настроить компилятор:
Установите компилятор C (если вы уже не установлены в вашей системе). Для текущего списка поддерживаемых компиляторов см. Поддерживаемые и Совместимые Компиляторы.
Убедитесь, что любые пользовательские функции в вашей модели могут использоваться для генерации кода из MATLAB, таким образом, они могут преобразовать в скомпилированный C. Для получения дополнительной информации смотрите Язык, Функцию и Поддержку объектов для генерации C и Кода С++ (MATLAB Coder) или свяжитесь с MathWorks Technical Support.
Примечание
На Windows®, если вы не установили другой компилятор, SimBiology использует lcc-win64 компилятор для ускорений модели. Если вы установили другой поддерживаемый компилятор, он будет выбран автоматически. Для лучшей эффективности ускоряющей функциональности можно хотеть установить поддерживаемый компилятор кроме lcc-win64, и это будет выбрано автоматически.
Использование sbioaccelerate
если вы ускоряете модель SimBiology. Для a 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.
где Выражение является любым следующим:
Скорость реакции / управляет выражением
Начальное выражение правила присвоения
Повторное выражение правила присвоения
Триггерное выражение события
Выражение function события
Для получения дополнительной информации смотрите Язык, Функцию и Поддержку объектов для генерации C и Кода С++ (MATLAB Coder) или свяжитесь с MathWorks Technical Support.
accelerate
| accelerate
| sbioaccelerate
| SimBiology.export.Model
| SimFunction object