Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Отладка, трассировка  и оптимизация приложений
 
Зачем? <ul><li>Понять внутреннее устройство программы </li></ul><ul><li>Найти узкие места программы  [ 80 /20] </li></ul><...
Как будем делать? <ul><li>Трассировка с помощью  ETW  (встроено в  HPC Pack ) </li></ul><ul><ul><li>mpiexec.exe –tracefile...
Упражнение <ul><li>Откройте исправленное решение DebugMPIContrastStretch </li></ul><ul><li>Соберите в режиме  Release / 64...
Упражнение <ul><li>В консоли  Job Manager  выберите: </li></ul><ul><ul><li>Actions    Create New Job From Description Fil...
Упражнение <ul><li>Файл трассы лежит в вашей папке (расширение  clog ) </li></ul><ul><li>Откройте его с помощью  Jumpshot ...
 
<ul><li>Rank  = 0 </li></ul>Rank  = 3 Rank  = 1 Rank  = 2 Process 1 Process 2 Process 3 Process 4 CN1 CN2 main main main m...
Коллективные операции
Упражнение <ul><li>Найдите в проекте участок, где производится рассылка размера картинки </li></ul><ul><li>Замените его на...
Упражнение <ul><li>Найдите в проекте участок, где производится рассылка кусков картинки </li></ul><ul><li>Замените его на:...
Упражнение <ul><li>Скомпилируйте </li></ul><ul><li>Сделайте трассировку, замерьте время на распространение картинки </li><...
Упражнение <ul><li>Перепишите функцию  CollectImage  с использованием коллективной операции  MPI_Scatter  </li></ul><ul><l...
© 2008 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be...
Upcoming SlideShare
Loading in …5
×

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

640 views

Published on

Published in: Business, Technology
  • Be the first to comment

  • Be the first to like this

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

  1. 1. Отладка, трассировка и оптимизация приложений
  2. 3. Зачем? <ul><li>Понять внутреннее устройство программы </li></ul><ul><li>Найти узкие места программы [ 80 /20] </li></ul><ul><li>Обнаружить ошибки параллельного программирования </li></ul>
  3. 4. Как будем делать? <ul><li>Трассировка с помощью ETW (встроено в HPC Pack ) </li></ul><ul><ul><li>mpiexec.exe –tracefile < файл трассы > <mpi приложение > < параметры > </li></ul></ul><ul><ul><li>Синхронизация </li></ul></ul><ul><ul><li>Конвертация в нужный формат </li></ul></ul><ul><ul><li>Сборка </li></ul></ul><ul><li>Виузализация с помощью Jumpshot </li></ul>
  4. 5. Упражнение <ul><li>Откройте исправленное решение DebugMPIContrastStretch </li></ul><ul><li>Соберите в режиме Release / 64 bit </li></ul><ul><li>Подготовьте к выполнению на кластере: </li></ul><ul><ul><li>Скопируйте в свою папку на кластере приложение и картинку </li></ul></ul><ul><ul><li>Сделайте пробный запуск через Job Manager </li></ul></ul>
  5. 6. Упражнение <ul><li>В консоли Job Manager выберите: </li></ul><ul><ul><li>Actions  Create New Job From Description File выберите Trace.xml </li></ul></ul><ul><ul><li>Перейдите на вкладку Tasks и отредактируйте, указывая актуальные названия файлов и пути </li></ul></ul><ul><ul><li>Запуск </li></ul></ul>
  6. 7. Упражнение <ul><li>Файл трассы лежит в вашей папке (расширение clog ) </li></ul><ul><li>Откройте его с помощью Jumpshot ( ярлык на рабочем столе ) </li></ul>
  7. 9. <ul><li>Rank = 0 </li></ul>Rank = 3 Rank = 1 Rank = 2 Process 1 Process 2 Process 3 Process 4 CN1 CN2 main main main main Mpi_send Mpi_send Mpi_send Mpi_receive Mpi_receive Mpi_receive
  8. 10. Коллективные операции
  9. 11. Упражнение <ul><li>Найдите в проекте участок, где производится рассылка размера картинки </li></ul><ul><li>Замените его на: </li></ul>int params[2] = {0, 0}; if (myRank == 0) // Master preps data for bcast: { params[0] = rows; params[1] = cols; } // EVERYONE participates in broadcast (one sends, rest receive): MPI_Bcast(params, 2, MPI_INT, 0 /*master broadcasts*/, MPI_COMM_WORLD); // EVERYONE now knows the size of the image: rows = params[0]; cols = params[1];
  10. 12. Упражнение <ul><li>Найдите в проекте участок, где производится рассылка кусков картинки </li></ul><ul><li>Замените его на: </li></ul>int rowsPerProc = rows / numProcs; int leftOverRows = rows % numProcs; void *sendbuf = (myRank == 0) ? image[leftOverRows] : NULL; void *recvbuf = (myRank == 0) ? chunk[1+leftOverRows] : chunk[1]; int count = rowsPerProc * cols; MPI_Scatter(sendbuf, count, MPI_PIXEL_T, recvbuf, count, MPI_PIXEL_T, 0 /*master scatters*/ , MPI_COMM_WORLD); if (myRank == 0 && leftOverRows > 0) memcpy_s(chunk[1], leftOverRows*cols*sizeof(PIXEL_T), image[0], leftOverRows*cols*sizeof(PIXEL_T));
  11. 13. Упражнение <ul><li>Скомпилируйте </li></ul><ul><li>Сделайте трассировку, замерьте время на распространение картинки </li></ul>
  12. 14. Упражнение <ul><li>Перепишите функцию CollectImage с использованием коллективной операции MPI_Scatter </li></ul><ul><li>Описание функции можно найти здесь: </li></ul><ul><li>http://www.mcs.anl.gov/research/projects/mpi/www/www3/ </li></ul>
  13. 15. © 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.

×