У вас вопросы?
У нас ответы:) SamZan.net

Тема- Колективні операції

Работа добавлена на сайт samzan.net:

Поможем написать учебную работу

Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 28.12.2024

Тема: Колективні операції.

Мета: Навчитися обчислювати  значення певного одновимірного інтеграла через функції: MPI_Bcast, MPI_Reduce

Обладнання: IBM – сумісні ПК

Програмне забезпечення: ОС Windows, MS Visual C++

Контрольні питання:

1. За рахунок чого гібридні MPI-OpenMP програми можуть бути ефективніше звичайних MPI-програм?

2. Чи потрібно повідомляти MPI-бібліотеці про те, що MPI-процес буде викликати функції з паралельних потоків?

Короткі теоретичні відомості

У колективних комунікаціях беруть участь всі процеси комунікатора. Відповідні функції повинні бути викликані в кожному з процесів. MPI гарантує коректну спільну роботу колективних комунікацій та комунікацій "точка-точка". У MPI містяться функції наступних типів:

  •  Бар'єрна синхронізація процесів комунікатора
  •  Розсилка одних і тих же даних від одного процесу всім (broadcast)
  •  Збір даних одним процесом від інших (gather)
  •  Поділ даних одного процесу між всіма процесами (scatter)
  •  Варіація збору даних, при якій всі процеси отримують результат (allgather)
  •  Обмін даними "кожен з кожним" (alltoall)
  •  редукційні операції
  •  Комбіновані операції редукції і розділення
  •  Часткові редукційні операції

Функція MPI_Bcast.

int MPI_Bcast( void *buffer, int count, MPI_Datatype datatype, int root, MPI_Comm comm )

INPUT/OUTPUT PARAMETER

      buffer - Адрес.

INPUT PARAMETERS

      count  - Число елементів у буфері

      datatype - тип даних

      root - ранг кореневого процесу

      comm - комунікатор

Дані, находяшіеся за адресою buffer в процесі з рангом root копіюються всім сталевим процесам за адресою buffer

Функція MPI_Reduce.

int MPI_Reduce(void *sendbuf, void *recvbuf, int count, MPI_Datatype datatype,

                     MPI_Op op, int root, MPI_Comm comm)

INPUT PARAMETERS

      sendbuf - Адреса, за якою знаходяться данні які відправляються

      count - число елементів в sendbuf, до якого потрібно примінити операцію

      datatype - Тип даних

      op - Редукційна операція

      root - ранг процесу, який отримає підсумкове значення (кореневого процесу)

      comm - Комунікатор

OUTPUT PARAMETER

      recvbuf - Адреса, за якою буде записано підсумкове значення

Приклад рішення задачі:

Пошук k-тої порядкової статистики

Визначення: k-тою порядковою статистикою x(k) масиву x називається к-тий за не зменшенням елемент масиву x.

Визначення: медіаною масиву x називається x (N / 2 +1), де N - довжина масиву.

Позначення: | x | - число елементів масиву x.

Опис послідовного алгоритму: Нехай заданий масив S з n елементів і число k. Необхідно знайти S (k). Застосовується рекурсивна процедура select

val_type select(int k, val_type* S)

{

if(|S|<50)

{

 sort(S);

 return S[k]

}

else

{

 if(|S1|>k)

  return select(k,S1);

 else

  if(|S1|+|S2|>k)

   return m;

  else

   return select(k-|S1|-|S2|,S3);

}

}  

Опис паралельного алгоритму: Нехай заданий масив S з length елементів і число k. Необхідно знайти S (k). Застосовуються рекурсивні функції selectparallel і select

int  selectparallel(int k, int* s, int size)

{

if(size<50)

       {

               if(!rank)

 {

  sort(s,size);

  result=s[k];

 }

 MPI_Bcast(&result,1,MPI_INT,0,MPI_COMM_WORLD);

               return result;

       }

      else

       {

 if (tc1>k)

 {

  return selectparallel(k,s,tc1);

 }

 else if (tc1+tc2>k)

 {

  return  m;

 }

 else

 {

  return selectparallel(k-tc1-tc2,s,tc3);

 }

       }

}

Хід роботи:

Завдання:

1 частина

1. Написати паралельну програму пошуку k-тої порядкової статистики в масиві за лінійний час. Масив зчитується з файлу, ім'я якого передається виконуваному файлу в командному рядку. Формат файлу: в першому рядку число елементів масиву і номер статистики, далі йдуть самі елементи через пробіл. Тип елементів int.

Зміст звіту :

  1.  Тема, мета роботи, обладнання, програмне забезпечення
  2.  Дайте відповідь на контрольні питання
  3.  Містити послідовність скріншотів по ходу виконання роботи і відповідні коментарі
  4.  Висновки.

Рекомендована література:

1. Книга «Параллельное программирование для многопроцессорних вичислительних систем» (С. Немнюгин, О. Стесик, Изд БХВ-Петербург, 2002).




1. дефицит нравственности- как у отдельных личностей так и во взаимоотношениях между людьми
2. Несуществующее животное
3. УЧЕБНОЕ ПОСОБИЕ ПО СТАТИСТИКЕ ЧАСТЬ I НОВОСИБИРСК 2001 ББК
4. а залоговые аукционы воровство целых отраслей экономики коррупция выборы президента в 96 году наглая
5. А Международные стандарты ~ это документы формирующие единые требования при соблюдении которых обеспечи
6. Привести пример макроэкономической модели и указать эндогенные и экзогенные переменные
7. Статья 21 Право поступления на гражданскую службу 1
8. Широтно-импульсный модулятор
9. ОКНА И ДВЕРИ
10. Предмет курсу. 2
11. Гомельский государственный университет имени Франциска Скорины Геологогеографический факультет
12. Інформація в управлінні
13. златое слово и по какому поводу Максимальное количество баллов ~ 2 балла 2
14. Дом искусств Т
15. Технические средства регулирования контроля защиты
16. Волжские Встречи 24 59 ЯНВАРЯ 2014 года г.html
17. тематичних наук Київ ~ Дисертацією є рукопис Робота виконана в Інституті металофізики і
18.  Овладеть системой методов психологопедагогической диагностики учащегося и ученического коллектива
19. задание ’1 Для того чтобы правильно выполнить контрольное задание ’1 необходимо усвоить следующий грамма.html
20. cpl специальные возможностиppwiz