Solution of eigenvalue problems on heterogeneous computing

Solution of eigenvalue problems on heterogeneous
computing architectures
Davor Davidović
Center for informatics and computing
Rudjer Boskovic Institute
Bijenička cesta 54, 10000 Zagreb
Email: [email protected]
Abstract—In this paper are presented current achievements
and the state-of-the-art algorithms and implementations for dense
linear algebra on traditional architectures such as single-core
machines or distributed memory parallel machines. Also, this
paper summarizes the current implementations and publicly
available libraries for basic linear algebra for multi-core and
many-core architectures (e.g. graphic processors), but also emphasizes the lack of advanced linear algebra implementation on
the multi- and many-core architectures. The problem that will
be solved during this research is to speed-up the execution of the
decomposition phase (i.e. Hessenberg reduction, tridiagonalization, bidiagonalization) for the symmetric eigenvalue problem by
utilizing the heterogeneous architectures (CPU + GPU). The final
aim of this research is to explore the use of external devices, in
particular, general purpose GPUs (GPGPUs), to accelerate the
solution of matrix eigenvalue problems. Also, interesting topic
will be to explore the applicability of the implementation results
for symmetric eigenvalue problem to the SVD decomposition on
the multi- and many-core architectures.
Index Terms—eigenvalue problem, dense linear algebra, Hessenberg reduction, tridiagonalization, graphic processors (GPUs),
hybrid computing
I. I NTRODUCTION
Computing the eigenvalues and eigenvectors of a matrix A
is one of the fundamental tasks in numerical linear algebra,
with applications in a large range of different scientific and
engineering problems. With the increased complexity of mathematical models and the availability of various high performance systems, such as multi-core and many-core systems (for
example general purpose graphic processor units - GPGPUs),
there is a growing demand to solve large-scale eigenvalue
problem.
The improvements in performance, functionality, and programmability of graphics processors in the last few years have
renewed the interest in this class of hardware for generalpurpose computations. Most of the activities were focused
on basic dense linear algebra, with important gains in the
performance delivered for basic linear algebra operations [1].
Combining CPUs with graphic processing units (GPUs),
allows moving well-structured, easily parallelizable tasks to
external devices while performing unstructured tasks on the
more flexible traditional (multi-core) processors. Despite its
popularity in recent years, the potential of solving advanced
linear algebra problems on heterogeneous architectures is still
largely unexplored. Earlier studies have evaluated the perfor-
mance of some advanced linear algebra operations on former
generations of graphic processing units that were produced
before the first CUDA release. Some of them, like in [2], were
specifically focused on the evaluation of different procedures
(like LU decomposition) for solving dense linear systems on
graphic hardware. The aim of this research is to explore the
use of external devices, in particular, general purpose GPUs
(GPGPUs), to accelerate the solution of matrix eigenvalue
problems.
There is variety of implementations and publicly available
libraries for advanced linear algebra on traditional architectures such as single-core machines or distributed memory
parallel machines. The most popular collections for the linear
algebra routines are LAPACK [3] and ScaLAPACK [4] libraries. LAPACK library includes BLAS [5] libraries that provide standard building block for performing basic vector and
matrix operations on single-core machines. The Level 1 BLAS
performs scalar, vector-scalar and vector-vector operations,
the Level 2 BLAS perform matrix-vector operations, while
the Level 3 BLAS perform matrix-matrix operations. The
ScaLAPACK library includes redesigned LAPACK libraries
for distributed memory parallel machines. The library and
research project called ATLAS (Automatically Tuned Linear
Algebra Software) [6] is focusing on applying empirical techniques in order to provide portable performance. At present,
it provides C and Fortran77 interfaces to a portably efficient
BLAS implementation, as well as a few routines from LAPACK. Also, some recent works has been done that describe
some specific implementations, like the implementation of the
One–Sided Jacobi method [7] for solving eigenvalue problem.
In the last few years a various implementations of basic
linear algebra algorithms for multi-core and many-core architectures has been published, while there is still a lack of
implementations for advanced linear algebra on the multi-core
and many-core architectures. The CUBLAS [8] is NVIDIAs
implementation of the basic linear algebra algorithms. It
includes the BLAS 1, 2 & 3 routines redesigned using CUDA
for execution on the NVIDIA graphic cards.
Some research has already been done in the implementation
of the different dense advanced linear algebra algorithms on
the multi-core and many-core architectures like systems of linear equations [9] [10] and the efficient implementation of the
LU, QR and Cholesky factorization using vector capabilities
of the graphic processors, described in [11]. The MAGMA
and PLASMA [12] are two projects that aim to achieve high
performance and portability across a wide range of multi-core
architectures and hybrid systems respectively. PLASMA is a
redesign of parts of LAPACK and ScaLAPACK for shared
memory machines based on multi-core processor architectures.
To achieve high performance on this type of architecture,
PLASMA relies on tile algorithms [13], which provide fine
granularity parallelism. The MAGMA [14] project aims to
develop a dense linear algebra library similar to LAPACK but
for heterogeneous/hybrid (CPU + GPU) architectures, starting
with current ”Multicore+GPU” systems. In MAGMA, several
important implementations of the linear algebra solutions are
developed, like QR factorization [15] using multiple GPUs,
Cholesky factorization [16] on multi-core systems with GPU
accelerators and Hessenberg reduction [17] for hybrid GPUbased systems.
The lack of the implementation of the eigenvalue solvers
on multi-core and many-core architectures is still present. The
current implementations of the algorithms that are utilized
to solve eigenvalue problems on the multi- and many-core
architectures will be described further in the article.
The rest of the paper is structured as follows: Section
II describes the mathematical problem that we are solving.
Section III introduces multi-core and many-core architectures.
Section IV summarizes the current state-of-the-art approaches
for solving eigenvalue problems and section V gives a short
description of the research that will be conducted.
II. M ATHEMATICAL P ROBLEM
Consider a square matrix A. If there is a scalar λ and a
nonzero vector x such that
Ax = λx,
(1)
then λ is called an eigenvalue and x is called an eigenvector
(associated with λ) of A. Counting multiple copies, every n×n
matrix A has n such eigenvalues λ. Typical applications in
science and engineering, for which it is desirable to compute
a large fraction of the eigenvalues for a potentially large matrix
A, include DFT (density functional theory) calculations in
computational chemistry, stability analyses in computational
fluid dynamics, multivariance statistics and linear-quadratic
optimal control problems. For an overview see the introduction
of [18].
Computing the eigenvalue information is sometimes the
most time-consuming stage in applications. When A is a
dense matrix, numerically stable methods for the solution
of this problem require O(n3 ) floating point arithmetic operations (flops). Given that for large-scale problems n is
usually more than 10000, large distributed-memory clusters
of computers have been employed for the solution of these
problems in the past. In addition, the need for computing
many eigenvalues renders traditional sparse iterative solvers
for eigenvalue problems, such as Arnoldi and Jacobi-Davidson
methods [19], inefficient, mainly because of the need for reorthogonalization to avoid re-convergence towards converged
eigenvalues. Hence, dense direct solvers need to be used to
address the computation of many eigenvalues.
For a general real matrix A, dense direct solvers usually
aim at computing a Schur decomposition of A:
QT AQ = S,
(2)
where Q is orthogonal and S is a quasi-upper triangular matrix
from which the eigenvalues can be directly read off. A simple
backward substitution procedure can be used to extract the
eigenvectors from S and Q [20].
If A is symmetric then (2) becomes a spectral decomposition:
QT AQ = D,
(3)
where Q is (again) orthogonal and D is a diagonal matrix with
the eigenvalues of A on the diagonal.
III. G ENERAL P URPOSE G RAPHIC P ROCESSING U NITS
(GPGPU S )
GPGPU stands for General-Purpose computing on GPU,
also known as GPU Computing. GPUs are capable of very
high computation and data throughput. Once specially designed for computer graphics and difficult to program, today
GPUs are general-purpose parallel processors with support
for accessible programming interfaces and industry-standard
languages such as C and FORTRAN. The speedups achieved
by using GPUs are of orders of magnitude vs. optimized CPU
implementations.
In 2006, with the first release of the NVIDIA CUDA [8]
programming model, a new generation of GPUs appeared,
with a completely different architectural design which is
capable to solve many of the restrictions related with general
purpose computation that were present in previous generations
of graphics processors. These new GPUs turn the massive
floating-point computational power of a modern graphics
accelerator’s shader pipeline into general-purpose computing
power. The GPU-based high performance computers are starting to play a significant role in large-scale computing. Three
of the 5 most powerful supercomputers in the world take
advantage of GPU acceleration. This includes the current
leader as of October 2010, Tianhe-1A, which uses the NVIDIA
Tesla platform.
There are several new characteristics in the new generation
of the GPUs:
1) The clock frequency of the unified shader is much higher
than that of the fragment processors present in previous
GPUs,
2) Every shader consists of a large collection of computation units, called Stream Processors (SP) which are
grouped in a multiprocessor,
3) The memory hierarchy is much more sophisticated, and
includes a L2 cache and small fast memories shared by
all SPs in the same multiprocessor.
Fig. 1. Difference between CPU and GPU architectures – picture taken from
NVIDIA CUDA C Programming Guide v3.1.1.
A. GPU architecture
Recently, starting from 2006, NVIDIA began releasing cards
supporting an API extension to the C programming language
called CUDA (Compute Unified Device Architecture), which
allows specified functions from a normal C program to run on
the GPUs stream processors. This makes C programs capable
of taking advantage of a GPUs ability to operate on large
matrices in parallel, while still making use of the CPU when
appropriate. A traditional C code that runs on the host (CPU)
is rearranged thus data parallel sections of the code, called
kernels, are moved to the device (GPU). CUDA is also the
first API to allow CPU-based applications to access directly
the resources of a GPU for more general purpose computing
without the limitations of using a graphics API.
The difference between CPU and GPU architecture is shown
in Fig. 1. One can see that every multiprocessor (green row)
on the GPU has its own control unit and cache, while on
the CPU, cores share common control and cache units. Furthermore, every multiprocessor is consisted of 8 − −16 cores
called stream processors. The GPU is especially well-suited
to address problems that can be expressed as data-parallel
computations (the same program is executed on many data
elements in parallel), with high arithmetic intensity (i.e. the
ratio of arithmetic operations to memory operations). Because
the same program is executed for each data element, there
is a lower requirement for sophisticated flow control, and
because it is executed on many data elements and has high
arithmetic intensity, the memory access latency can be hidden
with calculations instead of big data caches.
Despite the importance of arithmetic intensity, it is worth
noting that modern GPUs have very high peak bandwidth to
their on-board memory, on the order of 10× the CPU-memory
bandwidths on typical PC platforms. This is why GPUs can
outperform CPUs at tasks such as matrix multiplication and
other matrix-matrix computations, which have a low computation/bandwidth ratio.
In Fig. 2 is described the memory hierarchy of the GPU.
At the hardware level, for example the third generation of
NVIDIA graphic cards, the GTX 480 processor is a collection
of 15 multiprocessors, with 32 processors each. Each multiprocessor has its own shared memory which is common to all
32 processors inside it with the huge memory bandwidth but
small capacity. It also has a set of 32–bit registers, texture, and
constant memory caches. In any cycle, each processor of the
multiprocessor executes the same instruction on different data.
Fig. 2. GPU architecture – picture taken from NVIDIA CUDA C Programming Guide v3.1.1.
TABLE I
H ARDWARE DIFFERENCES : GPU VS. CPU
Processor
Intel Core
i7-970
GeForce
GTX 480
TESLA
M2070Q
Multiprocessors
1
15
14
Cores/threads
6/12
480
448
Clock (MHZ)
3200
1401
1150
Bandwidth (GB/s)
25.6
177.5
150.3
6144
Memory size (MB)
∅
1536
Single precision (GFLOPs) FMA
N/A
1344.96
1288
Double precision (GFLOPs) FMA
107.5
168
515.2
Communication between multiprocessors is done through the
device memory (slow), which is available to all the processors
of the multiprocessors.
Table I shows the differences between 2 NVIDIA GPUs,
GeForce GTX 480, TESLA M2070Q and the new generation
of 32–nm Intel Core i7-970 processor. One can see very high
memory bandwidth (bandwidth between multiprocessor and
device memory) on the both graphic cards in comparison to the
CPU. Although, the GTX 480 has better overall characteristics
than Tesla M2070Q, it shows considerably lower doubleprecision performance. This is because GTX aims at gaming
market community while Tesla graphic cards are specially
designed to perform high performance computing. The last
two table rows describe the peak processing power in single
and double precision, respectively. The FMA states for a fused
multiply-add that is a floating-point multiply-add operation
performed in one step, with a single rounding.
B. Hybrid GPU-based platform
Hybrid GPU-based multi-core platforms composed of both
homogeneous multi-core CPUs and many-core GPUs stand
out among a confluence of current hardware trends as they
provide an effective solution to these two needs: computational
power and decreasing the gap between computation and communication speeds. Indeed, as power consumption is typically
proportional to the cube of the frequency, GPUs have a clear
advantage against current homogeneous multi-cores, as GPUs
compute power is derived from many cores that are of low
frequency.
Older versions of NVIDIA GPUs (compute capability 1.x)
feature massive parallelism but serial kernel execution, i.e.
only one kernel is allowed to run at a time using the entire
GPU. This means that only large, highly parallelizable kernels can run efficiently on GPUs. Although, parallel kernel
execution is available with the newer versions of NVIDIA
GPUs (compute capability 2.x) this can not solve entirely solve
problems of load balancing between CPU and GPU. The idea
of using hybrid algorithms presents an opportunity to remedy
this situation and therefore enable the efficient use of GPUs
well beyond the case of data-parallel applications. Namely, the
solution and advice to developers is to use a hybrid coding
approach, where small, non-parallelizable kernels would be
executed on the CPU, and only large, data-parallel kernels on
the GPU. Although GPUs move towards supporting task-based
parallelism as well (e.g., advertised for the next generation
NVIDIA GPUs, code named Fermi), small tasks that arise in
dense linear algebra would still make sense to be executed on
the CPU, reusing existing software infrastructure.
Fig. 3. CUDA programming model – picture taken from NVIDIA CUDA
C Programming Guide v3.1.1.
IV. R ELATED WORK (C URRENT APPROACHES )
In the following, we briefly summarize state-of-the art
algorithms and software for computing spectral and Schur
decompositions that are basic steps in solving eigenvalue
problems and are good starting point for other researches.
A. Spectral decomposition
C. CUDA programming model
The CUDA programming model, for a programmer, is a
collection of threads running in parallel as shown by the
Fig. 3. A warp is a collection of threads that can be run
simultaneously on a multiprocessor. The warp size is fixed for
a specific GPU, and counts 32 threads for nowadays GPUs.
The programmer decides the number of threads to be executed.
If the number of threads is more than the warp size, they are
time-shared internally on the multiprocessor. A collection of
threads (called a block) is mapped to a multiprocessor at a
given time. Multiple blocks can be assigned to a multiprocessor and their execution is time-shared. A single computation
on a device (GPU) generates a number of blocks. A collection
of all the blocks in a single computation is called a grid. All
threads of the blocks mapped to a multiprocessor divide its
resources equally amongst themselves. Each thread and block
is given a unique ID that can be accessed within the thread
during its execution. Each thread executes a single instruction
at a time. GPU is a co-processor to the CPU and needs to be
initiated by the CPU.
Describe CUDA programming model - releases, compute
capabilities
Any symmetric matrix A can be reduced, in a finite number
of steps, as follows:
QT1 AQ1 = T,
(4)
where Q1 is orthogonal and T is a tridiagonal matrix. For
example, for n = 6 the matrix T takes the shape


