Гнатченко И.А., Нурсеитов Д.Б.

Казахский Национальный Технический Университет имени К.И. Сатпаева, Казахстан

Имитационное моделирование параллельных процессов

 

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

В этой связи важно упомянуть о том, что многие модели в своем составе имеют взаимозависимые и связанные общей функциональной направленностью компоненты, которыми нужно управлять. Каждый из таких процессов должен быть управляем программным диспетчером для слаженной работы всех компонентов. Более того, многие процессы, проходящие в реальном объекте, являются параллельными, что еще более усложняет создание имитационных моделей. Для решения таких задач на сегодняшний день сформированы несколько методов, позволяющих осуществлять моделирование параллельных процессов. [1]

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

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

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

Каждая из имитационных методик, направленная на моделирование параллельных процессов и потоков, основывается на определенном типе параллельных процессов, в пределах которых она специализирована. Не существует единой и при том эффективной методики, объединяющей в себе скорость и надежность выполнения, а также охват всех типов параллельных процессов. [1]

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

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

Подчиненным называют процесс, который может быть порожден и управляем объектом – родителем. Такие процессы, как правило, созданы для параллельной декомпозиции подчиненных задач. Их применяют для повышения эффективности работы имитационных моделей. [1]

Независимым называют отдельный процесс, связи с внешней исполнимой средой которого минимальны, и он может рассматриваться как самостоятельно выполняемая задача со своим информационным контекстом.

Следует подробнее остановиться на определенных особенностях разработки алгоритмов работы параллельных процессов в системах имитационного моделирования. Дело в том, что математическое описание любого параллельного процесса резко отличается от его программной реализации в силу выше описанных причин квазипараллелизма. Также следует учитывать то, что даже самостоятельные и независимые процессы могут совместно использовать различные ресурсы, что необходимо согласовывать. Ситуация также осложняется необходимостью разграничивать подчиненный и родительский потоки и процессы, ведь ядро имеет ряд ограничений на работу с такими потоками. Примером такого ограничения является необходимость завершения всех дочерних потоков перед тем, как родительский поток будет отключен. [2]

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

 

C:\Users\i.gnatchenko\Desktop\Организация взаимодействия параллельных процессов.png

 

Рисунок 1. Организация взаимодействия параллельных процессов

 

На основе взаимного исключения – один из наиболее простых подходов к реализации многозадачности применительно к имитационному моделированию. Суть его заключается в том, что имитируемых процесс выполняет все свои параллельные потоки последовательно, блокируя доступ других потоков к используемым в настоящее время ресурсам. Такой подход является достаточно простым в реализации, но при этом обладает рядом недостатков, которые затрудняют его широкое применению. Например, он может быть успешно использован лишь при малом количестве потоков исполнения. [3]

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

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

При разработке имитационных моделей, которые поддерживают методологию параллельного выполнения задач, существует две категории языков, при использовании которых возможно получение данного эффекта. К таким языкам относят языки реального времени и языки моделирования. [4]

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

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

C:\Users\i.gnatchenko\Desktop\Документ_2.jpg

 

Рисунок 2. Последовательность перемещения событий в параллельных потоках

 

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

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

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

 

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

1. О.В. Мищенкова. "Математическое моделирование в технике" 2012г.

2. Н.Б. Кобелев. "Основы имитационного моделирования сложных экономических систем" 2003г.

3. А.С. Акопов. "Имитационное моделирование. Учебник и практикум" 2014г.

4. Р. Шеннон. "Имитационное моделирование систем - искусство и наука" 1978г.