Логическая объектно- ориентированная модель асинхронных параллельных вычислений

advertisement
Логическая объектноориентированная модель
асинхронных параллельных
вычислений
к.ф.-м.н. Алексей А. Морозов
Институт Радиотехники и Электроники РАН
morozov@mail.cplire.ru
д.ф.-м.н. Юрий В. Обухов
Институт Радиотехники и Электроники РАН
obukhov@mail.cplire.ru
Что означает «Логическая»?
Модель вычислений основана на принципах
логического программирования:
Поддержка теоретико-модельной семантики –
параллельная программа является одновременно
реализацией алгоритма и логической формулой.
 Наличие математически строгих критериев
правильности вычислений: корректности и
полноты.
 В модели существенным образом использована
возможность логического вывода с не полностью
определёнными данными (опережающие
вычисления).

Проблема, которую необходимо решить:
Корректность и полнота «обычного»
Пролога нарушаются, если исходная
информация изменяется в ходе
логического вывода.
Корректность:
Полнота:
Что означает «Асинхронные
параллельные вычисления»?
В модели вычислений не
используется приостановка
процессов для синхронизации.
Вместо этого применяются
опережающие вычисления и
последующая модификация
логического вывода.
Пример асинхронной
параллельной программы
Пользовательский
интерфейс
Работа программы
Принцип повторного
доказательства
Логические
акторы
Пространство
поиска
Общие
переменные
Что означает «Объектноориентированная»?
Процессами называются
экземпляры классов
объектно-ориентированного
логического языка Акторный
Пролог, предложения которых
исполняются параллельно по
отношению к предложениям
других экземпляров классов.
Составные части модели
Состояния процесса
Доказанный
Неудачный
Неиспользуемый
Сообщения
• Потоковые
• Прямые
Резиденты
Состояния процесса
«Доказанный» процесс. Все акторы процесса находятся в
согласованном состоянии (доказательство всех акторов
завершилось успехом).
«Неудачный» процесс. Акторы процесса выведены из согласованного
состояния.
«Неиспользуемый» процесс. Может рассматриваться как некоторый
отключённый компонент вычислительного устройства. Процессы
автоматически переходят в состояние «неиспользуемый» и
автоматически возвращаются из этого состояния при получении
специальных потоковых сообщений.
Потоковые сообщения
Процесс может передавать информацию в
другие процессы, изменяя значение общей
переменной, принадлежащей процессам.
Общие переменные, связывающие
процессы, называются «портами».
Разновидности портов