x x
 x x x





x
x
x

,
T =

x
x
x



x x x 
x x
where x denotes an arbitrary, generically nonzero number.
There exist several approaches to achieve the reduction 4.
On a single-core processor, an approach based on (block)
Householder transformations described in [21] and implemented in LAPACK [3] is usually preferred. A similar approach is implemented in ScaLAPACK [4] for parallel distributed memory architectures.
On a multi-core processor, a two-stage approach described
in detail in [22] is preferred, as it avoids the need for large
matrix-vector multiplications (which perform quite poorly)
in the Householder-based approach mentioned above. The
two-stage approach first reduces A to block tridiagonal form
QT0 AQ0 = Tb with nb nonzero sub-diagonals. For example,
for n = 6 and nb = 3 the matrix Tb takes the shape


x x x x
 x x x x x



 x x x x x x 

.
Tb = 

 x x x x x x 

x x x x x 
x x x x
The second stage consists of reducing Tb further to tridiagonal form. If, nb n this process requires only a negligible
amount of operations. For single core processors, the approach
described above is implemented in the SBR toolbox [23].
Numerical experiments provide evidence that some vendorspecific variants of LAPACK, including Intel’s MKL, make
use of this approach. A prototype implementation documented
in [24] demonstrates the potential of the two-stage approach
to perform well in a heterogeneous computing environment,
by moving parts of the computation in Stage 1 to the external
device us as graphic processor.
Once A is reduced to tridiagonal form, the computation
of eigenvalues becomes a negligible operation. A GPGPU
implementation of the bisection algorithm is described in [25].
If also the eigenvectors are to be computed, more care needs
to be applied to devise an efficient implementation. The highly
sophisticated and successful MRRR algorithm [26] [27] is
currently the method of choice, of which an efficient GPGPU
implementation has been described in [28].
B. Schur decomposition
A general non-symmetric matrix A can be reduced, in a
finite number of steps, as follows:
QT1 AQ1
= H,
(5)
where Q1 is orthogonal and H is a Hessenberg matrix. For
example, for n = 6 the matrix H takes the shape


