Introduction to Algorithms, Third Edition



Download 4,84 Mb.
Pdf ko'rish
bet526/618
Sana07.04.2022
Hajmi4,84 Mb.
#534272
1   ...   522   523   524   525   526   527   528   529   ...   618
Bog'liq
Introduction-to-algorithms-3rd-edition

for
k
D
1
to
n
7
c
ij
D
c
ij
C
a
i k
b
kj
8
return
C
To analyze this algorithm, observe that since the serialization of the algorithm is
just S
QUARE
-M
ATRIX
-M
ULTIPLY
, the work is therefore simply
T
1
.n/
D
‚.n
3
/
,
the same as the running time of S
QUARE
-M
ATRIX
-M
ULTIPLY
.
The span is
T
1
.n/
D
‚.n/
, because it follows a path down the tree of recursion for the
parallel for
loop starting in line 3, then down the tree of recursion for the
parallel
for
loop starting in line 4, and then executes all
n
iterations of the ordinary
for
loop
starting in line 6, resulting in a total span of
‚.
lg
n/
C
‚.
lg
n/
C
‚.n/
D
‚.n/
.
Thus, the parallelism is
‚.n
3
/=‚.n/
D
‚.n
2
/
. Exercise 27.2-3 asks you to par-
allelize the inner loop to obtain a parallelism of
‚.n
3
=
lg
n/
, which you cannot do
straightforwardly using
parallel for
, because you would create races.
A divide-and-conquer multithreaded algorithm for matrix multiplication
As we learned in Section 4.2, we can multiply
n
n
matrices serially in time
‚.n
lg
7
/
D
O.n
2:81
/
using Strassen’s divide-and-conquer strategy, which motivates
us to look at multithreading such an algorithm. We begin, as we did in Section 4.2,
with multithreading a simpler divide-and-conquer algorithm.
Recall from page 77 that the S
QUARE
-M
ATRIX
-M
ULTIPLY
-R
ECURSIVE
proce-
dure, which multiplies two
n
n
matrices
A
and
B
to produce the
n
n
matrix
C
,
relies on partitioning each of the three matrices into four
n=2
n=2
submatrices:
A
D
Â
A
11
A
12
A
21
A
22
Ã
;
B
D
Â
B
11
B
12
B
21
B
22
Ã
;
C
D
Â
C
11
C
12
C
21
C
22
Ã
:
Then, we can write the matrix product as
Â
C
11
C
12
C
21
C
22
Ã
D
Â
A
11
A
12
A
21
A
22
ÃÂ
B
11
B
12
B
21
B
22
Ã
D
Â
A
11
B
11
A
11
B
12
A
21
B
11
A
21
B
12
Ã
C
Â
A
12
B
21
A
12
B
22
A
22
B
21
A
22
B
22
Ã
:
(27.6)
Thus, to multiply two
n
n
matrices, we perform eight multiplications of
n=2
n=2
matrices and one addition of
n
n
matrices. The following pseudocode implements


794
Chapter 27
Multithreaded Algorithms
this divide-and-conquer strategy using nested parallelism. Unlike the S
QUARE
-
M
ATRIX
-M
ULTIPLY
-R
ECURSIVE
procedure on which it is based, P-M
ATRIX
-
M
ULTIPLY
-R
ECURSIVE
takes the output matrix as a parameter to avoid allocating
matrices unnecessarily.
P-M
ATRIX
-M
ULTIPLY
-R
ECURSIVE
.C; A; B/
1
n
D
A:
rows
2
if
n
==
1
3
c
11
D
a
11
b
11
4
else
let
T
be a new
n
n
matrix
5
partition
A
,
B
,
C
, and
T
into
n=2
n=2
submatrices
A
11
; A
12
; A
21
; A
22
;
B
11
; B
12
; B
21
; B
22
;
C
11
; C
12
; C
21
; C
22
;
and
T
11
; T
12
; T
21
; T
22
; respectively
6
spawn
P-M
ATRIX
-M
ULTIPLY
-R
ECURSIVE
.C
11
; A
11
; B
11
/
7
spawn
P-M
ATRIX
-M
ULTIPLY
-R
ECURSIVE
.C
12
; A
11
; B
12
/
8
spawn
P-M
ATRIX
-M
ULTIPLY
-R
ECURSIVE
.C
21
; A
21
; B
11
/
9
spawn
P-M
ATRIX
-M
ULTIPLY
-R
ECURSIVE
.C
22
; A
21
; B
12
/
10
spawn
P-M
ATRIX
-M
ULTIPLY
-R
ECURSIVE
.T
11
; A
12
; B
21
/
11
spawn
P-M
ATRIX
-M
ULTIPLY
-R
ECURSIVE
.T
12
; A
12
; B
22
/
12
spawn
P-M
ATRIX
-M
ULTIPLY
-R
ECURSIVE
.T
21
; A
22
; B
21
/
13
P-M
ATRIX
-M
ULTIPLY
-R
ECURSIVE
.T
22
; A
22
; B
22
/
14
sync
15
parallel for
i
D
1
to
n
16
parallel for
j
D
1
to
n
17
c
ij
D
c
ij
C
t
ij
Line 3 handles the base case, where we are multiplying
1
1
matrices. We handle
the recursive case in lines 4–17. We allocate a temporary matrix
T
in line 4, and
line 5 partitions each of the matrices
A
,
B
,
C
, and
T
into
n=2
n=2
submatrices.
(As with S
QUARE
-M
ATRIX
-M
ULTIPLY
-R
ECURSIVE
on page 77, we gloss over
the minor issue of how to use index calculations to represent submatrix sections
of a matrix.) The recursive call in line 6 sets the submatrix
C
11
to the submatrix
product
A
11
B
11
, so that
C
11
equals the first of the two terms that form its sum in
equation (27.6). Similarly, lines 7–9 set
C
12
,
C
21
, and
C
22
to the first of the two
terms that equal their sums in equation (27.6). Line 10 sets the submatrix
T
11
to
the submatrix product
A
12
B
21
, so that
T
11
equals the second of the two terms that
form
C
11
’s sum. Lines 11–13 set
T
12
,
T
21
, and
T
22
to the second of the two terms
that form the sums of
C
12
,
C
21
, and
C
22
, respectively. The first seven recursive
calls are spawned, and the last one runs in the main strand. The
sync
statement in
line 14 ensures that all the submatrix products in lines 6–13 have been computed,


