Работа в Visual Studio

Исследование запуска и принципов работы в интегрированной инструментальной среде Visual Studio. Анализ конфигурации. Запуск программ и задач на кластере. Использование различных режимов, менеджера и ресурсов оболочки. Отладка программ в интерфейсе.

Рубрика Программирование, компьютеры и кибернетика
Вид краткое изложение
Язык русский
Дата добавления 26.06.2014
Размер файла 4,3 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Оглавление

  • Краткое описание Visual Studio
    • Типы ресурсов
    • Конфигурации
    • Опции
    • Использование OpenMP
    • Отладка OpenMP
  • Подключение MS-MPI к Visual Studio 2008
  • Запуск MPI-программы в различных режимах
  • Ручной запуск параллельной задачи на кластере
  • Запуск задач с помощью Job Manager
  • Интеграция Visual Studio и mpiexec
    • Отладка MPI-программ
    • Краткое описание Visual Studio
    • При запуске появится основное рабочее пространство VS (рис. 1).

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

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

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

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

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

Размещено на http://www.allbest.ru/

Создать новый элемент в проекте (исходные коды и прочее) можно так: нажать на 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 - Для того, чтобы узлы успешно запустили программу, необходимо скомпилировать нашу программу со всеми зависимостями. Для этого необходимо: программа visual studio отладка

Размещено на http://www.allbest.ru/

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

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

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

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

6) Вызвать Properties проекта

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

8) Configuration properties => C/C++ => Code Generation

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

10) Rebuild

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

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

Запустим либо cmd, либо Start=>Programs=>HPC Pack 2008=>HPC Power Shell

mpiexec -n 10 \\dc\Temporary_Data\MyMPIProject.exe

Результат:

Размещено на http://www.allbest.ru/

Использование программы mpiexec (полный список опций можно вызвать mpiexec /help2)

mpiexec [options] executable [args] [ : [options] exe [args] : ... ]

mpiexec -configfile <file name>

-n <количество процессов>

-env <название переменной> <значение переменной>

-wdir <директория, в которой хранятся файлы>

-hosts n host1 [m1] host2 [m2] ... hostn [mn] [список компьютеров в случае использования кластера, синтаксис: -hosts 1 node-12 2 node-13 3 node-14 и др)

-cores <количество ядер, которое нужно задействовать, на каждом процессоре>

Примеры ручного добавления задач:

mpiexec -n 4 pi.exe

mpiexec -hosts 1 server1 master : -n 8 worker

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

job submit /numprocessors:8 /runtime:5:0 mpiexec
\\hnwindows\share\MyMPIProject.exe

Запустить задачу на 8 процессорах с максимальным временем выполнения не более 5 часов.
job submit /numcores:16 mpiexec \\hnwindows\share\MyMPIProject.exe

запустить задачу на 16 ядрах
job submit /parametric:6-12:3 mpiexec \\dc\Temporary_Data\MyMPIProject.exe *

В случае успешного добавления должна появиться надпись:
Job has been submitted. ID: [].
запустить параметрическую задачу, при этом: 6-12 - диапазон изменяемых значений, 3 - шаг между ними, * - место подстановки значений. Соответственно, данная команда запустит три задачи:
MyMPIProject 6
MyMPIProject 9
MyMPIProject 12

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

Для успешных расчётов на кластере необходимо, чтобы файл программы и все входные данные были доступны всем узлам. В данном случае (и в любом другом) наиболее оптимально использовать файлы, лежащие в сети, куда имеют доступ все узлы (включая главный узел).

JM находится в Start=>Programs=>HPC Pack 2008=>HPC Job Manager.

Все задачи разделены на «все», «мои», каждый вид подразделяется на «Настраиваемые в данный момент», «Выполняющиеся», «Закончившиеся», «Закончившиеся с ошибкой», «Отменённые».

Для добавления задач необходимо использовать консоль справа Actions, подменю Job Submission. В зависимости от тип задачи, можно выбрать new Job, new Single-Task Job, new Parametric Sweep job

New Job: диалог для создания задачи, в которой может быть несколько подзадач. Из необходимых для выбор полей отметим Job resources: может быть «ядро», «сокет», «узел». Use assigned resourses exclusively for this job указывает менеджеру задач, что выбранные ресурсы будут заняты данной задачей эксклюзивно.

Следующая вкладка Task List, отвечает за добавление подзадач:

