Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Разработка ПО для организации параллельных вычислений на кластерах.doc
Скачиваний:
24
Добавлен:
28.06.2014
Размер:
14.02 Mб
Скачать

Пример. Задача вычисления числа Pi

Рассмотрим процесс проектирования ГСПП на примере задачи вычисления трансцендентного числа Pi.

Для решения этой задачи рассмотрим следующую формулу: .

Параметры рассматриваемой задачи

Параметрами задачи являются: количество интервалов, на которое разбивается отрезок интегрирования и точность, с которой будет вычисляться результат, то есть число Pi.

Граф-схема решения:

Модуль CPI.StartModule отвечает за задание параметров задачи и вывод результата, а модуль CPI.Integration - за реализацию алгоритма решения задачи.

Для начала необходимо создать новый проект.

Шаги

1. Открыть Visual Studio 2008

2. Создать новый проект VIPDS

2.1. Выбрать меню File->New->Project...

2.2. Выбрать тип проекта Parallel project в появившемся окне New Project. После чего выбрать шаблон VIPDSProject в этом же окне. 

2.3. Задать имя проекта в поле name и путь к папке, где будет храниться новый проект, в поле location. Нажать кнопку OK.

3. В окне Solution Explorer будет представлен только что созданный проект.

4. В окне Solution Explorer выбрать файл scheme.gsf двойным шелчком левой клавиши мыши.

5. Открыть окно Prototypes

 

6. В окне Prototypes изображена структура граф-схем. Выбрать в этом окне Structures и нажать +, что означает создание нового модуля.

7. В окне New module wizard задать имя нового модуля CPI.Integration и нажать кнопку Finish.

7.1. При создании модуля создаются две вкладки CIG и COG групп входов и выходов соответственно. Создадим во вкладке CIG группу входов. Для этого необходимо выделить вкладку CIG и нажать кнопку +.

7.2. Выделив созданную группу, открыть окно свойств Properties и ввести имя группы входов Integrate и метода, соответствующего этой группе, IntegrateMethod.

7.3. Выделив в окне созданную группу входов Integrete, нажать кнопку +. Таким образом создадим вход в этой группе. В окне Properties в поле name ввести имя входа F и тип входа function.

7.4. Создать вход a типа double для группы Integrate.

7.5. Аналогично создать входы b, eps типа double для группы Integrate.

7.6. Создать во вкладке COG группу выходов result для модуля CPI.Integration. Для этого необходимо выделить вкладку COG модуля CPI.Integration и нажать кнопку +. Открыть окно свойств Properties и ввести в поле name имя группы выходов result.

7.7. Создать в группе выходов result выход. Для этого выделить группу выходов result и нажать кнопку + в окне Prototypes.

7.8. В окне Properties в поле name ввести имя выхода output и тип double.

7.9. Для создания экземпляра открыть окно Toolbox, выбрать вкладку Scheme Items.

7.10. Выделить объект Module и, не отпуская левой клавишей мыши, перетащить его на схему (файл Scheme.gsf).

7.11. Отпустить левую клавишу мыши.

7.12. Открыть окно свойств Properties и в поле Prototypes указать CPI.Integration.

7.13. Таким образом создали экземпляр модуля CPI.Integration.

7.14. Часть кода, связанная с созданием объектов граф-схемы, генерируется автоматически. Пользователю необходимо лишь прописать методы, реализующие логику программы. Для открытия кода, сгенерированного в следствие создания экземпляра модуля CPI.Integration, необходимо двойным щелчком мыши нажать по созданному экземпляру модуля CPI.Integration.

7.15. Откроется код, связанный с экземпляром модуля CPI.Integration.

7.16. Так как модуль CPI.Integration отвечает за работу алгоритма вычисления числа Pi, в методе IntegrateMethod необходимо прописать этот алгоритм. Причем параметры этого метода есть входы группы входов Integrate.

7.16. В методе IntegrateMethod необходимо также прописать передачу результата из этого модуля в модуль, который будет выводить результат на экран.

8. В окне Solution Explorer Structures и нажать +, что означает создание нового модуля.

9. В окне New module wizard задать имя нового модуля CPI.StartModule и нажать кнопку Finish.

