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

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

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

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

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

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

от 25%

Подписываем

договор

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

Скидка 25% при заказе до 29.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. контрольна.[-p] [p]За змістом перерозподільча функція означає що з допомогою кредиту відбувається перерозподі
3. Чтобы выделить из стеблей волокно вначале нужно получить тресту стебли льна после вылежки на стлищах или
4. тема проведения single elimintion bo1 одна игра начиная с четвертьфиналов возможно проведение по системе bo3 до двух
5. Асортимент, споживчі властивості ялинкових прикрас та оцінка ступеня захисту прав споживачів при їх реалізації
6. Ведь эта цифра по своему порядку сопоставима с нашими потерями в годы второй мировой войны
7. 98 Конвенция была принята МеждународнойМорскойорганизацией иМов1978г
8. Просвещенный абсолютизм его особенности в России
9. тема координат Скалярное произведение и его свойства
10. Лабораторная работа 54 часа