Дипломная работа: Система автоматизации распараллеливания Отображение на SMP-кластер

!$OMP END PARALLEL

Предположим, что N = 7, M = 14, а количество нитей – 4. Принцип конвейерного выполнения отображен на рисунке.

Нить 1 Нить 2 Нить 3 Нить 4
Массив A J = 2…4 J = 5…7 J = 8…10 J = 11…13
I = 2 Такт 1 Такт 2 Такт 3 Такт 4
I = 3 Такт 2 Такт 3 Такт 4 Такт 5
I = 4 Такт 3 Такт 4 Такт 5 Такт 6
I = 5 Такт 4 Такт 5 Такт 6 Такт 7
I = 6 Такт 5 Такт 6 Такт 7 Такт 8

Рисунок 4. Иллюстрация принципа конвейерной работы

Такт 1 . Нить 1 выполняет три витка цикла: (I = 2, J = 2), (I = 2, J = 3), (I = 2, J = 4). Все остальные нити ждут. Таким образом, элементы массива A(2,2), A(2,3), A(2,4) получают новые значения.

Такт 2 . Работают 1-я и 2-я нить. Нить 1 выполняет три витка цикла: (I = 3, J = 2), (I = 3, J = 3), (I = 3, J = 4). Отметим, что A(2, 2), A(2, 3) и A(2, 4), требуемые для вычисления A(I, J) для 1-й нити в текущем такте, уже содержат новое значение. Аналогично, нить 2 выполняет три витка: (I = 2, J = 5), (I = 2, J = 6), (I = 2, J = 7). Элемент A(2, 4), требуемый для вычисления A(2, 5), был уже посчитан 1-й нитью в 1-м такте.

Такт 3 . Работают 1-я, 2-я и 3-я нить. Каждая нить выполняет по три витка. Для каждого элемента A(I, J), обрабатываемого в текущем такте, элементы A(I-1, J) и A(I, J-1) уже содержат новое значение.

Такт 4, 5, 6, 7, 8 – аналогично.

Таким образом, порядок вычисления витков при параллельной работе нитей сохраняется.

В работе конвейера можно отметить три этапа:

· Разгон конвейера (Такты 1,2,3).

· Работа с полной загрузкой (Такты 4,5).

· Остановка конвейера (Такты 6,7,8).

Пример 5

CDVM$ PARALLEL (i,j,k) ON a(i,j,k),

*DVM$* ACROSS (a(0:0,1:1,0:0))

do i=1,N-1

do j=1,M

do k=1,P

A( I, J, K ) = (A( I, J, K ) + A( I, J, K ) +

* A( I, J-1, K ) + A( I, J+1, K ))

enddo

enddo

enddo

Здесь регулярная зависимость присутствует только по второму измерению массива A. Соответственно, внешний или внутренний цикл можно распараллелить с помощью OMP PARALLEL DO, а для среднего можно организовать конвейер.

Вариант 5.1

CDVM$ PARALLEL (i,j,k) ON a(i,j,k),

*DVM$* ACROSS (a(0:0,1:1,0:0))

!$OMP PARALLEL PRIVATE(j, i, k)

!$OMP DO SCHEDULE (STATIC)

К-во Просмотров: 318
Бесплатно скачать Дипломная работа: Система автоматизации распараллеливания Отображение на SMP-кластер