В апреле 1982 г. японский исследовательский центр ICOT (The Institute for New Generation Computer Technology) приступил к работе над одним из наиболее амбициозных в истории информационных технологий многолетним проектом создания вычислительных систем 5-го поколения под названием FGCS (Fifth Generation Computer Systems), который был завершен в марте 1993 г. В те годы результаты японского проекта нередко оценивались с прагматической точки зрения, характерной для европейского стиля мышления: какова скорость новых компьютеров, какие написаны прикладные программы, а главное  -  сколько они стоят, совместимы ли с Windows и как быстро на них можно заработать. Японцы же изначально открыто заявили, что FGCS не носит коммерческой направленности, и результатом его будет не какой-то конкретный программный продукт, а новые компьютерные технологии. Проект создания вычислительных систем 5-го поколения (ВС5) был чисто исследовательским, более того  -  фундаментальным. Страна Восходящего Солнца вполне могла себе позволить проводить сложные и масштабные изыскания в компьютерной области на протяжении более десяти лет. К сожалению, альтруистический подход ICOT к полученным результатам  -  бесплатная их раздача всем желающим  -  вызвал в мировой прессе определенное подозрение по отношению к этим результатам. Заявлялось даже, что проект с треском провалился, а результаты его были рассекречены (хотя FGCS никогда не был секретным) и используются исключительно в учебных целях  -  якобы на большее им не потянуть. Так или иначе, причины, по которым японцы начали работать “на благо всего мира”, неизвестны (если они существовали вообще), поэтому лучше всего основываться на официальной информации ICOT.

 

Базовая идея, лежащая в основе японского проекта,  -  создание высокоэффективных компьютерных средств обработки знаний. Понятие “знание” в компьютерном контексте японские специалисты трактуют так: формализованная информация, которую используют и на которую ссылаются в процессе логического вывода. Компьютерные знания принято делить на факты (Х  -  это компьютер), описывающие, например, окружающий мир, и правила (ЕСЛИ Х это IBM PC, ТО на нем будет работать Windows), которые позволяют программе принимать различные решения в процессе логического вывода. А когда имеются хорошие средства для представления и обработки знаний, то с их помощью можно решать задачи, доступные сегодня только мыслящему существу, и, конечно, создавать программные продукты новыми методами, например используя экспертные системы, автоматически генерирующие код программы на основе полученного от человека описания задачи.

 

Официальная цель FGCS заключалась в создании нового компьютера с параллельной архитектурой и, самое главное, соответствующего ПО, которое позволяло бы эффективно выполнять параллельные алгоритмы, ориентированные на работу с базами знаний. Работы велись одновременно в двух областях. Первая рабочая группа занималась последовательными технологиями обработки знаний. В период 1982 - 1984 гг. была создана первая версия языка логического программирования KL0, который представлял собой расширение Пролога. К этому же времени относится создание машин последовательного вывода PSI и специализированной однопроцессорной ОС SIMPOS для обработки знаний на базе KL0. К 1992 г. была создана наиболее совершенная версия PSI, поддерживающая KL0.

 

Вторая группа занималась параллельными технологиями. В 1982  -  1984 гг. она разработала язык параллельного логического программирования KL1. Когда другая группа завершила создание первой версии PSI, на ее основе в период 1985 - 1988 гг. был создан экспериментальный прототип параллельной машины вывода PIM (parallel inference machine), “составленной” из сотен PSI. Для нее была написана ОС PIMOS и первые системные и прикладные программы. На завершающем этапе (1989 - 1992 гг.) вторая рабочая группа занималась созданием готовой к тиражированию версии PIM и написанием прикладных программ на KL1.

 

В рамках проекта FGCS была сконструирована самая быстрая в мире мультипроцессорная компьютерная система, предназначенная для параллельной обработки знаний. Структура ее такова. На самом низком уровне ВС5 основана на PIM’ax. Разные модели PIM имеют разное число узлов  -  от 256 до 1024 процессоров. Операционная система PIMOS является вторым уровнем ВС5. В PIMOS встроены параллельные механизмы, поддерживающие процесс создания программ на KL1. Это, в частности, внутренний информационный пул, который позволяет работать с данными в формате KL1. Пул имеет распределенную архитектуру для повышения эффективности работы программ.

 

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

 

