Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Распараллеливание программ. Учебник
.pdf
71
DO 99 I1=1, N
DO 99 I2=1, M (12)
LOOPBODY (I1,I2)
99 CONTINUE
DO 99 I2=1, M
DO 99 I1=1, N (13)
LOOPBODY (I1,I2)
99 CONTINUE
Доказательство.
22

72
Доказательство.
LOOPBODY(1,1)
LOOPBODY(1,2)
…
LOOPBODY(1,M)
LOOPBODY(2,1)
LOOPBODY(2,2)
…
LOOPBODY(2,M)
…
LOOPBODY(N,1)
LOOPBODY(N,2)
…
LOOPBODY(N,M)
После раскрутки второго гнезда циклов получится следующая
последовательность копий тела цикла
LOOPBODY(1,1)
LOOPBODY(2,1)
…
LOOPBODY(N,1)
LOOPBODY(1,2)
LOOPBODY(2,2)
…
LOOPBODY(N,2)
…
LOOPBODY(1,M)
LOOPBODY(2,M)
…
LOOPBODY(N,M)
РАСПАРАЛЛЕЛИВАНИЕ

73
Опровержение
2
Задача. Предположим, что некоторая задача решается алгоритмом
сложности 2
ется 2
n
n
, то есть, при количестве данных на входе n алгоритму требу-
операций для решения задачи на однопроцессорном компьютере (существует много сотен таких практически значимых алгоритмов для решения NP-полных задач). Для n=100 однопроцессорный компьютер работает
1 час. Для какого значения n сможет решить задачу за 1 час двухпроцессорный
компьютер? (Ответ: n = 101).
Опровержение.
For I = 1 to N do

74
X[i] = 2*X[i+1]
2
Опровержение.
{
X = 1;
Y = X;
X = 2;
}
2
Время
в тактах
1 X = 1 X = 1
2 Y = X
3 X = 2
4 Y = X
5 X = 2
Номер процесса
1 2

75
Рис. 3. Отображение свойств циклов и функций в ОРС. Правое информационное окно
сообщает о векторизуемости самого вложенного цикла. Нижнее информационное
окно говорит о возможности независимого выполнения итераций второго цикла сверху.
Синяя метка возле описания функции min() говорит о том, что эта функция не имеет
побочных эффектов, которые могли бы препятствовать распараллеливанию циклов,
содержащих вызов этой функции

76
DO 99 I=L,N,h
99 ТЕЛОЦИКЛА(I)
DO ALL 99 I=L,N,h
99 ТЕЛОЦИКЛА(I)

77
Пример 81.
DO 111 I = 1, N
A(I) = B(I)+C(I)
D(I) = A(I+1)/2.
111 CONTINUE
DO ALL 111 I = 1, N
A(I) = B(I)+C(I)
D(I) = A(I+1)/2.
111 CONTINUE
Конец примера.
Доказательство

78
Пример 82.
DO 111 I = 1, N
X(I) = A(I)*X(I-1)+B(I)
111 CONTINUE
Конец примера.
Пример 83.
DO 111 I = 1, N
X(I) = A(I)*Y(I-1)+B(I)
Y(I) = D(I)/X(I+1)
111 CONTINUE
Конец примера.
Пример 84.
DO 111 I = 1, N
X = A(I)*Y(I)+B(I)
Y(I) = D(I)/X
111 CONTINUE
DO 111 I = 1, N
XX(I) = A(I)*Y(I)+B(I)
Y(I) = D(I)/XX(I)
111 CONTINUE
X = XX(N)
Конец примера.
Пример 85.
DO 111 I = 1, N
X(I) = A(I)*Y(I+1)+B(I)
Y(I) = D(I)/X(I+1)
111 CONTINUE

79
DO 111 I = 1, N
TEMP(I) = X(I+1)
X(I) = A(I)*Y(I+1)+B(I)
Y(I) = D(I)/TEMP(I)
111 CONTINUE
Конец примера.
Пример 86.
for(i=1; i <= N; ++i)
{
a = a+b[i]*c[i]
}
If eps < 0 then
for(j=1; j <= M; ++j)
{
x = x+e[j]*d[j];
}
else
x = a

80
for(i=1; i <= N; ++i)
{
a = a+b[i]*c[i]
}
for(j=1; j <= M; ++j)
{
x = x+e[j]*d[j];
}
If eps < 0 then
{
}
else
x = a
Конец примера.
for(j1=1; j1 <= M1; ++j1)
for(j2=1; j2 <= M2; ++j2)
…
for(jn=1; jn <= Mn; ++jn)
{
B1(j1,j2,…,jn)
B2(j1,j2,…,jn)
}
jn
Доказательство.
jn.
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
