r2 - 09 Aug 2007 - 19:13:20 - Alexander MoskovskyYou are here: TWiki >  TSim Web > TSimArch
Архитектура системы складывается из следующих модулей (см. слайд 12):

  • Очередь заданий. Т-функции представлены внутри библиотеки как объекты, производные от одного базового класса. При вызове функции из пользовательского кода (если среда исполнения делает параллельный вызов а не принимает решение о последовательном выполнении задачи) создаётся экземпляр объекта нужного класса, параметризуется значениями, переданными при вызове функции и помещается и в очередь заданий.

  • Планировщик (балансировщик нагрузки), работающий в отдельном потоке выполнения, выбирает задания из очереди и принимает решение - выполнить ли функцию на данном узле, передать на другой узел или отложить выполнение функции. Решение может быть принято на основе информации о ресурсах параллельной машины – и разработчик приложения имеет возможность заменить имеющийся в системе механизм мониторинга информации своим собственным.

  • Доступ к неготовым значениям осуществляется при помощи механизмов объектно-ориентированной общей памяти . Каждое неготовое значение имеет уникальный идентификатор, определяющий, на каком узле кластера хранится «мастер-копия» неготового значения. Если данного значения ещё не существует (оно не вычислено или не доставлено с узла – «хранителя» значения) запрашивающий поток приостанавливает вычисления (засыпает) до того момента, пока значение не будет доставлено - а на "узел-хранитель" посылается запрос.

  • В T-Sim задачи обмена данными элегантно решаются при помощи «активных сообщений» - сообщений, которые позволяют выполнить свой код при получении. Каждый модуль определяет свою T-Sim поддерживает как передачу данных при помощи интерфейса XML-RPC, так и при помощи библиотек MPI (используется небольшое подмножество функций MPI). Передача данных по сети требует сериализации – преобразование данных в вид, из которого они могут быть восстановлены на машине получателе. В случае, если процессор-получатель сообщения имеет архитектуру, отличную от процессора-отправителя, можно воспользоваться преобразованием данных в XML форму (и транспортным уровнем XML-RPC для передачи данных). Если же процессоры имеют одинаковые архитектуры, возможно преобразование в вид «потока байт» (без ссылок и указателей) – что существенно снижает накладные расходы по сравнению с преобразованием данных в XML-форму. Для передачи «потока байт» можно воспользоваться XML-RPC или MPI.

Необходимость сериализации данных требует описания сериализации для всех структур, которые будут переданы по сети – в том числе и те, которые определены в приложениях. На основе механизма частичной специализации шаблонов С++ в T-Sim создан универсальный метод описания сериализации структур данных, включая массивы и указатели. При этом используются «фабрики классов» и частичная специализация шаблонных классов С++.

-- Alexander Moskovsky - 09 Aug 2007

Edit | WYSIWYG | Attach | Printable | Raw View | Backlinks: Web, All Webs | History: r2 < r1 | More topic actions
 
Powered by TWiki

This site is powered by the TWiki collaboration platformCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback