Прежде чем дать детальное описание среды динамического распараллеливания программ GRACE, скажем несколько слов о том, как выглядит для пользователя данное средство программирования, и каково его положение в том широком спектре программного обеспечения, которое используется на обычных последовательных копмпьютерах и кластерах.
В качестве средств разработки на обычной последовательной ЭВМ используются компилятор с некоторого языка программирования, среда поддержки исполнения (runtime support), которая часто реализуется как библиотека, с которой собирается пользовательская программа, а также дополнительные средства для отладки, трассировки и профилирования программ.
Вся совокупность этих средств может рассматриваться как некая программная надстройка над ЭВМ, и опирается, в конечном счете, на архитектуру компьютера и его ассемблер. Хотя теоретически можно писать программы и без этой надстройки, последняя существенно ускоряет разработку программ и является общепринятым слоем ПО на современных компьютерах.
Архитектура современных параллельных компьютеров такова, что зачастую может рассматриваться как некоторое обЪединение обычных последовательных компьютеров, соединенных высокоскоростной сетью.
В качестве общепринятого интерфейса взаимодействия между процессами де-факто стандартом является MPI, реализованный практически для всех кластерных архитектур. По сути MPI является средством для обмена сообщениями, и является низкоуровневым средством интеграции последовательных процессов. Вызовы MPI-библиотеки распологаются в коде последовательной программы и реализуют отдельные события (инструкции) параллельной обработки.
Позволяя себе определенную вольность, можно по уровню программирования соотнести использование MPI в параллельном программировании с инспользованием инструкций ассемблера: вместо послать/принять употреблять слова загрузить/сохранить и т.д.
Являясь низкоуровневым средством, MPI позволяет создавать очень эффективные параллельные программы, но требует весьма существенных усилий от программиста при записи алгоритма в терминах посылки, приема сообщений, синхронизации и распределения работы между отдельными вычислительными узлами кластера.
Т-система (а также некоторые другие аналогичные продукты) ставит целью распространить принципы высокоуровневых средств разработки на параллельные компьютеры. При этом, выражаясь математическим языком, следующая диаграмма должна быть коммутативна:
Последовательный компьютер -------> Языки C, Fortran, gcc, gdb , libc с ассемблером | | | | | | | | V V Параллельный компьютер -------> Языки TC, TFortran, tcc, tdb, libT с библиотекой MPI
Иными словами, делается попытка "поднять" высокоуровневые средства разработки программ до параллельных архитектур.