Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
vs.doc
Скачиваний:
14
Добавлен:
23.05.2015
Размер:
1.95 Mб
Скачать

Оглавление

Оглавление 1

Краткое описание Visual Studio 2

Типы ресурсов 2

Конфигурации 5

Опции 5

Использование OpenMP 6

Отладка OpenMP 7

Подключение MS-MPI к Visual Studio 2008 8

Запуск MPI-программы в различных режимах 16

Ручной запуск параллельной задачи на кластере 17

Запуск задач с помощью Job Manager 18

Интеграция Visual Studio и mpiexec. 22

Отладка MPI-программ 24

Краткое описаниеVisual Studio

При запуске появится основное рабочее пространство VS (рис. 1).

Типы ресурсов

Всё, что относится к ресурсам в VS, обозначается словом Solution (решение). Solution – контейнер для всех ресурсов, включая проекты и прочее.

Проект – непосредственно программный код и все зависимости. Так называемая Compiler target.

Для создания нового проекта достаточно вызвать меню File=>New=>Project.

Если в наличии есть исходные файлы, то при создании проекта необходимо выбрать Empty Project.

Создать новый элемент в проекте (исходные коды и прочее) можно так: нажать на Project (не на Solution), затем Add=>New Item. Папки, такие как Source Files и прочее, особого смысла не имеют, кроме того, что помогают структурировать проект. К физическим папкам не привязаны.

В Visual Studio 2010 есть дополнительные возможности для анализа производительности приложения. Чтобы их посмотреть, нужно обратиться к Analyze->Profiler->New Performance Session, затем Analyze->Launch Performance Wizard (рис. 2).

Всё возможно замерять как на локальном компьютере, так и на кластере.

CPU Sampling:

Конфигурации

Изначально определены две конфигурации:

Debug: типичные для отладки опции, без оптимизации

Release: отладка возможна, некоторая оптимизация.

Собрать проект можно с помощью меню Build->Build [projectname] или из меню свойств проекта.

Опции

Раздел Properties:

Важные настройки в General Settings:

-C/C++ -> General – директории доп. зависимостей (Includes)

-Linker -> General – директории библиотек

-Linker -> Input – дополнительные зависимости,библиотеки

Важные настройки в Optimization:

- C/C++ -> Optimization – уровень оптимизации

- C/C++ -> Code Generation – векторизация

ИспользованиеOpenMp

Зададим количество потоков (OMP_NUM_THREADS):

ОтладкаOpenMp

Для отладки необходимо отметить breakpoint. Отмечается он слева от строки кода.

Щелкнув по breakpoint, можно получить меню, в котором можно выбрать следующие пункты:

- Временно отключить breakpoint

- установить условия, при которых включится breakpoint

- Установить действия, которые будут произведены при активации breakpoint

-Запустить, пауза, остановить, перезапустить

-Перейти к следующему, Step Into, Step over, Step out

Все потоки останавливаются, когда достигают breakpoint. Можно открыть дополнительные сведения через Debug->Windows->Threads.

Из новых функций VS 2010 для отладки есть Debug->Windows->Parallel Stacks:

Подключение ms-mpi к Visual Studio 2008

Для того, чтобы компилировать свои программы, написанные на C/C++/C# с использованием MPI и Visual Studio 2008, необходимо сначала скачать дистрибутив HPC Pack SDK 2008, содержащий все необходимые библиотеки: - HPC Pack SDK 2008

Аналогично нижеописанному алгоритму производится настройка проекта для MPICH2, за исключением других путей к библиотекам и mpiexec. Настройка проекта и запуск параллельных программ ничем не отличается и в 10-й версии Visual Studio.

Необходимо отметить, что все настройки, описанные ниже, можно не делать, если создать проект с шаблоном MPI Project, доступный в Visual Studio 2010. Тогда достаточно при создании проекта с данным шаблоном снять галочку с “Precompiled Header”.

Для того, чтобы не таскать за собой библиотеки по всем узлам в сбилденной в Visual Studio 2010 программе необходимо:

  1. Вызвать Properties проекта

  2. Сменить Конфигурацию на Release

  3. Configuration properties => C/C++ => Code Generation

  4. Runtime Library поменять значение на Multi-threaded (/MT)

  5. Rebuild

В данной инструкции компьютер, на котором осуществляется компиляция и запуск программы, имеет доменное имя dc.

1 – Создать проект C++   (В русской версии Visual C++=>Общие, «Пустой проект»)

Открыть свойства проекта.

2 – Поменять значение поля Subsystem в Linker=>System на CONSOLE(/SUBSYSTEM:CONSOLE) (для русской версии VS: Компоновщик=>Система=>Подсистема) 3 – Добавить к компоновщику (Linker) путь к дополнительным библиотекам (в русской версии VS необходимо зайти на вкладку Общие) 4 – Добавить к компоновщику (Linker) дополнительные зависимости . Вписать msmpi.lib Ws2_32.lib. В данной программе используется дополнительная зависимость Ws2_32.lib, данная библиотека используется для сетевого взаимодействия, в других проектах может быть и не задействована. 5 – добавить файл C++ к проекту (в данной инструкции мы будем использовать программу Hello World), нажать правой кнопкой мыши на названии проекта, Add=>Add an element (для русской версии Добавить=>Создать элемент), где выбрать C++ File:

#include <iostream>

#include <iomanip>

#include <fstream>

#include <cstdlib>

#include <ctime>

#include <cassert>

#include <math.h>

#include <windows.h>

#include <mpi.h>

using namespace::std;

int myRank;

int numProcs;

char host[256];

int main(int argc, char* argv[])

{

MPI_Init(&argc, &argv);

MPI_Comm_size(MPI_COMM_WORLD, &numProcs); // number of processes involved in run

MPI_Comm_rank(MPI_COMM_WORLD, &myRank); // my process id: 0 <= myRank < numProcs

gethostname(host, sizeof(host)/sizeof(host[0])); // machine we are running on

cout << "Process " << myRank << " of " << numProcs << " is running on '" << host << "'." << endl;

MPI_Finalize();

return 0;

}

6 – Вызвать свойства проекта, появится новая вкладка C/C++. Добавить к путям компилятора (Compiler) пути для дополнительных файлов (для русской версии: дополнительные каталоги включения):

7 – Для того, чтобы узлы успешно запустили программу, необходимо скомпилировать нашу программу со всеми зависимостями. Для этого необходимо:

8 – Скомпилировать программу. Build project (в русской версии Построить <имя проекта>).

Бинарный файл, необходимый для запуска, расположен в Start=>Documents=>Documents=>Visual Studio 2008=>Projects=><имя проекта>=>Debug=><имя С++-файла>.exe

Необходимо также отметить, что, если необходимы многопроцессорные расчёты, то «собирать» MFC в статическом виде не требуется – все необходимые библиотеки есть на том компьютере, на котором происходит разработка. В случае же запуска на кластере MFC в статическом виде просто необходимо, так как на узлах могут отсутствовать необходимые библиотеки.

Необходимо отметить, что для Visual Studio 2010 указанная последовательность не работает. Для того, чтобы слинковать все библиотеки с вашей программой, необходимо:

  1. Вызвать Properties проекта

  2. Сменить Конфигурацию на Release

  3. Configuration properties => C/C++ => Code Generation

  4. Runtime Library поменять значение на Multi-threaded (/MT)

  5. Rebuild

Для того, чтобы программа была доступна всем узлам, необходимо поместить бинарный файл в каталог \\dc\Temporary_Data\[каталог_пользователя], доступный по сети всем узлам кластера.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]