задачи п.12.2, на многопроцессорном компьютере с
использованием технологии распараллеливания.
Этот программный комплекс написан на языке Visual C++
7.0 (как и предыдущая программа) и состоит из трех проектов:
AirAttack, Client и Model. В проекте Model реализуется класс
CModel, который рассчитывает поля скорости, линий тока, вихря
и др. Проект AirAttack – это программа, которая запускается на
главном процессоре (0-й процессор, сервер), который отвечает за
распределение работы между другими процессорами
(клиентами), посылает им данные, получает от них результаты и
выводит результаты на экран. Проект Client – это программа всех
остальных процессоров (клиентов), которая организует расчет
физических полей на своем участке с помощью экземпляра
класса CModel. Распараллеливание реализуется с помощью
интерфейса MPI.
Проект Model – это динамически присоединяемая
библиотека (DLL). Во многом она повторяет предыдущую
программу (п.12.3, листинг 3). Проект Client – это Win32-
приложение, которое, впрочем, почти не использует функций
Windows API. Проект AirAttack – это приложение, написанное с
использованием технологии MFC. Поскольку Visual C++
автоматически создает довольно объемный шаблонный код для
MFC-приложения, ниже (как и в предыдущих листингах)
приводятся лишь выдержки из проекта AirAttack, вставленные
нами в шаблонный код.
Каждый из клиентов использует экземпляр класса CModel
для расчета искомых полей на своем участке. Сервер AirAttack
также использует экземпляр класса CModel. Во-первых, в этой
программе реализована возможность работы в однопроцессорном
режиме. В таком случае всю работу выполняет сервер с помощью
экземпляра класса CModel. Во-вторых, AirAttack использует
экземпляр класса CModel, чтобы сформировать искомые поля на
всей рассчитываемой области из полей на участках, получаемых
им со всех клиентов, которые затем и выводит на экран.
Распараллеливание выполняется следующим образом.
Число клиентов фиксировано (4 процессора; см. рис. 6). Здание