Автор: Пользователь скрыл имя, 22 Ноября 2011 в 14:45, реферат
Помимо общих слов о том, что ряд библиотек пакетов, предназначенных для параллельной реализации, содержит специальные подпрограммы суммирования, остановимся на двух примерах реализаций: под средой MPI, предназначенной для кластерной архитектуры, и на языке Colamo (для ПЛИСов). Упомянем только, что суммирование не очень хорошо ложится на конвейерную архитектуру, на которой, пожалуй, самой быстрой будет векторная реализация иерархически-последовательных схем.
Реализация суммирования
на некоторых параллельных вычислительных
системах
Помимо общих
слов о том, что ряд библиотек
пакетов, предназначенных для
параллельной реализации, содержит
специальные подпрограммы
Реализация под средой MPI
Программирующие
в среде обмена сообщениями
MPI, конечно, могут использовать
вышеприведённые схемы
Но главное
- то, что даже в отношении
Реализация на
ПЛИСах
При реализации на языке Коламо для ПЛИСов важен такой вопрос, как планирование ресурсов, которые будут отведены на реализацию задачи. В качестве примера приведём программу, реализующую пирамидально-конвейерную схему с использованием 16 сумматоров:
Program Piramida_Summatorov;
include MyLibNewElement;
VAR a : array real [16:vector, 100:stream] mem;
VAR res : real mem;
VAR i, j, k, l, m, n, s, kk, vect, vectd2 : number;
VAR cm1, cm2, cm3, cm4, cm5, cm6 : real com;
VAR c : array real [8:vector, 8:vector] com;
VAR rg : real reg;
Define vect=16;
Define vectd2=7;//vect/2-1
Define n=100;
Define m=3;
Define k=0;
Define kk=0;
Define l=8;//vect/2
Cadr ev;
for s:=0 to n-1 do
begin
for i:=0 to vectd2 do
begin
c[0,i]:=a[k,s]+a[k+1,s];
k:=k+2;
end;
for j:=1 to m do
begin
kk:=0;
l:=l/2;
for i:=0 to l-1 do
begin
c[j,i]:=c[j-1,kk]+c[j-1,kk+1];
kk:=kk+2;
end;
end;
rg:=rg+c[m,vectd2];
end;
res:=rg;
EndCadr;
End_Program.
Эта программа реализует каскадно-пирамидальную схему с использованием конвейеризации.