Содержание
- 2. Лекция 3 2008 Аннотация В третьей лекции обсуждаются средства организации двухточечных обменов. Рассматриваются различные режимы блокирующих
- 3. План лекции 2008 Настройка рабочего места для выполнения практических заданий. Блокирующие двухточечные обмены. Двухточечные обмены с
- 4. Настройка рабочего места 2008
- 5. Настройка рабочего места 2008 Рассмотрим настройку рабочего места в среде Microsoft Windows MPICH2 для MS Windows
- 6. Настройка рабочего места 2008 После щелчка будет произведена установка диспетчера процессов spmd (spmd process manager). Необходимо
- 7. Настройка рабочего места 2008 В папке MPICH2 располагаются папки: bin examples include jumpshot lib Динамически подключаемые
- 8. Настройка рабочего места 2008 Библиотеки в папке lib скомпилированы с помощью компиляторов MS Visual C++.NET и
- 9. Настройка рабочего места 2008 В строке Project -> properties -> C++->General->Additional Include Directories вводится путь к
- 10. Настройка рабочего места 2008
- 11. Настройка рабочего места 2008 В строке Project -> properties -> C++->Linker->General->Additional Library Directories вводится путь к
- 12. Настройка рабочего места 2008
- 13. Настройка рабочего места 2008 В строке Project -> properties -> C++->Linker->Input->Additional Dependencies вводится имя библиотеки mpi.lib.
- 14. Настройка рабочего места 2008
- 15. Настройка рабочего места 2008 Теперь проект настроен на использование MPICH2. Выполним компиляцию программы (пункт Build ->
- 16. Запуск MPI-программы в среде MS Windows 2008
- 17. Двухточечные обмены 2008
- 18. Двухточечные обмены 2008 Двухточечный (point-to-point, p2p) обмен В двухточечном обмене участвуют только два процесса, процесс-отправитель и
- 19. Двухточечные обмены 2008 Имеется несколько разновидностей двухточечного обмена блокирующие прием/передача, которые приостанавливают выполнение процесса на время
- 20. Двухточечные обмены 2008 Двухточечный обмен возможен только между процессами, принадлежащими одной области взаимодействия (одному коммуникатору).
- 21. Двухточечные обмены 2008 Правильно организованный двухточечный обмен сообщениями должен исключать возможность блокировки или некорректной работы параллельной
- 22. Двухточечные обмены 2008 Правильно
- 23. Двухточечные обмены 2008 Неправильно
- 24. Двухточечные обмены 2008 Неправильно
- 25. Двухточечные обмены 2008 В MPI приняты следующие соглашения об именах подпрограмм двухточечного обмена: MPI_[I][R, S, B]Send
- 26. Стандартный блокирующий двухточечный обмен
- 27. Двухточечные обмены 2008 Cтандартная блокирующая передача int MPI_Send(void *buf, int count, MPI_Datatype datatype,int dest, int tag,
- 28. Двухточечные обмены 2008 При стандартной блокирующей передаче после завершения вызова (после возврата из функции/процедуры передачи) можно
- 29. Двухточечные обмены 2008 Cтандартный блокирующий прием int MPI_Recv(void *buf, int count, MPI_Datatype datatype, int source, int
- 30. Двухточечные обмены 2008 Значение параметра count может оказаться больше, чем количество элементов в принятом сообщении. В
- 31. Двухточечные обмены 2008 Специфические коды завершения: MPI_ERR_COMM - неправильно указан коммуникатор. Часто возникает при использовании «пустого»
- 32. Двухточечные обмены 2008 «Джокеры» В качестве ранга источника сообщения и в качестве тега сообщения можно использовать
- 33. Двухточечные обмены 2008 Подпрограмма MPI_Recv может принимать сообщения, отправленные в любом режиме. Прием может выполняться от
- 34. Двухточечные обмены 2008 Пример использования операции блокирующего двухточечного обмена
- 35. 2008 #include #include int main (int argc, char *argv[]) { int ProcNum, ProcRank, tmp; MPI_Status status;
- 36. Двухточечные обмены 2008 Пример программы, попадающей «в тупик»
- 37. 2008 program main_mpi include 'mpif.h' integer rank, tag, cnt, ierr, status(MPI_STATUS_SIZE) real sndbuf, rcvbuf tag =
- 38. Двухточечные обмены 2008 Размер полученного сообщения (count) можно определить с помощью вызова подпрограммы int MPI_Get_count(MPI_Status *status,
- 39. Двухточечный обмен с буферизацией
- 40. Двухточечные обмены 2008 Передача сообщения в буферизованном режиме может быть начата независимо от того, зарегистрирован ли
- 41. Двухточечные обмены 2008 Размер буфера должен превосходить размер сообщения на величину MPI_BSEND_OVERHEAD. Это дополнительное пространство используется
- 42. Двухточечные обмены 2008 При выполнении буферизованного обмена программист должен заранее создать буфер достаточного размера: int MPI_Buffer_attach(void
- 43. Двухточечные обмены 2008 Буферизованная передача завершается сразу, поскольку сообщение немедленно копируется в буфер для последующей передачи.
- 44. Двухточечные обмены 2008 После завершения работы с буфером его необходимо отключить: int MPI_Buffer_detach(void *buf, int *size)
- 45. Двухточечные обмены 2008 Пример программы, использующей обмен с буферизацией
- 46. 2008 #include "mpi.h" #include int main(int argc,char *argv[]) { int *buffer; int myrank; MPI_Status status; int
- 47. Другие разновидности двухточечного обмена
- 48. Двухточечные обмены 2008 Cинхронный обмен Завершение передачи происходит тольк после того, как прием сообщения инициализирован другим
- 49. Двухточечные обмены 2008 Обмен «по готовности» Передача «по готовности» выполняется с помощью подпрограммы MPI_Rsend: int MPI_Rsend(void
- 50. Двухточечные обмены 2008 Завершается операция обмена сразу же. Если прием не зарегистрирован, результат выполнения операции не
- 51. Двухточечные обмены 2008 Обмен «по готовности» может увеличить производительность программы, поскольку здесь не используются этапы установки
- 52. Двухточечные обмены 2008 Совместные прием и передача Операции приемопередачи объединяют в едином вызове передачу сообщения одному
- 53. Двухточечные обмены 2008 Подпрограмма MPI_Sendrecv выполняет прием и передачу данных с блокировкой: int MPI_Sendrecv(void *sendbuf, int
- 54. Двухточечные обмены 2008 Подпрограмма MPI_Sendrecv_replace выполняет прием и передачу данных, используя общий буфер для передачи и
- 55. 2008 В этой лекции мы рассмотрели: настройку рабочей среды для разработки и запуска MPI-программ в среде
- 56. 2008 Задания для самостоятельной работы Выполнить настройку среды на своем рабочем месте для разработки и запуска
- 57. 2008 Задания для самостоятельной работы В исходном тексте программы на языке C пропущены списки параметров процедур
- 58. 2008 #include "mpi.h" #include int main(int argc,char *argv[]) { int myid, numprocs; char message[20]; int myrank;
- 59. 2008 Задания для самостоятельной работы В исходном тексте программы на языке C предусмотрена некая схема обмена
- 60. 2008 #include "mpi.h" #include int main(int argc,char *argv[]) { int myrank, size, message; int TAG =
- 61. 2008 Задания для самостоятельной работы Два вектора a и b размерности N представлены двумя одномерными массивами,
- 63. Скачать презентацию