Iндивiдуальнi завдання до захисту роботи.

  1. Побудувати паралельний конвеєр команд для обрахунку виразу
    y = ( a + b + c + d ) * e + f g + h i - j k * l m * n + q r
  2. Побудувати паралельний конвеєр команд для обрахунку виразу
    y = a b - ( c + d ) + e + f g * h i * j * k l - ( m * n - p + q )
  3. Побудувати паралельний конвеєр команд для обрахунку виразу
    y = ( a b + c + d ) * ( e * f - ( g + h ) ) ( i * j - k l ) + ( m + n ) * p q
  4. Побудувати паралельний конвеєр команд для обрахунку виразу
    y = ( a + b c + d - e f * ( g + h ) ) * ( ( i * j + k * l ) + ( m n - ( p - q ) )
  5. Побудувати паралельний конвеєр команд для обрахунку виразу
    y = ( ( ( a + b ) + c * d ) - ( e + f ) + ( g + h ) ) - ( i * j + k l - ( m * n - p * q )
  6. Побудувати паралельний конвеєр команд для обрахунку виразу
    y = ( ( a * b - c d ) - ( e * f - g * h ) ) + ( i * j + k* l + m * n p * q )
  7. Побудувати паралельний конвеєр команд для обрахунку виразу
    y = ( ( a - b ) * c * d ) + e + f g h + ( i * j + k + l ) * m + n p - q
  8. Побудувати паралельний конвеєр команд для обрахунку виразу
    y = ( a * b - c d * e + f g - h ) * ( ( i + j ) * ( k + l ) - ( m n + p * q ) )
  9. Побудувати паралельний конвеєр команд для обрахунку виразу
    y= a + b c - d + ( e - f ) * ( g - h ) ( i * j + k l ) * ( ( m - n ) + ( p - q ) )
  10. Побудувати паралельний конвеєр команд для обрахунку виразу
    y = ( a + b ) * ( c - d ) ( e + f ) * ( g - h ) * ( i * j - ( k + l ) ) * m + n p - q
  11. Побудувати паралельний конвеєр команд для обрахунку виразу
    y = a * b c + d * ( ( e - f ) + g h ) i + j k * l - ( m l - p q )
  12. Побудувати паралельний конвеєр команд для обрахунку виразу
    y = ( a b + c d ) * ( e f + g h ) i - j k - l * m * n p - q
  13. Побудувати паралельний конвеєр команд для обрахунку виразу
    y = a * b c + d + e - f g * h ( i j * k l ) * m - n p - q
  14. Побудувати паралельний конвеєр команд для обрахунку виразу
    y = a + b c * d e * f g - h * i - j k - l m n - p q
  15. Побудувати паралельний конвеєр команд для обрахунку виразу
    y = a * b - c * d - e * f + g h ( i + j ) * k l * ( m n - p q )
  16. Побудувати паралельний конвеєр команд для обрахунку виразу
    y = a b + c d ( e - f ) * g h + i j - k * l m - n p * q
  17. Побудувати паралельний конвеєр команд для обрахунку виразу
    y = ( a - b ) * c d e f - g * h + i - j k * l * ( ( m + n ) - p * g )
  18. Побудувати паралельний конвеєр команд для обрахунку виразу
    y = a + b - c * d e f + g * h * ( i + j k * l + m * n * p q )
  19. Побудувати паралельний конвеєр команд для обрахунку виразу
    y = a * b c - d - e - f g * h + ( i j + k * l ) * m * n p * q
  20. Побудувати паралельний конвеєр команд для обрахунку виразу
    y = a * b + c * d e * f - g * h * i j - k l ( m - n ) * ( p + q )
  21. Побудувати паралельний конвеєр команд для обрахунку виразу
    y = a - b c - d * ( e f + g h ) * ( i * j k + l + m n * p q )
  22. Побудувати паралельний конвеєр команд для обрахунку виразу
    y = a * b c + d * e * f g - h - i j * k l * ( m n + p q )
  23. Побудувати паралельний конвеєр команд для обрахунку виразу
    y = ( a + b c - d + e * f g * h ) * ( ( i + j ) * k l + m n * p q )
  24. Побудувати паралельний конвеєр команд для обрахунку виразу
    y = ( a + b c * d - ( e f - g h ) ) * ( i - j k - l + m n * p q )
  25. Побудувати паралельний конвеєр команд для обрахунку виразу
    y = ( a - b ) * c d - e f * g h i + j k * l * m - n p + q
  26. Побудувати паралельний конвеєр команд для обрахунку виразу
    (a * x - b * y) + (c * x - d * y) + (e * x - f * y)
  27. Побудувати паралельний конвеєр команд для обрахунку виразу
    a ⋅ x + b ⋅ y + c ⋅ z a + b + c

 


 

Лабораторна робота №13.

Тема: Розподiлене програмування на мовi Java з використанням портфеля задач.

Мета:

  1. Опанувати методику створення розподiлених програм з використанням портфеля задач.

 

Теоретичнi вiдомостi.

Портфель задач - неупорядковане сховище задач, що чекають на виконання. Задачi кладуться у портфель, що розподiлений мiж декiлькома робочими процесами.

Кожен робочий процес виконує такий основний код:

while (true) { отримати задачу з портфеля; if (задач бiльш нема) break; #вихiд з циклу while виконати задачу, можливо, породжуючи новi задачи; }

Цей пiдхiд можна використовувати для:

  • реалiзацiї рекурсивного паралелизму;
  • вирiшення iтеративних проблем з фiксованою кiлькiстью незалежних задач.

Парадигма портфелю має такi кориснi властивостi:

  • Вона дуже проста у використаннi. Достатньо визначити представлення задачi, реалiзувати портфель, запрограмувати виконання задачи i визначити умови завершення роботи алгоритму.
  • Програми, що використовують портфель задач є масштабуємими у тому сенсi, що їх можна використовувати з будь-яким числом процесорiв. Для цього достатньо просто змiнити число робочих процесiв.
  • Спрощується реалiзацiя балансування навантаження. Якщо час виконання рiзних задач рiзний, то деякi з задач будуть виконуватися довше iнших. Але поки задач бiльше нiж робочих процесiв (у 2 - 3 рази), загальнi об'єми обчислень, що виконуються робочими процесорами, будуть приблизно однаковими.