Upload
stewart-henderson
View
225
Download
0
Embed Size (px)
Citation preview
7/26/2019 A Sparse Matrix Library in C++ for High Performance Architectures
1/5
A S p a r s e M a t r i x L i b r a r y i n C + + f o r H i g h P e r f o r m a n c e
A r c h i t e c t u r e s
J a c k D o n g a r r a
x z
, A n d r e w L u m s d a i n e
, X i n h i u N i u
R o l d a n P o z o
z
, K a r i n R e m i n g t o n
x
x
O a k R i d g e N a t i o n a l L a b o r a t o r y
z
U n i v e r s i t y o f T e n n e s s e e
U n i v e r s i t y o f N o t r e D a m e
M a t h e m a t i c a l S c i e n c e s S e c t i o n D e p t . o f C o m p u t e r S c i e n c e D e p t . o f C o m p u t e r S c i e n c e & E n g i n e e r i n g
A b s t r a c t
W e d e s c r i b e a n o b j e c t o r i e n t e d s p a r s e m a t r i x l i b r a r y
i n C + + b u i l t u p o n t h e L e v e l 3 S p a r s e B L A S p r o p o s a l
5 f o r p o r t a b i l i t y a n d p e r f o r m a n c e a c r o s s a w i d e c l a s s
o f m a c h i n e a r c h i t e c t u r e s . T h e C + + l i b r a r y i n c l u d e s
a l g o r i t h m s f o r v a r i o u s i t e r a t i v e m e t h o d s a n d s u p p o r t s
t h e m o s t c o m m o n s p a r s e d a t a s t o r a g e f o r m a t s u s e d
i n p r a c t i c e . B e s i d e s s i m p l i f y i n g t h e s u b r o u t i n e i n t e r -
f a c e , t h e o b j e c t o r i e n t e d d e s i g n a l l o w s t h e s a m e d r i v -
i n g c o d e t o b e u s e d f o r v a r i o u s s p a r s e m a t r i x f o r m a t s ,
t h u s a d d r e s s i n g m a n y o f t h e d i c u l t i e s e n c o u n t e r e d
w i t h t h e t y p i c a l a p p r o a c h t o s p a r s e m a t r i x l i b r a r i e s .
W e e m p h a s i z e t h e f u n d a m e n t a l d e s i g n i s s u e s o f t h e
C + + s p a r s e m a t r i x c l a s s e s a n d i l l u s t r a t e t h e i r u s a g e
w i t h t h e p r e c o n d i t i o n e d c o n j u g a t e g r a d i e n t P C G
m e t h o d a s a n e x a m p l e . P e r f o r m a n c e r e s u l t s i l l u s t r a t e
t h a t t h e s e c o d e s a r e c o m p e t i t i v e w i t h o p t i m i z e d F o r -
t r a n 7 7 . W e d i s c u s s t h e i m p a c t o f o u r d e s i g n o n e l e -
g a n c e , p e r f o r m a n c e , m a i n t a i n a b i l i t y , p o r t a b i l i t y , a n d
r o b u s t n e s s .
1 I n t r o d u c t i o n
S p a r s e m a t r i c e s a r e p e r v a s i v e i n a p p l i c a t i o n c o d e s
w h i c h u s e n i t e d i e r e n c e , n i t e e l e m e n t o r n i t e v o l -
u m e d i s c r e t i z a t i o n s o f P D E s f o r p r o b l e m s i n c o m p u -
t a t i o n a l u i d d y n a m i c s , s t r u c t u r a l m e c h a n i c s , s e m i -
c o n d u c t o r s i m u l a t i o n a n d o t h e r s c i e n t i c a n d e n g i -
T h i s p r o j e c t w a s s u p p o r t e d i n p a r t b y t h e D e f e n s e A d -
v a n c e d R e s e a r c h P r o j e c t s A g e n c y u n d e r c o n t r a c t D A A L 0 3 - 9 1 -
C - 0 0 4 7 , a d m i n i s t e r e d b y t h e A r m y R e s e a r c h O c e , t h e A p -
p l i e d M a t h e m a t i c a l S c i e n c e s s u b p r o g r a m o f t h e O c e o f E n -
e r g y R e s e a r c h , U . S . D e p a r t m e n t o f E n e r g y , u n d e r C o n t r a c t
D E - A C 0 5 - 8 4 O R 2 1 4 0 0 , a n d b y t h e N a t i o n a l S c i e n c e F o u n d a -
t i o n S c i e n c e a n d T e c h n o l o g y C e n t e r C o o p e r a t i v e A g r e e m e n t
N o . C C R - 8 8 0 9 6 1 5 , a n d N S F g r a n t N o . C C R - 9 2 0 9 8 1 5 .
n e e r i n g a p p l i c a t i o n s . N e v e r t h e l e s s , c o m p r e h e n s i v e l i -
b r a r i e s f o r s p a r s e m a t r i x c o m p u t a t i o n s h a v e n o t b e e n
d e v e l o p e d a n d i n t e g r a t e d t o t h e s a m e d e g r e e a s t h o s e
f o r d e n s e m a t r i c e s . S e v e r a l f a c t o r s c o n t r i b u t e t o t h e
d i c u l t y o f d e s i g n i n g s u c h a c o m p r e h e n s i v e l i b r a r y .
D i e r e n t c o m p u t e r a r c h i t e c t u r e s , a s w e l l a s d i e r e n t
a p p l i c a t i o n s , c a l l f o r d i e r e n t s p a r s e m a t r i x d a t a f o r -
m a t s i n o r d e r t o b e s t e x p l o i t r e g i s t e r s , d a t a l o c a l -
i t y , p i p e l i n i n g , a n d p a r a l l e l p r o c e s s i n g . F u r t h e r m o r e ,
c o d e i n v o l v i n g s p a r s e m a t r i c e s t e n d s t o b e v e r y c o m -
p l i c a t e d , a n d n o t e a s i l y p o r t a b l e , b e c a u s e t h e d e t a i l s
o f t h e u n d e r l y i n g d a t a f o r m a t s a r e i n v a r i a b l y e n t a n -
g l e d w i t h i n t h e a p p l i c a t i o n c o d e .
T o a d d r e s s t h e s e d i c u l t i e s , i t i s e s s e n t i a l t o d e -
v e l o p c o d e s w h i c h a r e a s d a t a f o r m a t f r e e " a s p o s -
s i b l e , t h u s p r o v i d i n g t h e g r e a t e s t e x i b i l i t y f o r u s i n g
t h e g i v e n a l g o r i t h m l i b r a r y r o u t i n e i n v a r i o u s a r -
c h i t e c t u r e a p p l i c a t i o n c o m b i n a t i o n s . I n f a c t , t h e s e -
l e c t i o n o f a n a p p r o p r i a t e d a t a s t r u c t u r e c a n t y p i c a l l y
b e d e f e r r e d u n t i l l i n k o r r u n t i m e . W e d e s c r i b e a n
o b j e c t o r i e n t e d C + + l i b r a r y f o r s p a r s e m a t r i x c o m -
p u t a t i o n s w h i c h p r o v i d e s a u n i e d i n t e r f a c e f o r v a r -
i o u s i t e r a t i v e s o l u t i o n t e c h n i q u e s a c r o s s a v a r i e t y o f
s p a r s e d a t a f o r m a t s .
T h e d e s i g n o f t h e l i b r a r y i s b a s e d o n t h e f o l l o w i n g
p r i n c i p l e s :
C l a r i t y : I m p l e m e n t a t i o n s o f n u m e r i c a l a l g o r i t h m s
s h o u l d r e s e m b l e t h e m a t h e m a t i c a l a l g o r i t h m s o n
w h i c h t h e y a r e b a s e d . T h i s i s i n c o n t r a s t t o F o r -
t r a n 7 7 , w h i c h c a n r e q u i r e c o m p l i c a t e d s u b r o u -
t i n e c a l l s , o f t e n w i t h p a r a m e t e r l i s t s t h a t s t r e t c h
o v e r s e v e r a l l i n e s .
R e u s e : A p a r t i c u l a r a l g o r i t h m s h o u l d o n l y n e e d t o
b e c o d e d o n c e , w i t h i d e n t i c a l c o d e u s e d f o r a l l
m a t r i x r e p r e s e n t a t i o n s .
1
7/26/2019 A Sparse Matrix Library in C++ for High Performance Architectures
2/5
P o r t a b i l i t y : I m p l e m e n t a t i o n s o f n u m e r i c a l a l g o -
r i t h m s s h o u l d b e d i r e c t l y p o r t a b l e a c r o s s m a -
c h i n e p l a t f o r m s .
H i g h P e r f o r m a n c e : T h e o b j e c t o r i e n t e d l i b r a r y
c o d e s h o u l d p e r f o r m a s w e l l a s o p t i m i z e d d a t a -
f o r m a t - s p e c i c c o d e w r i t t e n i n C o r F o r t r a n .
T o a c h i e v e t h e s e g o a l s t h e s p a r s e m a t r i x l i b r a r y
h a s t o b e m o r e t h a n j u s t a n u n r e l a t e d c o l l e c t i o n o f
m a t r i x o b j e c t s . A d h e r i n g t o t r u e o b j e c t o r i e n t e d d e -
s i g n p h i l o s o p h i e s , i n h e r i t a n c e a n d p o l y m o r p h i s m a r e
u s e d t o b u i l d a m a t r i x h i e r a r c h y i n w h i c h t h e s a m e
c o d e s c a n b e u s e d f o r v a r i o u s d e n s e a n d s p a r s e l i n e a r
a l g e b r a c o m p u t a t i o n s a c r o s s s e q u e n t i a l a n d p a r a l l e l
a r c h i t e c t u r e s .
2 I t e r a t i v e S o l v e r s
T h e l i b r a r y p r o v i d e s a l g o r i t h m s f o r v a r i o u s i t e r a t i v e
m e t h o d s a s d e s c r i b e d i n B a r r e t t e t . a l . 1 , t o g e t h e r
w i t h t h e i r p r e c o n d i t i o n e d c o u n t e r p a r t s :
J a c o b i S O R S O R
C o n j u g a t e G r a d i e n t C G
C o n j u g a t e G r a d i e n t o n N o r m a l E q u a t i o n s
C G N E , C G N R
G e n e r a l i z e d M i n i m a l R e s i d u a l G M R E S
M i n i m u m R e s i d u a l M I N R E S
Q u a s i - M i n i m a l R e s i d u a l Q M R
C h e b y s h e v I t e r a t i o n C h e b
C o n j u g a t e G r a d i e n t S q u a r e d C G S
B i c o n j u g a t e G r a d i e n t B i C G
B i c o n j u g a t e G r a d i e n t S t a b i l i z e d B i - C G S T A B
A l t h o u g h i t e r a t i v e m e t h o d s h a v e p r o v i d e d m u c h o f
t h e m o t i v a t i o n f o r t h i s l i b r a r y , m a n y o f t h e s a m e o p -
e r a t i o n s a n d d e s i g n i s s u e s a r e a d d r e s s e d f o r d i r e c t
m e t h o d s a s w e l l . I n p a r t i c u l a r , s o m e o f t h e m o s t
p o p u l a r p r e c o n d i t i o n e r s , s u c h a s I n c o m p l e t e L U F a c -
t o r i z a t i o n I L U 1 h a v e c o m p o n e n t s q u i t e s i m i l a r t o
d i r e c t m e t h o d s .
O n e m o t i v a t i o n f o r t h i s w o r k i s t h a t t h e h i g h l e v e l
a l g o r i t h m s f o u n d i n 1 c a n b e e a s i l y i m p l e m e n t e d i n
C + + . F o r e x a m p l e , t a k e a p r e c o n d i t i o n e d c o n j u g a t e
g r a d i e n t a l g o r i t h m , u s e d t o s o l v e A x = b , w i t h p r e -
c o n d i t i o n e r M . T h e c o m p a r i s o n b e t w e e n t h e p s e u d o -
c o d e a n d t h e C + + l i s t i n g a p p e a r s i n g u r e 1 .
H e r e t h e o p e r a t o r s s u c h a s * a n d + = h a v e b e e n
o v e r l o a d e d t o w o r k w i t h m a t r i x a n d v e c t o r s f o r m a t s .
T h i s c o d e f r a g m e n t w o r k s f o r a l l o f t h e s u p p o r t e d
s p a r s e s t o r a g e c l a s s e s a n d m a k e s u s e o f t h e L e v e l 3
S p a r s e B L A S i n t h e m a t r i x - v e c t o r m u l t i p l y A * p
3 S p a r s e M a t r i x t y p e s
W e h a v e c o n c e n t r a t e d o n t h e m o s t c o m m o n l y u s e d
d a t a s t r u c t u r e s w h i c h a c c o u n t f o r a l a r g e p o r t i o n o f
a p p l i c a t i o n c o d e s . T h e l i b r a r y c a n b e a r b i t r a r i l y e x -
t e n d e d t o u s e r - s p e c i c s t r u c t u r e s a n d w i l l e v e n t u a l l y
g r o w . W e h o p e t o i n c o r p o r a t e u s e r - c o n t r i b u t e d e x -
t e n s i o n s i n f u t u r e v e r s i o n s o f t h e s o f t w a r e . M a t r i x
c l a s s e s s u p p o r t e d i n t h e i n i t i a l v e r s i o n o f t h e l i b r a r y
i n c l u d e
S p a r s e V e c t o r : L i s t o f n o n z e r o e l e m e n t s w i t h t h e i r
i n d e x l o c a t i o n s . I t a s s u m e s n o p a r t i c u l a r o r d e r -
i n g o f e l e m e n t s .
C O O R M a t r i x : C o o r d i n a t e S t o r a g e M a t r i x . L i s t o f
n o n z e r o e l e m e n t s w i t h t h e i r r e s p e c t i v e r o w a n d
c o l u m n i n d i c e s . T h i s i s t h e m o s t g e n e r a l s p a r s e
m a t r i x f o r m a t , b u t i t i s n o t v e r y s p a c e o r c o m -
p u t a t i o n a l l y e c i e n t . I t a s s u m e s n o o r d e r i n g o f
n o n z e r o m a t r i x v a l u e s .
C R S M a t r i x : C o m p r e s s e d R o w S t o r a g e M a t r i x .
S u b s e q u e n t n o n z e r o s o f t h e m a t r i x r o w s a r e
s t o r e d i n c o n t i g u o u s m e m o r y l o c a t i o n s a n d a n
a d d i t i o n a l i n t e g e r a r r a y s s p e c i e s w h e r e e a c h r o w
b e g i n s . I t a s s u m e s n o o r d e r i n g a m o n g n o n z e r o
v a l u e s w i t h i n e a c h r o w , b u t r o w s a r e s t o r e d i n
c o n s e c u t i v e o r d e r .
C C S M a t r i x : C o m p r e s s e d C o l u m n S t o r a g e a l s o c o m -
m o n l y k n o w n a s t h e H a r w e l l - B o e i n g s p a r s e m a -
t r i x f o r m a t 4 . T h i s i s a v a r i a n t o f C R S s t o r a g e
w h e r e c o l u m n s , r a t h e r r o w s , a r e s t o r e d c o n t i g u -
o u s l y . N o t e t h a t t h e C C S o r d e r i n g o f A i s t h e
s a m e a s t h e C R S o f A
T
C D S M a t r i x : C o m p r e s s e d D i a g o n a l S t o r a g e . D e -
s i g n e d p r i m a r i l y f o r m a t r i c e s w i t h r e l a t i v e l y c o n -
s t a n t b a n d w i d t h , t h e s u b a n d s u p e r - d i a g o n a l s
a r e s t o r e d i n c o n t i g u o u s m e m o r y l o c a t i o n s .
J D S M a t r i x : J a g g e d D i a g o n a l S t o r a g e . A l s o k n o w a s
I T P A C K s t o r a g e . M o r e s p a c e e c i e n t t h a n C D S
2
7/26/2019 A Sparse Matrix Library in C++ for High Performance Architectures
3/5
I n i t i a l r
0
= b , A x
0
f o r i = 1 2 ; : : :
s o l v e M z
i 1
= r
i 1
i 1
= r
i 1
T
z
i 1
i f i = 1
p
1
= z
0
e l s e
i 1
=
i 1
=
i 2
p
i
= z
i 1
+
i 1
p
i 1
e n d i f
q
i
= A p
i
i
=
i 1
= p
i
T
q
i
x
i
= x
i 1
+
i
p
i
r
i
= r
i 1
,
i
q
i
c h e c k c o n v e r g e n c e ;
e n d
r = b - A x ;
f o r i n t i = 1 ; i m a x i t e r ; i + + f
z = M . s o l v e r ;
r h o = r * z ;
i f i = = 1
p = z ;
e l s e f
b e t a = r h o 1 r h o 0 ;
p = z + p * b e t a ;
g
q = A * p ;
a l p h a = r h o 1 p * q ;
x + = a l p h a * p ;
r - = a l p h a * q ;
i f n o r m r n o r m b t o l b r e a k ;
g
F i g u r e 1 : P s u e d o c o d e a n d C + + c o m p a r i s o n o f a p r e c o n d i t i o n e d c o n j u g a t e g r a d i e n t m e t h o d i n I M L + +
p a c k a g e
m a t r i c e s a t t h e c o s t o f a g a t h e r s c a t t e r o p e r a -
t i o n .
B C R S M a t r i x : B l o c k C o m p r e s s e d R o w S t o r a g e . U s e -
f u l w h e n t h e s p a r s e m a t r i x i s c o m p r i s e d o f s q u a r e
d e n s e b l o c k s o f n o n z e r o s i n s o m e r e g u l a r p a t t e r n .
T h e s a v i n g s i n s t o r a g e a n d r e d u c e d i n d i r e c t a d -
d r e s s i n g o v e r C R S c a n b e s i g n i c a n t f o r m a t r i c e s
w i t h l a r g e b l o c k s i z e s .
S K S M a t r i x : S k y l i n e S t o r a g e . A l s o f o r v a r i a b l e b a n d
o r p r o l e m a t r i c e s . M a i n l y u s e d i n d i r e c t s o l v e r s ,
b u t c a n a l s o b e u s e d f o r h a n d l i n g t h e d i a g o n a l
b l o c k s i n b l o c k m a t r i x f a c t o r i z a t i o n s .
I n a d d i t i o n , s y m m e t r i c a n d H e r m i t i a n v e r s i o n s o f
m o s t o f t h e s e s p a r s e f o r m a t s w i l l a l s o b e s u p p o r t e d .
I n s u c h c a s e s o n l y a n u p p e r o r l o w e r t r i a n g u l a r p o r -
t i o n o f t h e m a t r i x i s s t o r e d . T h e t r a d e - o i s a m o r e
c o m p l i c a t e d a l g o r i t h m w i t h a s o m e w h a t d i e r e n t p a t -
t e r n o f d a t a a c c e s s . F u r t h e r d e t a i l s o f e a c h d a t a s t o r -
a g e f o r m a t a r e g i v e n i n 1 a n d 6 .
O u r l i b r a r y c o n t a i n s t h e c o m m o n c o m p u t a t i o n a l
k e r n e l s r e q u i r e d f o r s o l v i n g l i n e a r s y s t e m s b y m a n y
d i r e c t a n d i t e r a t i v e m e t h o d s . T h e i n t e r n a l d a t a s t r u c -
t u r e s o f t h e s e k e r n e l s a r e c o m p a t i b l e w i t h t h e p r o -
p o s e d L e v e l 3 S p a r s e B L A S , t h u s p r o v i d i n g t h e u s e r
w i t h l a r g e s o f t w a r e b a s e o f F o r t r a n 7 7 m o d u l e a n d
a p p l i c a t i o n l i b r a r i e s . J u s t a s t h e d e n s e L e v e l 3 B L A S
3 h a v e a l l o w e d f o r h i g h e r p e r f o r m a n c e k e r n e l s o n
h i e r a r c h i c a l m e m o r y a r c h i t e c t u r e s , t h e S p a r s e B L A S
a l l o w v e n d o r s t o p r o v i d e o p t i m i z e d r o u t i n e s t a k i n g
a d v a n t a g e o f i n d i r e c t a d d r e s s i n g h a r d w a r e , r e g i s t e r s ,
p i p e l i n i n g , c a c h e s , m e m o r y m a n a g e m e n t , a n d p a r a l -
l e l i s m o n t h e i r p a r t i c u l a r a r c h i t e c t u r e . S t a n d a r d i z i n g
t h e S p a r s e B L A S w i l l n o t o n l y p r o v i d e e c i e n t c o d e s ,
b u t w i l l a l s o e n s u r e p o r t a b l e c o m p u t a t i o n a l k e r n e l s
w i t h a c o m m o n i n t e r f a c e .
T h e r e a r e t w o t y p e s o f C + + i n t e r f a c e s t o b a s i c
k e r n e l s . T h e r s t u t i l i z e s s i m p l e b i n a r y o p e r a t o r s
f o r m u l t i p l i c a t i o n a n d a d d i t i o n , a n d t h e s e c o n d i s a
f u n c t i o n a l i n t e r f a c e s w h i c h c a n g r o u p t r i a d a n d m o r e
c o m p l e x o p e r a t i o n s . T h e b i n a r y o p e r a t o r s p r o v i d e f o r
a s i m p l e r i n t e r f a c e , e . g . y = A x d e n o t e s a s p a r s e
m a t r i x - v e c t o r m u l t i p l y , b u t m a y p r o d u c e l e s s e c i e n t
c o d e . T h e c o m p u t a t i o n a l k e r n e l s i n c l u d e :
s p a r s e m a t r i x p r o d u c t s , C o p A B + C
s o l u t i o n o f t r i a n g u l a r s y s t e m s ,
C D o p A
1
B + C
r e o r d e r i n g o f a s p a r s e m a t r i x p e r m u t a t i o n s ,
A A o p P
c o n v e r s i o n o f o n e d a t a f o r m a t t o a n o t h e r , A
A
w h e r e a n d a r e s c a l a r s , B a n d C a r e r e c t a n g u l a r
m a t r i c e s , D i s a b l o c k d i a g o n a l m a t r i x , A a n d A
a r e s p a r s e m a t r i c e s , a n d o p A i s e i t h e r A o r A
T
3
7/26/2019 A Sparse Matrix Library in C++ for High Performance Architectures
4/5
4 S p a r s e M a t r i x C o n s t r u c t i o n
a n d I O
I n d e a l i n g w i t h i s s u e s o f I O , t h e C + + l i b r a r y i s
p r e s e n t l y d e s i g n e d t o s u p p o r t r e a d i n g a n d w r i t i n g t o
H a r w e l l - B o e i n g f o r m a t s p a r s e m a t r i x l e s 4 . T h e s e
l e s a r e i n h e r e n t l y i n c o m p r e s s e d c o l u m n s t o r a g e ;
h o w e v e r , s i n c e s p a r s e m a t r i c e s i n t h e l i b r a r y c a n b e
t r a n s f o r m e d b e t w e e n v a r i o u s d a t a f o r m a t s , t h i s i s n o t
a s e v e r e l i m i t a t i o n . F i l e i n p u t i s e m b e d d e d a s a n -
o t h e r f o r m o f a s p a r s e m a t r i x c o n s t r u c t o r ; a l e c a n
b e r e a d a n d t r a n s f o r m e d i n t o a n o t h e r f o r m a t u s i n g
c o n v e r s i o n s a n d t h e i o s t r e a m o p e r a t o r s . I n t h e f u -
t u r e , t h e l i b r a r y w i l l a l s o s u p p o r t o t h e r m a t r i x l e
f o r m a t s , s u c h a s a M a t l a b
T M
c o m p a t i b l e f o r m a t ,
a n d I E E E b i n a r y f o r m a t s . S p a r s e m a t r i c e s c a n b e
a l s o b e i n i t i a l i z e d f r o m c o n v e n t i o n a l d a t a a n d i n d e x
v e c t o r s , t h u s a l l o w i n g f o r a u n i v e r s a l i n t e r f a c e t o i m -
p o r t d a t a f r o m C o r F o r t r a n m o d u l e s .
5 P e r f o r m a n c e
T o c o m p a r e t h e e c i e n c y o f o u r C + + c l a s s d e -
s i g n s , w e t e s t e d t h e p e r f o r m a n c e o u r l i b r a r y m o d -
u l e s a g a i n s t o p t i m i z e d F o r t r a n s p a r s e m a t r i x p a c k -
a g e s . F i g u r e s 2 a n d 3 i l l u s t r a t e t h e p e r f o r m a n c e
o f t h e P C G m e t h o d w i t h d i a g o n a l p r e c o n d i t i o n i n g
o n v a r i o u s c o m m o n e x a m p l e p r o b l e m s 2 D a n d 3 D
L a p l a c i a n o p e r a t o r s b e t w e e n o u r C + + l i b r a r y a n d
t h e f 7 7 S p a r s k i t ? p a c k a g e . I n a l l c a s e s w e u t i l i z e d
f u l l o p t i m i z a t i o n o f e a c h c o m p i l e r .
T h e C + + m o d u l e s a r e s l i g h t l y m o r e e c i e n t s i n c e
t h e l o w - l e v e l S p a r s e B L A S h a v e b e e n n e d t u n e d f o r
e a c h p l a t f o r m . T h i s s h o w s t h a t i t i s p o s s i b l e t o h a v e
a n e l e g a n t c o d i n g i n t e r f a c e a s s h o w n i n g u r e 1 a n d
s t i l l m a i n t a i n c o m p e t i t i v e p e r f o r m a n c e i f n o t b e t t e r
w i t h c o n v e n t i o n a l F o r t r a n m o d u l e s .
I t s h o u l d b e p o i n t e d o u t t h a t o u r i n t e n t i s n o t t o
c o m p a r e o u r s e l v e s w i t h a s p e c i c l i b r a r y . S p a r s k i t i s
a n e x c e l l e n t F o r t r a n l i b r a r y w h o s e f o c u s i s m o r e o n
p o r t a b i l i t y t h a n u l t i m a t e p e r f o r m a n c e . O u r g o a l i s
s i m p l y t o d e m o n s t r a t e t h a t t h e C + + c o d e s c a n a l s o
a c h i e v e g o o d p e r f o r m a n c e , c o m p a r e d t o F o r t r a n . I f
b o t h l i b r a r i e s r e l i e d o n v e n d o r - s u p p l i e d S p a r s e B L A S ,
t h e n t h e i r p e r f o r m a n c e d i e r e n c e w o u l d b e u n d e -
t e c t a b l e .
Sparse PCG
Executiontime(secs)
SPARSKIT (f77)
la2d64 la2d128 la3d16 la3d32
SparseLib++ (C++)
Sun SPARC 10
5
10
15
20
25
F i g u r e 2 : P e r f o r m a n c e c o m p a r i s o n o f C + + g + +
v s . o p t i m i z e d F o r t r a n c o d e s o n a S u n S p a r c 1 0 .
Sparse PCGIBM RS6000 Model 580
Executiontime(secs)
SPARSKIT (f77)
1
2
3
4
5
6
7
la2d64 la2d128 la3d16 la3d32
SparseLib++ (C++)
F i g u r e 3 : P e r f o r m a n c e c o m p a r i s o n o f C + + x l C v s .
o p t i m i z e d F o r t r a n c o d e s x l f - O o n a n I B M R S 6 0 0 0
M o d e l 5 8 0 ,
4
7/26/2019 A Sparse Matrix Library in C++ for High Performance Architectures
5/5
6 C o n c l u s i o n
U s i n g C + + f o r n u m e r i c a l c o m p u t a t i o n c a n g r e a t l y
e n h a n c e c l a r i t y , r e u s e , a n d p o r t a b i l i t y . I n o u r C + +
s p a r s e m a t r i x l i b r a r y , S p a r s e L i b + + , t h e d e t a i l s o f t h e
u n d e r l y i n g s p a r s e m a t r i x d a t a f o r m a t a r e c o m p l e t e l y
h i d d e n a t t h e a l g o r i t h m l e v e l . T h e s e r e s u l t s i n i t -
e r a t i v e a l g o r i t h m c o d e s w h i c h c l o s e l y r e s e m b l e t h e i r
m a t h e m a t i c a l d e n o t a t i o n . A l s o , s i n c e t h e l i b r a r y i s
b u i l t u p o n t h e L e v e l 3 S p a r s e B L A S , i t p r o v i d e s p e r -
f o r m a n c e c o m p a r a b l e t o o p t i m i z e d F o r t r a n .
R e f e r e n c e s
1 R . B a r r e t t , M . B e r r y , T . F . C h a n , J . D e m m e l ,
J . D o n a t o , J . D o n g a r r a , V . E i j k h o u t , R . P o z o ,
C . R o m i n e , H . v a n d e r V o r s t , T e m p l a t e s f o r t h e
S o l u t i o n o f L i n e a r S y s t e m s : B u i l d i n g B l o c k s f o r
I t e r a t i v e M e t h o d s , S I A M P r e s s , 1 9 9 4 .
2 J . D o n g a r r a , R . P o z o , D . W a l k e r , L A P A C K + + :
A D e s i g n O v e r v i e w o f O b j e c t - O r i e n t e d E x t e n -
s i o n s f o r H i g h P e r f o r m a n c e L i n e a r A l g e b r a , " P r o -
c e e d i n g s o f S u p e r c o m p u t i n g ' 9 3 , I E E E P r e s s ,
1 9 9 3 , p p . 1 6 2 - 1 7 1 .
3 J . D o n g a r r a , J . D u C r o z , I . S . D u , S . H a m -
m a r l i n g , A s e t o f l e v e l 3 B a s i c L i n e a r A l g e b r a
S u b p r o g r a m s , " A C M T r a n s . M a t h . S o f t . , V o l . 1 6 ,
1 9 9 0 , p p . 1 - 1 7 .
4 I . D u , R . G r i m e s , J . L e w i s , S p a r s e M a t r i x T e s t
P r o b l e m s , " A C M T r a n s . M a t h . S o f t . , V o l . 1 5 ,
1 9 8 9 , p p . 1 - 1 4 .
5 I . D u , M . M a r r o n e , G . R a d i c a t i , A P r o p o s a l f o r
U s e r L e v e l S p a r s e B L A S , C E R F A C S T e c h n i c a l
R e p o r t T R P A 9 2 8 5 , 1 9 9 2 .
6 M . A . H e r o u x , A P r o p o s a l f o r a S p a r s e
B L A S T o o l k i t , C E R F A C S T e c h n i c a l R e p o r t
T R P A 9 2 9 0 , 1 9 9 2 .
7 Y . S a a d , S p a r s k i t : a b a s i c t o o l k i t f o r s p a r s e m a t r i x
c o m p u t a t i o n s , M a y , 1 9 9 0 .
5