A Sparse Matrix Library in C++ for High Performance Architectures

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