27.2
Multithreaded matrix multiplication
795
after which we add the products from
T
into
C
in using the doubly nested
parallel
for
loops in lines 15–17.
We first analyze the work
M
1
.n/
of the P-M
ATRIX
-M
ULTIPLY
-R
ECURSIVE
procedure, echoing the serial running-time analysis of its progenitor S
QUARE
-
M
ATRIX
-M
ULTIPLY
-R
ECURSIVE
. In the recursive case, we partition in
‚.1/
time,
perform eight recursive multiplications of
n=2
n=2
matrices, and finish up with
the
‚.n
2
/
work from adding two
n
n
matrices. Thus, the recurrence for the
work
M
1
.n/
is
M
1
.n/
D
8M
1
.n=2/
C
‚.n
2
/
D
‚.n
3
/
by case 1 of the master theorem. In other words, the work of our multithreaded al-
gorithm is asymptotically the same as the running time of the procedure S
QUARE
-
M
ATRIX
-M
ULTIPLY
in Section 4.2, with its triply nested loops.
To determine the span
M
1
.n/
of P-M
ATRIX
-M
ULTIPLY
-R
ECURSIVE
, we first
observe that the span for partitioning is
‚.1/
, which is dominated by the
‚.
lg
n/
span of the doubly nested
parallel for
loops in lines 15–17. Because the eight
parallel recursive calls all execute on matrices of the same size, the maximum span
for any recursive call is just the span of any one. Hence, the recurrence for the
span
M
1
.n/
of P-M
ATRIX
-M
ULTIPLY
-R
ECURSIVE
is
M
1
.n/
D
M
1
.n=2/
C
‚.
lg
n/ :
(27.7)
This recurrence does not fall under any of the cases of the master theorem, but
it does meet the condition of Exercise 4.6-2. By Exercise 4.6-2, therefore, the
solution to recurrence (27.7) is
M
1
.n/
D
‚.
lg
2
n/
.
Now that we know the work and span of P-M
ATRIX
-M
ULTIPLY
-R
ECURSIVE
,
we can compute its parallelism as
M
1
.n/=M
1
.n/
D
‚.n
3
=
lg
2
n/
, which is very
high.
Multithreading Strassen’s method
To multithread Strassen’s algorithm, we follow the same general outline as on
page 79, only using nested parallelism:
1. Divide the input matrices
A
and
B
and output matrix
C
into
n=2
n=2
sub-
matrices, as in equation (27.6). This step takes
‚.1/
work and span by index
calculation.
2. Create
10
matrices
S
1
; S
2
; : : : ; S
10
, each of which is
n=2
n=2
and is the sum
or difference of two matrices created in step 1. We can create all
10
matrices
with
‚.n
2
/
work and
‚.
lg
n/
span by using doubly nested
parallel for
loops.


796
Chapter 27
Multithreaded Algorithms
3. Using the submatrices created in step 1 and the
10
matrices created in
step 2, recursively spawn the computation of seven
n=2
n=2
matrix products
P
1
; P
2
; : : : ; P
7
.
4. Compute the desired submatrices
C
11
; C
12
; C
21
; C
22
of the result matrix
C
by
adding and subtracting various combinations of the
P
i
matrices, once again
using doubly nested
parallel for
loops. We can compute all four submatrices
with
‚.n
2
/
work and
‚.
lg
n/
span.
To analyze this algorithm, we first observe that since the serialization is the
same as the original serial algorithm, the work is just the running time of the
serialization, namely,
‚.n
lg
7
/
. As for P-M
ATRIX
-M
ULTIPLY
-R
ECURSIVE
, we
can devise a recurrence for the span. In this case, seven recursive calls exe-
cute in parallel, but since they all operate on matrices of the same size, we ob-
tain the same recurrence (27.7) as we did for P-M
ATRIX
-M
ULTIPLY
-R
ECURSIVE
,
which has solution
‚.
lg
2
n/
. Thus, the parallelism of multithreaded Strassen’s
method is
‚.n
lg
7
=
lg
2
n/
, which is high, though slightly less than the parallelism
of P-M
ATRIX
-M
ULTIPLY
-R
ECURSIVE
.

Download 4,84 Mb.

Do'stlaringiz bilan baham:
1   ...   522   523   524   525   526   527   528   529   ...   618




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish