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

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

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

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

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

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

от 25%

Подписываем

договор

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

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

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

Мета: Навчитися обчислювати  значення певного одновимірного інтеграла через функції: 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. индуктивность L P L S ; ёмкость СP С S ; cопротивление
3. Пульпит
4. ДЕВИАНТНОГО ПОВЕДЕНИЯ Отклоняющееся поведения рассматривалось с общественных норм традиций и табу кот
5. Агнец Божий взявший на Себя грехи мира
6. Проводниковая функция состоит в обеспечении связи периферических рецепторов центров спинного мозг
7. Реферат- Движение населения в ЦР и ЦЧР
8. тема знаний Бытие как центральная категория онтологии
9. Логистика Преподаватель ~ Ташбаев Ы
10. Шпаргалка- Учет основных средств на предприятии