Добавить можно Basic Task, Parametric Task, Task From File.

Размещено на http://www.allbest.ru/

Command line: как необходимо запускать задачу.

mpiexec \\dc\Temporary_Data\myMPIProject.exe *

(.exe можно опустить).

Working directory: рабочая директория, относительно которой будут определяться абсолютные пути для standard input/output/error.

Standard input: файл с входными данными

Standard output: файл для выходных данных

Standard error: файл для ошибок выполнения.

После нажатия Submit, если всё было заполнено верно, задача появится в вкладке Active:

После окончания расчётов задача сменит статус либо на Finished:

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

Пример запуска параметрической задачи из командной строки:

Job submit /parametric:6-12:1 /jobname:”MyParametricSweep” mpiexec \\dc\Temporary_Data\MyMPIProject.exe *

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

Есть также дополнительный способ интеграции Visual Studio и mpiexec, нестандартный, но, тем не менее, позволяющий оперировать кластерными вычислениями непосредственно из Visual Studio, без запуска HPC Cluster Manager, mpiexec и т.д.

Так, в подменю Tools находится раздел Other tools (в русской версии Сервис=>Внешние инструменты).

Command - путь к mpiexec от необходимой реализации MPI. В аргументах необходимо указать путь к проекту ($(TargetPath)), в Initial Directory - директорию проекта.

Из полезных дополнительных опций следует отметить use output window - использовать консоль для вывода результатов.

Таким образом, мы получаем полный доступ к функциональности mpiexec и других утилит, поставляемых с HPC Pack 2008. В качестве пример приведу настройку External tools для добавления и расчёта задачи на кластере в HPC Job Manager:

Command: D:\Program Files\Microsoft HPC Pack2\Bin\job.exe

Arguments: submit /numcores:16 mpiexec \\dc\Temporary_Data\MyMPIProject.exe

Разумеется, данный пример не иллюстрирует всех возможностей конфигурации External Tools. Данный инструмент достаточно мощный, позволяющий эффективно связывать среду разработки с непосредственно кластером (кроме этого, можно добиться такой конфигурации, что с workstation можно отправлять задачи на расчёт на удалённый headnode кластера), и данному аспекту будет посвящён отдельный пост.

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

Для кластерной отладки используется Cluster Debugger. Пока что он работает только с Microsoft C/C++ компилятором. В свойствах проекта необходимо выбрать как Debugger MPI Cluster Debugger. В VS 2010 можно обойтись настройками отладчика по умолчанию.

Также можно нажать F5 и выбрать узлы кластера.

Размещено на Allbest.ru

...

