Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Распараллеливание программ. Учебник

.pdf
Скачиваний:
0
Добавлен:
07.09.2026
Размер:
1 Мб
Скачать
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
         
           
Доказательство.          
       
22


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.  
  
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]