x x x x x x
 x x x x x x 



x x x x x 

.
H=
x x x x 



x x x 
x x
In contrast to the symmetric case, there exists so far only one
truly successful approach to achieve the reduction (refeq:5).
This approach is based on (block) Householder transformations, as described in [21] [29] and implemented in LAPACK [3]. A variant of this approach for parallel distributed
memory architectures is included in ScaLAPACK [4]. Preliminary experiments reported in [30] reveal that an extension
of the two-stage approach to Hessenberg reduction does not
perform very well. Even on multi-core processors the twostage approach was reported to perform significantly worse
than LAPACK (linked with multithreaded BLAS). This is
mainly due to the fact that the computational cost for the second stage becomes non-negligible for non-symmetric matrices.
Developing an efficient algorithm for reduction to Hessenberg
form on multi-core architectures remains an open problem.
However, a variant that is particularly efficient for heterogeneous architectures (single core + GPGPU) is described in [17]
and [31].
Once A has been reduced to a Hessenberg matrix H, the
QR algorithm can be used to compute Schur decomposition.
Several variants of the QR algorithm for parallel distributed
memory and traditionally shared memory architectures have
been developed, see [18] and the references therein. However,
there is no variant specifically tailored to multi-core and
heterogeneous architectures described in the literature.
V. R ESEARCH TO BE DONE
The algorithms and software to be developed in the thesis
aim at improving and complementing existing approaches to
solving eigenvalue problems on multi-core and heterogeneous
architectures. The ultimate goal is to have a complete highly
performing software package available. To achieve this goal,
we will make use of existing work, such as the GPGPU
implementation of the MRRR algorithm described in [28].
However, there are still a number of gaps to be filled.
The part of this research will be conducted at the University
Jaume I, Castellón, Spain as a part of PhD internship in the
period February–July 2011. The research will be done in the
research group of prof. Enrique Quintana-Ortı́ who is the
author of numerous scientific and technical papers in the ares
of numerical linear algebra and GPU-based hybrid computing.
In the following paragraphs are shortly described research
activities, divided by topics.
A. Reduction to tridiagonal form
For the reduction of a symmetric matrix to tridiagonal
form, two approaches appear to be promising: (I) a variant
of the two-stage approach as described in [24], and (II)
an extension of the work in [17] to symmetric matrices.
Intuitively, Approach (II) appears to be suitable if the CPU
has only a few, say 2 or 4, cores while Approach (I) appears
to offer greater advantages for many cores. However, a careful
numerical implementation and comparison of both approaches
needs to be performed before such a conclusion can be drawn.
The specific tasks are as follows.
1) Complement and improve the preliminary implementation described in [21] to accommodate multi-core CPUs
and accumulation of orthogonal transformation
2) Develop an algorithm and implementation that extends [17] to symmetric matrices.
3) Compare Approaches (I) and (II) for a variety of computing environments.
B. Reduction to Hessenberg form
As mentioned above, the efficient reduction to Hessenberg
form on multicore processors is an important open problem,
which will be approached in this thesis. The specific tasks are
as follows.
1) Develop a multi-core variant of Hessenberg reduction,
possibly by combining the LAPACK-like algorithm
based on (block) Householder transformations with
block storage schemes and dynamic scheduling.
2) Combine this multi-core variant with the ideas from [17]
to develop an efficient algorithm and implementation for
heterogeneous architectures.
3) Evaluate the efficiency of the developed implementations for a variety of computing environments.
C. Singular Value Decomposition
Interesting and important problem that is closely connected
to the eigenvalue problem in terms of employing the same
numerical tools (for example orthogonal transforms via, e.g.
Householder reflectors) is singular value decomposition problem. The scope of this work will also be to analyze the
applicability of the implementation results of the symmetric
eigenvalue problem to SVD decomposition. Some research in
implementation of the SVD on the multi-core and many-core
architectures have already been done in [32] and for hyperbolic
SVD in [33].
D. Iterative refinement of decomposition
Due to the poor performance of double precision (DP) operations on current GPGPUs, high performance can usually only
be attained in single precision (SP). In scientific computing,
SP is often not sufficient to warrant the desired accuracy
in the results and it is standard to use DP. To combine the
efficiency of GPGPUs with the accuracy of DP, it is necessary
to perform the major part of the computation in SP and attain
DP by a (hopefully cheap) refinement procedure. Algorithms
for refining entire spectral and Schur decompositions in a
mixed SP/DP environment are currently under investigations.
In the thesis these algorithms will be adapted to heterogeneous
computing environments.
VI. C ONCLUSION
With the omnipresence of multi-core processors and GPGPUs there is and will be an increasing demand to reformulate existing algorithms to perform well on heterogeneous
computing architectures. In this paper is shown that various
GPU/hybrid implementations of the basic linear algebra algorithms already exist, but there is a lack of advanced linear
algebra implementations on the many-core architectures, especially ones that compute the eigenvalue problems and SVD.
This research aims to perform the reformulation of the existing
algorithms for dense eigenvalue solvers. A software package
will be made available and it can be expected that it will have
a large impact on the scientific computing community as there
is currently a severe lack of eigenvalue solvers that can benefit
from many cores and/or the availability of a GPGPU.
ACKNOWLEDGMENT
I would like to express my special thanks to professor
Daniel Kressner from the ETH Zürich for his enormous help in
the preparation and correction of this paper without whom this
paper would not be possible. I would also like to thank to my
mentors, prof. Karolj Skala from the Rudjer Boskovic Institute,
and prof. Domagoj Jakobović from the Faculty of Electrical
Engineering and Computing for their help and support with
comments and leadership.
R EFERENCES
[1] S. Barrachina, M. Castillo, F. Igual, R. Mayo, and E. Quintana-Ortı́,
“Evaluation and tuning of the level 3 CUBLAS for graphics processors,” in Parallel and Distributed Processing, 2008. IPDPS 2008. IEEE
International Symposium on. IEEE, 2008, pp. 1–8.
[2] N. Galoppo, N. Govindaraju, M. Henson, and D. Manocha, “LUGPU: Efficient algorithms for solving dense linear systems on graphics
hardware,” in Proceedings of the 2005 ACM/IEEE conference on Supercomputing. IEEE Computer Society, 2005, p. 3.
[3] E. Anderson, Z. Bai, C. Bischof, S. Blackford, J. Demmel, J. Dongarra,
J. Du Croz, A. Greenbaum, S. Hammarling, A. McKenney et al.,
“LAPAck Users’ Guide SIAM,” 1999.
[4] L. Blackford, A. Cleary, J. Choi, E. d’Azevedo d’Azevedo, J. Demmel,
I. Dhillon, J. Dongarra, S. Hammarling, G. Henry, A. Petitet et al.,
ScaLAPACK users’ guide. Society for Industrial Mathematics, 1997.
[5] C. Lawson, R. Hanson, D. Kincaid, and F. Krogh, “Basic linear algebra
subprograms for Fortran usage,” ACM Transactions on Mathematical
Software (TOMS), vol. 5, no. 3, pp. 308–323, 1979.
[6] R. Whaley and J. Dongarra, “Automatically tuned linear algebra software,” in Proceedings of the 1998 ACM/IEEE conference on Supercomputing (CDROM). IEEE Computer Society, 1998, pp. 1–27.
[7] S. Singer, S. Singer, V. Hari, K. Bokulić, D. Davidović, M. Jurešić, and
A. Ušćumlić, “Advances in Speedup of the Indefinite One-Sided Block
Jacobi Method,” in AIP Conference Proceedings, vol. 936, 2007, p. 519.
[8] C. NVIDIA, “CUBLAS Library,” NVIDIA Corporation, Santa Clara,
California, 2008.
[9] S. Tomov, R. Nath, H. Ltaief, and J. Dongarra, “Dense linear algebra
solvers for multicore with GPU accelerators,” in Parallel & Distributed
Processing, Workshops and Phd Forum (IPDPSW), 2010 IEEE International Symposium on. IEEE, 2010, pp. 1–8.
[10] S. Barrachina, M. Castillo, F. D. Igual, R. Mayo, E. S. Quintana-Ortı́,
and G. Quintana-Ortı́, “Exploiting the capabilities of modern GPUs for
dense matrix computations,” Concurrency and Computation: Practice
and Experience, vol. 21, no. 18, pp. 2457–2477, 2009. [Online].
Available: http://dx.doi.org/10.1002/cpe.1472
[11] V. Volkov and J. Demmel, “LU, QR and Cholesky factorizations
using vector capabilities of GPUs,” EECS Department, University of
California, Berkeley, Tech. Rep. UCB/EECS-2008-49, May, pp. 2008–
49, 2008.
[12] E. Agullo, J. Demmel, J. Dongarra, B. Hadri, J. Kurzak, J. Langou,
H. Ltaief, P. Luszczek, and S. Tomov, “Numerical linear algebra
on emerging architectures: The PLASMA and MAGMA projects,” in
Journal of Physics: Conference Series, vol. 180. IOP Publishing, 2009,
p. 012037.
[13] A. Buttari, J. Langou, J. Kurzak, and J. Dongarra, “A class of parallel
tiled linear algebra algorithms for multicore architectures,” Parallel
Computing, vol. 35, no. 1, pp. 38–53, 2009.
[14] S. Tomov, R. Nath, P. Du, and J. Dongarra, “MAGMA version 0.2 User
Guide,” 2009.
[15] E. Agullo, C. Augonnet, J. Dongarra, M. Faverge, H. Ltaief, S. Thibault,
and S. Tomov, “QR Factorization on a Multicore Node Enhanced with
Multiple GPU Accelerators,” University of Tennessee Computer Science,
Tech. Rep. ICL-UT-10-04, Oct. 2010.
[16] H. Ltaief, S. Tomov, R. Nath, P. Du, and J. Dongarra, “A Scalable High
Performant Cholesky Factorization for Multicore with GPU Accelerators,” Tech. report, LAPACK Working Note 223, Tech. Rep., 2009.
[17] J. Dongarra and S. Tomov, “Accelerating the reduction to upper hessenberg form through hybrid gpu-based computing,” LAPACK Working
Note 219, Tech. Rep., 2009.
[18] R. Granat, B. Kågström, and D. Kressner, “A novel parallel QR
algorithm for hybrid distributed memory HPC systems,” SIAM J. Sci.
Comput, vol. 32, no. 4, pp. 2345–2378, 2010.
[19] Z. Bai, J. Demmel, J. Dongarra, A. Ruhe, and H. van der Vorst,
“Templates for the solution of algebraic eigenvalue problems, volume
11 of Software, Environments, and Tools,” Society for Industrial and
Applied Mathematics (SIAM), Philadelphia, PA, 2000.
[20] G. Golub and C. Van Loan, Matrix computations. Johns Hopkins Univ
Pr, 1996.
[21] J. Dongarra, D. Sorensen, and S. Hammarling, “Block reduction of
matrices to condensed forms for eigenvalue computations,” Journal of
Computational and Applied Mathematics, vol. 27, no. 1-2, pp. 215–227,
1989.
[22] C. H. Bischof, B. Lang, and X. Sun, “A framework for symmetric
band reduction,” ACM Trans. Math. Softw, vol. 26, no. 4, pp. 581–601,
2000. [Online]. Available: http://doi.acm.org/10.1145/365723.365735
[23] C. H. Bischof, B. Lang, and X. Sun, “Algorithm 807: The SBR
toolbox - software for successive band reduction,” ACM Trans.
Math. Softw, vol. 26, no. 4, pp. 602–616, 2000. [Online]. Available:
http://doi.acm.org/10.1145/365723.365736
[24] P. Bientinesi, F. D. Igual, D. Kressner, and E. S. Quintana-Ortı́, “Reduction to condensed forms for symmetric eigenvalue problems on multicore architectures,” in PPAM (1), ser. Lecture Notes in Computer Science, R. Wyrzykowski, J. Dongarra, K. Karczewski, and J. Wasniewski,
Eds., vol. 6067. Springer, 2009, pp. 387–395.
[25] V. Volkov and J. W. Demmel, “Using GPUs to accelerate the bisection
algorithm for finding eigenvalues of symmetric tridiagonal matrices,”
Department of Computer Science, University of Tennessee, Knoxville,
inst-UT-CS:adr, LAPACK Working Note 197, Jan. 2008. [Online].
Available: http://www.netlib.org/lapack/lawnspdf/lawn197.pdf
[26] P. Bientinesi, I. S. Dhillon, and R. A. van de Geijn, “A parallel
eigensolver for dense symmetric matrices based on multiple relatively
robust representations.” SIAM J. Scientific Computing, vol. 27, no. 1, pp.
43–66, 2005. [Online]. Available: http://dx.doi.org/10.1137/030601107
[27] I. S. Dhillon, B. N. Parlett, and C. Voemel, “The design
and implementation of the mrrr algorithm.” ACM Trans. Math.
Softw., vol. 32, no. 4, pp. 533–560, 2006. [Online]. Available:
http://doi.acm.org/10.1145/1186785.1186788
[28] C. Lessig and P. Bientinesi, “On parallelizing the MRRR algorithm
for data-parallel coprocessors,” in PPAM (1), ser. Lecture Notes in
Computer Science, R. Wyrzykowski, J. Dongarra, K. Karczewski, and
J. Wasniewski, Eds., vol. 6067. Springer, 2009, pp. 396–402. [Online].
Available: http://dx.doi.org/10.1007/978-3-642-14390-8
[29] G. Quintana-Ortı́ and R. A. van de Geijn, “Improving the
performance of reduction to hessenberg form,” ACM Trans. Math.
Softw, vol. 32, no. 2, pp. 180–194, 2006. [Online]. Available:
http://doi.acm.org/10.1145/1141885.1141887
[30] H. Ltaief, J. Kurzak, and J. Dongarra, “Parallel block Hessenberg
reduction using algorithms-by-tiles for multicore architectures revisited,”
Department of Computer Science, University of Tennessee, Knoxville,
inst-UT-CS:adr, LAPACK Working Note 208, Aug. 2008. [Online].
Available: http://www.netlib.org/lapack/lawnspdf/lawn208.pdf
[31] S. Tomov, R. Nath, and J. Dongarra, “Accelerating the reduction to upper
Hessenberg, tridiagonal, and bidiagonal forms through hybrid GPUbased computing,” Parallel Computing, vol. 36, no. 12, pp. 645–654,
Dec. 2010.
[32] S. Lahabar and P. J. Narayanan, “Singular value decomposition on gpu
using cuda.” in IPDPS. IEEE, 2009, pp. 1–10. [Online]. Available:
http://dx.doi.org/10.1109/IPDPS.2009.5161058
[33] V. Novakovic and S. Singer, “A gpu-based hyperbolic svd algorithm,”
CoRR, vol. abs/1008.1371, 2010, informal publication. [Online].
Available: http://arxiv.org/abs/1008.1371