Простые (plain).
Защищающие (protecting). Защищённое значение
общей переменной может быть заменено только
другим защищённым значением.
Отключающие (suspending). Служат для
автоматического перевода процессов в состояние
«неиспользуемый» и автоматического возвращения
их из этого состояния.
Прямые сообщения
Процесс может осуществить асинхронный
вызов предиката в другом процессе.
Различаются «информационные» и
«переключающие» прямые сообщения.
Отличия информационных прямых и
управляющих прямых сообщений
1. В результате обработки переключающего прямого
сообщения, процесс может оказаться в состоянии
«доказанный» или «неудачный», в то время как после
обработки информационного прямого сообщения
процесс всегда оказывается в состоянии «доказанный».
Если исполнение информационного прямого сообщения
закончилось неудачей, это сообщение просто
игнорируется, а процесс остаётся в прежнем состоянии.
2. В отличие от переключающих прямых сообщений,
обработка информационных прямых сообщений
откладывается до тех пор, пока принимающий процесс
не окажется в состоянии «доказанный». Отложенные
сообщения накапливаются в буфере.
Резиденты
«Резидентом» называется активная сущность,
наблюдающая за состоянием заданного
(«целевого») процесса и посылающая
собранную информацию своему владельцу.
После каждого изменения состояния целевого
процесса, резидент повторно осуществляет
построение и передачу списка значений
функции.
В общем случае, каждому резиденту
программы соответствуют:
1. Владелец резидента. Владельцем резидента
является создавший его процесс.
2. Атомарная формула. Эта формула обозначает
вызов некоторой функции (в общем случае,
недетерминированной), которая должна быть
исполнена в целевом процессе. Функции в
Акторном Прологе реализованы с помощью
стандартной техники разглаживания программ.
3. Целевой процесс резидента.
4. Некоторая общая переменная. Через эту
переменную резидент посылает собранную
информацию своему владельцу.
Пример асинхронной
параллельной программы
Отличия между потоковыми и прямыми
сообщениями
1. Прямые сообщения передаются
непосредственно из одного процесса в другой
(в форме вызовов предикатов), в то время как
потоковые сообщения передаются от одного
процесса ко многим (посредством изменения
общих переменных).
2. Прямые сообщения не теряются в ходе
передачи, в то время как потоковые сообщения
могут отменять друг друга, если новое
(уточнённое) значение общей переменной
пришло до того, как получающий процесс начал
обрабатывать предыдущее значение.
Определение 1. Будем говорить, что логическая
программа достигла успешного конечного
состояния, если:
1. Все процессы программы находятся в
состоянии «доказанный» или
«неиспользуемый».
2. Активизация резидентов не требуется.
3. Обработка каких-либо сообщений процессами
и резидентами не требуется.
Определение 2. Результатом, вычисленным
программой, мы будем называть значения
общих переменных, связывающих процессы
программы, достигшей успешного конечного
состояния.
Теоретико-модельная семантика
параллельных программ
Введены правила преобразования
произвольной параллельной логической
программы P в последовательную
программу P’, для которой гарантировано
существование классической теоретикомодельной семантики. Декларативная
семантика программы P’ принимается в
качестве семантики исходной программы P.
Теорема 1.
Параллельная программа
является корректной
относительно своей теоретикомодельной семантики.
Теорема 2. Параллельная программа
является полной относительно своей
теоретико-модельной семантики, если








В тексте программы нет нелогических встроенных предикатов.
Прямые сообщения не используются. Информация между процессами передаётся только
посредством потоковых сообщений.
Программа не зацикливается в ходе исполнения целевых утверждений процессов и
функций резидентов.
Функции, вызываемые резидентами, всегда возвращают конечное число значений.
Предикаты, вычисляющие данные, передаваемые затем с помощью потоковых
сообщений, являются детерминированными.
Информация передаётся между процессами только по однонаправленным каналам.
Однонаправленная передача данных в Акторном Прологе может быть смоделирована с
помощью ключевого слова protecting.
Существует частичное упорядочение процессов, обменивающихся информацией. То
есть, в программе отсутствует рекурсивная передача данных между процессами и
резидентами.
Все значения, вычисляемые процессами и резидентами, которые должны быть
переданы другим процессам и резидентам, являются основными (то есть, не содержат
несвязанные переменные).
Результаты проекта РФФИ 00-01-00560
(2000-2002 гг.)





Предложена и разработана новая модель параллельных вычислений в
логическом программировании. Принципиальным отличием данной
модели вычислений является то, что она обеспечивает корректность и (при
определённых условиях) полноту параллельных логических программ,
исполняемых в динамическом внешнем окружении.
Исследованы условия существования классической теоретико-модельной
семантики параллельных логических программ. Исследованы условия
корректности и полноты параллельных логических программ,
выполняемых в динамическом внешнем окружении.
Разработаны методы и синтаксические средства логического описания и
анализа Web-страниц, а также средства логических запросов в Web.
Спроектирована и реализована экспериментальная система логического
поиска и распознавания в Интернет на основе разработанного
математического аппарата. В частности, разработаны методы визуального
компонентно-ориентированного логического программирования агентов
Интернет.
Созданы экспериментальные агенты Интернет, осуществляющие сбор
информации в Сети. Эксперименты с агентами Интернет показали
целесообразность и эффективность использования разработанных
методов логического программирования агентов.
Download