9.1. Для создания экземпляра открыть окно Toolbox, выбрать вкладку Scheme Items. И перетащить объект module на граф-схему.

9.2. В окне свойств Properties выбрать в поле Prototypes тип CPI.StartModule.

9.3. Таким образом создан экземпляр модуля CPI.StartModule.

9.4. В окне Prototypes выделить вкладку CIG модуля CPI.StartModule и нажать кнопку +. Выделить в этом же окне созданную группу входов и прейти в окно Properties. Ввести в поле name окна Properties имя группы input.

9.5. В окне Prototypes выделить вкладку CIG модуля CPI.StartModule и нажать кнопку +. Выделить в этом же окне созданную группу входов и прейти в окно Properties. Ввести в поле name окна Properties имя группы result.

9.6. В окне Prototypes выделить созданную группу входов result. Нажать кнопку +. Выделить в этом же окне созданный вход и в окне Properties в поле name ввести res, а в поле type тип double. 

9.7. В окне Prototypes выделить вкладку COG модуля CPI.StartModule и нажать кнопку +. Выделить в этом же окне созданную группу выходов и прейти в окно Properties. Ввести в поле name окна Properties имя группы output.

9.8. В окне Prototypes выделить созданную группу выходов output и нажать кнопку +.

9.9. Создать в группе выходов следующие выходы: F типа function; a, b, eps типа double.

9.10. Для открытия кода, сгенерированного в следствие создания экземпляра модуля CPI.StartModule, необходимо двойным щелчком мыши нажать по созданному экземпляру модуля CPI.StartModule.

9.11. В методе StartMethod модуля CPI.StartModule написать код, отвечающий считыванию вводимых пользователем параметров задачи.

9.12. В методе StartMethod модуля CPI.StartModule также написать код, отвечающий за передачу данных из этого модуля в модуль, реализующий алгорит вычисления задачи.

9.13. В методе StartMethod модуля CPI.StartModule также написать код, отвечающий за вывод результата, полученного от модуля CPI.Integration, на экран.

10. В окне Toolbox во вкладке Scheme Items выделить объект Connector.

11. На граф-схеме выделить выход группы выходов output модуля CPI.StartModule и, не отпуская левой кновки мыши, провести связь до входа группы входов Integrate модуля CPI.Integration.

12. Аналогично провести три оставшиеся связи от выходов группы выходов output модуля CPI.StartModule к входам группы входов Integrate модуля CPI.Integration.

13. Создать связь от выхода группы выходов result модуля CPI.Integration к входу группы входов result модуля CPI.StartModule.

14. Выделить выход группы выходов result модуля CPI.Integration и, не отпуская левой клавиши мыши, провести связь к входу группы входов result модуля CPI.StartModule.

15. Открыть окно Solution Explorer. Выбрать в дереве проект CPI.

16. Кликнуть правой клавишей мыши по проекту CPI и выбрать в контекстном меню Properties.

17. В появившемся окне свойств проекта CPI выбрать вкладку Deployment.

18. Во вкладке Deployment в группе Cluster Options выбрать опцию Local и нажать кнопку Go.

19. После нажатия кнопки Go система осуществит проверку на прослушивание указанного порта и поиск на наличие подключенных к кластеру компьютеров.

20. После того, как система закончит проверку, перейти на граф-схему и выбрать вкладку Machines.

21. Во вкладке Machines окна Toolbox представлены компьютеры, входящие в кластер.

22. Во вкладке Machines выбрать машину.

23. Не отпуская левой клавиши мыши, перетащить выбранную машину в группу входов input модуля CPI.StartModule.

24. Аналогично перетащить следующую машину в группу входов result модуля CPI.StartModule.

25. Аналогично перетащить машины в группу входов Integrate модуля CPI.Integration.

26. Для компиляции и запуска созданной программы выбрать в меню Build->Rebuild solution.

27. Для просмотра компиляции и развертывания программы на кластере в окне Solution Explorer нажать правой клавишей по проекту CPI и выбрать в контекстном меню Deploy.

28. Компиляция и развертывание программы на кластере завершено.

29. Все данные по развертыванию программы на кластере сохранены в файле Execution.run.

30. Запуск программы осуществляется нажатием клавиши F5.