Подобные документы

  • Средства интегрированной среды Microsoft Visual Studio, предоставляемые программисту для реализации программ на языке С++. Особенности стиля написания программ. Типовые приемы и методы создания и отладки программ. Листинги программ и их тестирование.

    лабораторная работа [814,3 K], добавлен 26.05.2013

  • Объектно-ориентированная технология создания программ. Среда разработки Visual Studio.NET. Особенности среды Microsoft Visual Studio 2010. Приложения C# для расчетов по формулам, консольный ввод-вывод. Форматирование значений данных. Программы с циклами.

    методичка [2,1 M], добавлен 11.09.2014

  • Описание программного продукта Visual Studio. Возможности, преимущества и недостатки бесплатной среды программирования Sharp Develop для проектов на платформе MS.NET. Получение информации из справочной системы .NET SDK. Запуск визуального отладчика CLR.

    реферат [393,4 K], добавлен 05.04.2017

  • Языки среды программирования Visual Studio. Стартовая страница интегрированной среды разработки. Окно New Project. Вкладка разработки формы. Перемещение и изменение размера кнопки. Прибавление программного кода к кнопке. Запуск и сохранение проекта.

    презентация [1,4 M], добавлен 29.04.2014

  • Изучение особенностей проектирования прикладных программ с помощь средств Visual Studio 2010 на языке C#. Расчет конического соединения, конусного градиента, усилия для разрыва соединения и требуемой силы сжатия. Реализация и тестирование программы.

    курсовая работа [1,7 M], добавлен 19.02.2013

  • Требования к MS Office 2007. Набор средств разработки Visual Studio Tools for Office как альтернатива VBA. Разработка СУБД на базе MS Access. Разработка надстройки "Электронные компоненты" для PowerPoint на языке C# в среде MS Visual Studio 2010.

    дипломная работа [5,2 M], добавлен 03.05.2013

  • Разработка и освоение в современном производстве информационной подсистемы. Создание базы данных в среде MS SQL Server 2008 и приложения в среде MS Visual Studio 2012. Процесс ввода при выборе пунктов меню. Заполнение формы с критериями на фильтрацию.

    отчет по практике [834,4 K], добавлен 27.11.2013

  • Введение в Microsoft Visual Studio. Диалоговое окно "Восстановленные файлы" интегрированной среды разработки. Веб-обозреватель интегрированной среды разработки. Диалоговое окно "Проверка подлинности прокси-сервера". Сохранение и восстановление файлов.

    реферат [22,0 K], добавлен 29.05.2013

  • Обоснование выбора средства программирования. Входная и выходная информация. Основные требования к программному и аппаратному обеспечению. Анализ метода поиска в строке по алгоритму Боуера-Мура. Глобальные переменные и константы в среде Visual Studio.

    курсовая работа [489,0 K], добавлен 01.07.2015

  • Розробка таблиці для збереження даних у текстовому файлі про фільми в середовищі програмування Visual Studio C++ та їх сортування за країною виробництва. Реалізація таблиці за допомогою компонента dataGridView. Опис і контрольний приклад роботи програми.

    курсовая работа [1,4 M], добавлен 02.11.2016

  • Описание отношений между частями сложного проекта с помощью Visual Studio. Создание графов зависимостей для управляемого и машинного кода. Их использование для визуализации взаимосвязей между классами. Выявление циркулярных ссылок для обнаружения классов.

    контрольная работа [1,1 M], добавлен 20.02.2015

  • Общие сведения о работе программы в среде программирования Microsoft Visual Studio 2008, на языке программирования C++. Ее функциональное назначение. Инсталляция и выполнение программы. Разработанные меню и интерфейсы. Алгоритм программного обеспечения.

    курсовая работа [585,5 K], добавлен 24.03.2009

  • Microsoft Visual C++ и среда программирования Microsoft Developer Studio 6.0. Решение интеллектуальной задачи на компьютере. Построение алгоритма кодирования на Visual C++. Алгоритм решения задачи. Описание программы "Sort". Инструкции пользователя.

    курсовая работа [46,0 K], добавлен 27.11.2007

  • Создание БД "Экзамен". Характеристика методов класса. Необходимость использования стандартных подключаемых модулей (заголовочных файлов) Visual Studio для реализации пользовательского интерфейса и работы с вводом-выводом в поток консоли или в файл.

    курсовая работа [1,7 M], добавлен 28.05.2013

  • Изучение алгоритмов, написание программ на языке C#. Работа с массивами, строками, перечислениями, структурами, интерфейсами. Разработка и функциональность Windows-приложения. Создание и подключение баз данных в среде программирования Visual Studio 2019.

    отчет по практике [6,7 M], добавлен 18.10.2020

  • Исследование алгоритма взаимодействия пользователя с сервером, на котором находится база данных. Реализация безопасности информационной системы с помощью возможностей программного комплекса Visual Studio. Анализ особенностей интерфейса веб-приложения.

    курсовая работа [1,3 M], добавлен 17.06.2017

  • HTML5 — язык для структурирования и представления содержимого для всемирной паутины, а также основная технология, используемая в Интернете. Создание web-приложения и использованием технологии Asp.net MVC 3 и языка web-разметки HTML5. Состав платформы MVC.

    курсовая работа [1,2 M], добавлен 25.05.2012

  • Изучение принципов построения линейных алгоритмов и простых расчетных программ на языке программирования C. Разработка программы расчета математических выражений на основе вводимых данных. Создание консольных приложений в среде Microsoft Visual Studio.

    лабораторная работа [254,4 K], добавлен 23.11.2014

  • Разработка программного продукта, предназначенного для тестирования знаний пользователя по теме "Тепловые двигатели" нa языкe C++ в среде Micrоsоft Visual Studio с использовaниeм библиотeки MFC. Функциональное назначение созданного Windows-приложения.

    курсовая работа [954,4 K], добавлен 25.06.2011

  • Оптимізація перевезення продуктів із пунктів відправлення до пунктів споживання. Зниження транспортних витрат, розробка і використання оптимальних схем вантажних потоків. Архітектура програмного забезпечення в середовищі Microsoft Visual Studio 2010.

    курсовая работа [675,3 K], добавлен 10.03.2013

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.