Äîêóìåíò âçÿò èç êýøà ïîèñêîâîé ìàøèíû. Àäðåñ îðèãèíàëüíîãî äîêóìåíòà : http://fpga.parallel.ru/Colamo/Gorner.htm
Äàòà èçìåíåíèÿ: Sun May 31 14:33:27 2009
Äàòà èíäåêñèðîâàíèÿ: Mon Oct 1 19:58:47 2012
Êîäèðîâêà: koi8-r
Ðàñïàðàëëåëèâàíèå ñõåìû Ãîðíåðà

Ðàñïàðàëëåëèâàíèå ñõåìû Ãîðíåðà

Ïîñòàíîâêà çàäà÷è è ñóòü ïðîáëåìû

Êëàññè÷åñêèé ïðèìåð ðåêóðñèè â àëãîðèòìå - ñõåìà Ãîðíåðà äëÿ âû÷èñëåíèÿ ÷àñòíîãî îò äåëåíèÿ ìíîãî÷ëåíà n-é ñòåïåíè îäíîé ïåðåìåííîé Pn(x) = a0xn + a1xn-1 + ... + an-1x + a íà äâó÷ëåí x - c, ñ ïîëó÷åíèåì ìíîãî÷ëåíà n-1-é ñòåïåíè Qn-1(x) = b0xn-1 + b1xn-2 + ... + bn-2x + bn-1 è îñòàòêà îò äåëåíèÿ bn (ðàâíîãî Pn(ñ)). Ïðè ýòîì ó íàñ èñêîìûå êîýôôèöèåíòû è îñòàòîê âû÷èñëÿþòñÿ ïî ðåêóððåíòíîé ôîðìóëå: bi = c bi-1 + ai.

Êàçàëîñü áû, íàì íè÷åãî íå ïîäåëàòü ñ ïîñëåäîâàòåëüíûì õàðàêòåðîì àëãîðèòìà. Îäíàêî â òîì ñëó÷àå, åñëè íàì ìîæíî âîñïîëüçîâàòüñÿ àññîöèàòèâíîñòüþ è äèñòðèáóòèâíîñòüþ ñëîæåíèÿ è óìíîæåíèÿ, òî ìû ìîæåì ðàñïàðàëëåëèòü ñõåìó Ãîðíåðà, âîñïîëüçîâàâøèñü îáû÷íîé ñõåìîé ñäâàèâàíèÿ.

Ñõåìà ñäâàèâàíèÿ

Ïóñòü íàì íóæíî âû÷èñëèòü âñå ÷àñòè÷íûå ñóììû ýëåìåíòîâ yi îò 1 äî k, ãäå 1 ˜ k ˜ n. Îêàçûâàåòñÿ, ÷òî ýòî âîçìîæíî ñäåëàòü ïî ñõåìå ñäâàèâàíèÿ ïðèìåðíî çà log2n øàãîâ, âûïîëíÿÿ íà êàæäîì øàãå ïðèìåðíî ïî n/2 ñëîæåíèé. Ïðèâåä¸ì ïðèìåð âû÷èñëåíèÿ âñåõ ÷àñòíûõ ñóìì äëÿ n=8 çà 3 øàãà.

1-é øàã: âû÷èñëÿåì y1 + y2, y3 + y4, y5 + y6, y7 + y8.
2-é øàã: âû÷èñëÿåì (y1 + y2) + y3 , (y1 + y2) + (y3 + y4), (y5 + y6) + y7, (y5 + y6) + (y7 + y8).
3-é øàã: âû÷èñëÿåì (y1 + y2 + y3 + y4) + y5, (y1 + y2 + y3 + y4) + (y5 + y6), (y1 + y2 + y3 + y4) + (y5 + y6 + y7), (y1 + y2 + y3 + y4) + (y5 + y6 + y7 + y8)

Êàê âèäèì, âñå ÷àñòíûå ñóììû âû÷èñëåíû. Îòìå÷àåì ïðî ñåáÿ òî, ÷òî

Òåïåðü ðàññìîòðèì, êàê ïðèìåíèòü ñõåìó ñäâàèâàíèÿ ê ñõåìå Ãîðíåðà.

Ðàñïàðàëëåëèâàíèå ñõåìû Ãîðíåðà

Ïåðåïèøåì ñõåìó Ãîðíåðà â âåêòîðíîé ôîðìóëèðîâêå. Ââåä¸ì ïîñëåäîâàòåëüíîñòü âåêòîðîâ zi = ( bi, 1)T. Òîãäà ðåêóððåíòíûå ôîðìóëû ñõåìû Ãîðíåðà ïðèìóò âèä: zi = Aizi-1, ãäå Ai - òðåóãîëüíàÿ ìàòðèöà âèäà ( (c, 0)T, (ai, 1)T). Ïîñëå ïîäñòàíîâêè âñåõ ôîðìóë ìû âèäèì, ÷òî zi = AiAi-1...A1z0, òî åñòü íàì íóæíî âû÷èñëèòü âñå ÷àñòíûå ìàòðè÷íûå ïðîèçâåäåíèÿ AiAi-1...A1, ïîñëå ÷åãî óìíîæèòü èõ íà âåêòîð z0. Íî ìàòðè÷íîå óìíîæåíèå àññîöèàòèâíî, è ê âû÷èñëåíèÿì ÷àñòíûõ ïðîèçâåäåíèé ìû ìîæåì ïðèìåíèòü ñõåìó ñäâàèâàíèÿ, ïðè÷¸ì ñ óïðîùåíèÿìè - âåäü

Âû÷èñëåíèÿ âåêòîðîâ zi íà ïîñëåäíåì ýòàïå òîæå ìîæíî âûïîëíÿòü íå ïîëíîñòüþ (ïîòîìó ÷òî 1 íå íóæíî âû÷èñëÿòü), è, êðîìå ýòîãî, íåçàâèñèìî äðóã îò äðóãà. Îíè òîæå çàéìóò âñåãî ïî 1 óìíîæåíèþ è 1 ñëîæåíèþ. Ïðè äîñòàòî÷íî áîëüøîì n ñõåìîé Ãîðíåðà ìîæíî çàãðóçèòü âñ¸ èìåþùååñÿ ó íàñ îáîðóäîâàíèå ÏËÈÑ â ýôôåêòèâíîì ðåæèìå, áåç ïðîñòîåâ.