Третий уровень систем нового поколения базируется на высокопродуктивном языке логического параллельного программирования KL1. Этот язык во многом основывался на Прологе, но имеет ряд существенных отличий, как положительных, так и отрицательных. В частности, в KL1 встроен ряд низкоуровневых возможностей, повышающих его гибкость, но накладывающих ограничения на область применения (если брать логическое программирование). Дело в том, что KL1 должен поддерживать режим параллельного вывода, ориентированный на архитектуру PIM, поэтому KL1 не реализует в полной мере логику предикатов первого порядка. Для решения задач, где желательно использовать более мощный механизм логического вывода Пролога, на базе KL1 созданы различные прикладные программы, в частности MGTP (Parallel Theorem-Proving System  -  параллельная система доказательства теорем). К положительным сторонам KL1 относится его высокая эффективность. При тестировании на стандартных примерах, удовлетворяющих ограничениям KL1, программа, написанная на этом языке, выполнялась в два раза быстрее по сравнению с аналогичной программой, написанной на Прологе (на компьютере с одним процессором).

 

Эффективность работы программ явилась самым наглядным показателем успешности японского проекта. Все прикладные системы, написанные на KL1, работают со скоростью, почти линейно пропорциональной числу процессоров. Например, решатель теорем работает на PIM/m с 256 процессорами в 220 раз быстрее, чем на однопроцессорном PIM’e! До сих пор подобного соотношения на компьютерах, созданных в США и Европе, удавалось добиться только для единичных приложений, создаваемых специально под конкретную архитектуру. Реальный выигрыш во времени (ускорение выполнения программы) для неяпонских параллельных компьютеров обычно составляет: для 300-процессорных машин  -  до 30 раз, для машин с числом процессоров более тысячи  -  до 250 раз. Для простых приложений, взятых с однопроцессорных машин, выигрыш при их исполнении на компьютерах с десятками процессоров вообще не достигает и 20%. При этом программисту при написании программы желательно учитывать принципы работы параллельного транслятора, что требует от него высокой квалификации. А программы, написанные на KL1 без привязки к конкретному компилятору, при решении задач из области логического программирования и обработки знаний на параллельных компьютерах показывают скорость, линейно пропорциональную числу процессоров (два процессора  -  в два раза быстрее, четыре  -  в четыре и т. д.).

 

На следующем структурном уровне располагаются средства поддержки создания прикладных программ. Это прежде всего параллельная СУБД Kappa-P. Она реализует вложенную реляционную модель, которая позволяет хранить иерархические структуры данных. Kappa-P написана на KL1, и только самые критические участки  -  на Си. Другой продукт  -  система логического вывода и представления знаний Quixote. Она объединяет концепцию объектно-ориентированного логического программирования и понятия модуля, которое заложено в объектно-ориентированные базы данных. Quixote способна самостоятельно организовывать связи между объектами в базе и автоматически генерировать гипотезы на основе имеющихся знаний. В одном ряду с Kappa-P и Quixote находится MGTP  -  параллельная система метапрограммирования и доказательства теорем. Она обладает очень мощным механизмом вывода, значительно превосходящим возможности Пролога. В частности, предусмотрена обработка нехорновских дизъюнктов (то есть содержащих более одного заключения). В MGTP встроен ряд специальных эвристик, ускоряющих процесс логического вывода. Можно интерактивно управлять отсечением наименее вероятных путей перебора во время поиска решения, задавая граничный порог достоверности, ниже которого очередная “ветка” отсекается. Очень сложно оказалось реализовать в MGTP процесс динамического распределения процессоров во время поиска решения. В конце концов эта проблема была решена, и MGTP сегодня оценивается как один из наиболее успешных проектов в рамках FGCS. Скорость доказательства теорем у MGTP самая высокая в мире среди программ аналогичной направленности. На основе MGTP создано несколько прикладных систем, предназначенных для обработки естественных языков, работы с базами знаний, автоматического синтеза программ и т. д.

 

