отладка Mpi приложений

15
Отладка, трассировка и оптимизация приложений

description

 

Transcript of отладка Mpi приложений

Page 1: отладка Mpi приложений

Отладка, трассировка и оптимизация приложений

Page 2: отладка Mpi приложений

Что делаем сегодня?• Зависает? Вылетает? -> отлаживаем

– Инструменты отладки Visual Studio для MPI

• Медленно работает? -> оптимизируем– Профилировка– Расширенные возможности MPI

Page 3: отладка Mpi приложений

Упражнение• Откройте решение DebugMPIContrastStretch• Убедитесь, что пути к MPI установлены• Скомпилируйте в режиме Release / 32 bit• Запустите на локальной машине:

– Запустите CMD и перейдите в каталог со скомпилированной программой

– Запустите mpiexec -n 2 DebugMPIContrastStretch.exe sunset.bmp out.bmp 10 5

Page 4: отладка Mpi приложений

Не работает?

Отладим!

Page 5: отладка Mpi приложений
Page 6: отладка Mpi приложений

Упражнение• Выберите режим сборки Debug / 32 bit• В свойствах проекта:

– Configuration properties Debugging выберите Debugger to launch - MPI Cluster Debugger

– Обратите внимание на настройки

• Запустите отладку Debugging -> Start debugging

Page 7: отладка Mpi приложений

Отладка MPI приложений• В качестве настроек необходимо указать:• MPIRun Command: C:\Program Files\Microsoft HPC Pack 2008

SDK\Bin\mpiexec.exe• MPIRun Arguments: аргументы для mpiexec, например -n 4 для запуска 4-х

процессов• MPIRun Working directory: папка в которой находится .EXE приложения (например

x64\debug), указывается с помощью $(TargetDir)• Application Command: путь к .EXE приложения, указывается с помощью

$(TargetPath)• Application Arguments: входные аргументы приолжения (например Sunset.bmp

output.bmp 10 5)• MPIShim Location: приложение которое выступает в роли прослойки между

отладчиком VS и MPI процессами• 32-bit application: C:\Program Files\Microsoft Visual Studio

9.0\Common7\IDE\Remote Debugger\x86\mpishim.exe• 64-bit application: C:\Program Files\Microsoft Visual Studio

9.0\Common7\IDE\Remote Debugger\x64\mpishim.exe

Page 8: отладка Mpi приложений

Отладка MPI приложений на локальной машине

Важно иметь в виду, что отладка MPI – приложения подразумевает отладку всех его процессов. Во время отладки выполнение каждого процесса будет запущено в отдельном консольном окне. Для того чтобы, остановка одного процесса при достижении точки прерывания останавливала остальные процессы необходимо выбрать в меню •Tools menu -> Options -> Debugging tab ->General -> “Break all processes when one process breaks

Page 9: отладка Mpi приложений

Отладка MPI приложений на локальной машине

• После расстановки точек прерывания запустите приложеие. Когда один из процессов достигнет точки прерывания все процессы остановят своё выполнение. Для того чтобы узнать какой процесс достиг точки прерывания необходимо в коде программы объявить глобальную переменную, которой будет присваиваться идентификатор процесса (“rank”) (например переменная “myRank”).

Page 10: отладка Mpi приложений

Deadlock

Page 11: отладка Mpi приложений

Упражнение• Исправьте все ошибки

Page 12: отладка Mpi приложений

Упражнение• Откройте решение DebugMPIContrastStretch

on cluster• Выберите режим сборки Debug / 64 bit• В свойствах проекта:

– Configuration properties Debugging выберите Debugger to launch - MPI Cluster Debugger

– Обратите внимание на настройки

Page 13: отладка Mpi приложений

Упражнение– Выберите узлы, на которых будете отлаживать– Скопируйте все файлы из папки debug вашего проекта в папки c:\

apps\<ваша учетная запись> выбранных узлов– Измените параметр MPIRun Arguments: submit /scheduler:HN /jobname:DEBUG

/requestednodes:<выбранные узлы через запятую> /numcores:<кол-во узлов*2> /exclusive:true /workdir:C:\Apps \<ваша учетная запись> /stdout:C:\Apps \<ваша учетная запись>\OUT.txt /stderr:C:\Apps \<ваша учетная запись>\ERR.txt mpiexec

– Выключите DrWeb self-protection

– Расставьте точки останова– Запустите отладку

Page 14: отладка Mpi приложений

Отладка MPI приложений на кластере

Page 15: отладка Mpi приложений

© 2008 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as

of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation.

MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.