Представленные в пп. 11.3.1 – 11.3.3 алгоритмы определяют общую схему параллельных вычислений для метода сеток в многопроцессорных системах с распределенной памятью. Далее эта схема может быть конкретизирована реализацией практически всех вариантов методов, рассмотренных для систем с общей памятью (применение дополнительной памяти для схемы Гаусса – Якоби, чередование обработки полос и т.п.). Проработка таких вариантов не привносит каких-либо новых эффектов с точки зрения параллельных вычислений, и их разбор может использоваться как тема заданий для самостоятельных упражнений.
100 | 210 | 0,06 | 210 | 0,54 | 0,11 | 210 | 1,27 | 0,05 |
200 | 273 | 0,35 | 273 | 0,86 | 0,41 | 273 | 1,37 | 0,26 |
300 | 305 | 0,92 | 305 | 0,92 | 1,00 | 305 | 1,83 | 0,50 |
400 | 318 | 1,69 | 318 | 1,27 | 1,33 | 318 | 2,53 | 0,67 |
500 | 343 | 2,88 | 343 | 1,72 | 1,68 | 343 | 3,26 | 0,88 |
600 | 336 | 4,04 | 336 | 2,16 | 1,87 | 336 | 3,66 | 1,10 |
700 | 344 | 5,68 | 344 | 2,52 | 2,25 | 344 | 4,64 | 1,22 |
800 | 343 | 7,37 | 343 | 3,32 | 2,22 | 343 | 5,65 | 1,30 |
900 | 358 | 9,94 | 358 | 4,12 | 2,41 | 358 | 7,53 | 1,32 |
1000 | 351 | 11,87 | 351 | 4,43 | 2,68 | 351 | 8,10 | 1,46 |
2000 | 367 | 50,19 | 367 | 15,13 | 3,32 | 367 | 27,00 | 1,86 |
3000 | 364 | 113,17 | 364 | 37,96 | 2,98 | 364 | 55,76 | 2,03 |
(k – количество итераций, t – время (сек), S – ускорение)
В завершение рассмотрим возможность организации параллельных вычислений, при которых обеспечивалось бы нахождение таких же решений задачи Дирихле, что и при использовании исходного последовательного метода Гаусса – Зейделя. Как отмечалось ранее, такой результат может быть получен за счет организации волновой схемы расчетов. Для образования волны вычислений представим логически каждую полосу узлов области расчетов в виде набора блоков (размер блоков можно положить, в частности, равным ширине полосы) и организуем обработку полос поблочно в последовательном порядке (см. рис. 11.12). Тогда для полного повторения действий последовательного алгоритма вычисления могут быть начаты только для первого блока первой полосы узлов; после того как этот блок будет обработан, для вычислений будут готовы уже два блока – блок 2 первой полосы и блок 1 второй полосы (для обработки блока полосы 2 необходимо передать граничную строку узлов первого блока полосы 1). После обработки указанных блоков к вычислениям будут готовы уже 3 блока, и мы получаем знакомый уже процесс волновой обработки данных (результаты экспериментов см. в табл. 11.4).
Рис. 11.12. Организация волны вычислений при ленточной схеме разделения данных
Интересный момент при организации подобной схемы параллельных вычислений может состоять в попытке совмещения операций пересылки граничных строк и действий по обработке блоков данных.