Все эти системы написаны на KL1. MGTP с учебными целями была дополнительно реализована на Прологе, чтобы показать преимущества использования KL1 при реализации прикладных программ на параллельных компьютерах. Скорость логического вывода MGTP увеличивается более чем в 200 раз на компьютере PIM/m с 256 процессорами в сравнении с однопроцессорной машиной. У всех остальных решателей скорость растет значительно медленнее. С помощью MGTP были доказаны сложные математические теоремы, в том числе одна остававшаяся долгое время открытой задача, которую невозможно было решить на компьютерах с последовательной архитектурой.

 

Для обработки знаний в распределенных компьютерных системах была разработана интегрированная среда Helios. Она поддерживает процесс решения задачи несколькими решателями, функционирующими на разных компьютерах. Helios координирует работу всех программ с помощью следующей идеологии: каждый решатель скрыт в платформно-независимом модуле  -  “капсуле”, которая принимает данные (или знания) от других капсул через посредников-агентов, играющих роль распределенных мониторов транзакций. Синхронизация работы капсул и агентов происходит в специальном системном окружении Helios, обладающем всеми свойствами замкнутой операционной системы со своими типами данных, служебными сообщениями и т. д.

 

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

 

После завершения проекта FGCS центр ICOT с апреля 1993 г. по март 1995 г. занимался некоммерческим распространением своих технологий (проект ICOT Free Software). По замыслу японцев, результаты, полученные в рамках FGCS, должны стать базой глобальной компьютерной инфраструктуры, позволяющей создавать и совершенствовать новые компьютерные технологии. Для массового распространения результатов исследований язык KL1 был перенесен на различные мульти- и однопроцессорные UNIX-системы. При этом для исполнения на однопроцессорных компьютерах программ, которые ориентированы исключительно на параллельную архитектуру, была создана специальная среда  -  параллельная виртуальная машина (PVM).

 

Переносимая версия языка KL1 называется KLIC и представляет собой компилятор из KL1 в Си, а также набор вспомогательных библиотек. Интересно, что сам KLIC написан на KL1 и сначала был успешно реализован под UNIX, и в эту ОС были перенесены практически все прикладные программы, написанные на KL1. Пользовательский интерфейс обеспечивается набором входящих в KLIC библиотек времени исполнения. Они позволяют встраивать в программы графический интерфейс X-Windows, распределять ресурсы, управлять памятью, поддерживать процесс параллельного выполнения в UNIX-среде и т. д. KLIC содержит набор функций для отладки приложений и слежения за ходом выполнения программы. Если дополнительные функции не используются, то после трансляции исходного текста на KL1 можно получить очень компактные Си-программы, которые могут исполняться на любых компьютерах, в том числе и на “персоналках”. Сегодня среда KLIC функционирует на платформах Sparc, DEC, CM-5, а недавно она была реализована для OS/2 и MS DOS. С помощью KLIC была создана версия СУБД Kappa-P для работы на различных параллельных компьютерах и в распределенных средах.

 

В середине 1995 г. в связи с завершением FGCS был отобран ряд наиболее перспективных направлений, которые относятся как к чисто научным исследованиям, так и к конкретным прикладным задачам. Эти направления теперь будут развиваться в стенах японского НИИ современных информационных технологий AITEC (Research Institute for Advanced Information Technology). Наиболее перспективными признаны следующие области логического программирования: технологии интеллектуальной параллельной обработки знаний, языки баз знаний на основе пролог-подобных систем, решатели интеллектуальных задач, программы анализа и обработки естественных языков, базы знаний по биологии. Также будут проводиться математические исследования для создания новых эффективных методик параллельного поиска и перебора. Продолжатся работы по совершенствованию языка KL1 и его машинных реализаций, а также компьютеров PIM.

 

Результаты японских исследований не имеют никаких ограничений на свободное распространение. Созданное в ICOT ПО сегодня доступно на более чем 2000 Web-узлах в 45 странах мира. Более подробную информацию о японском проекте можно получить на Web-узле ICOT http://www.icot.or.jp.

 

Сергей Бобровский

 

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

Версия для печати