ViennaCL - The Vienna Computing Library  1.6.0
Free open-source GPU-accelerated linear algebra and solver library.
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Introduction

The Vienna Computing Library (ViennaCL) is a scientific computing library written in C++. It provides simple, high-level access to the vast computing resources available on parallel architectures such as GPUs and multi-core CPUs by using either a host based computing backend, an OpenCL computing backend, or CUDA. The primary focus is on common linear algebra operations (BLAS levels 1, 2 and 3) and the solution of large sparse systems of equations by means of iterative methods. The following iterative solvers are currently implemented (confer for example to the book of Y.~Saad [21] ):

  • Conjugate Gradient (CG)
  • Stabilized BiConjugate Gradient (BiCGStab)
  • Generalized Minimum Residual (GMRES) A number of preconditioners is also provided in order to improve convergence of these solvers, see chapter on algorithms.

The solvers and preconditioners can also be used with different libraries due to their generic implementation. Currently it is possible to use the solvers and preconditioners directly with types from the uBLAS library, which is part of Boost [4] . The iterative solvers can directly be used with Eigen [8] and MTL 4 [17].

Under the hood, ViennaCL uses a unified layer to access CUDA [18], OpenCL [13], and/or OpenMP [20] for accessing and executing code on compute devices. Therefore, ViennaCL is not tailored to products from a particular vendor and can be used on many different platforms. At present, ViennaCL is known to work on all current CPUs and modern GPUs from NVIDIA and AMD (see table below), CPUs using either the AMD Accelerated Parallel Processing (APP) SDK (formerly ATI Stream SDK) or the Intel OpenCL SDK, and Intels MIC platform (Xeon Phi). Double precision arithmetic on GPUs is only possible if provided in hardware by the GPU. There is no double precision emulation in software in ViennaCL.

Compute Devicefloatdouble
NVIDIA Geforce 86XX GT/GSO ok -
NVIDIA Geforce 88XX GTX/GTS ok -
NVIDIA Geforce 96XX GT/GSO ok -
NVIDIA Geforce 98XX GTX/GTS ok -
NVIDIA GT 230 ok -
NVIDIA GT(S) 240 ok -
NVIDIA GTS 250 ok -
NVIDIA GTX 260 ok ok
NVIDIA GTX 275 ok ok
NVIDIA GTX 280 ok ok
NVIDIA GTX 285 ok ok
NVIDIA GTX 4XX ok ok
NVIDIA GTX 5XX ok ok
NVIDIA GTX 6XX ok ok
NVIDIA Quadro FX 46XX ok -
NVIDIA Quadro FX 48XX ok ok
NVIDIA Quadro FX 56XX ok -
NVIDIA Quadro FX 58XX ok ok
NVIDIA Tesla 870 ok -
NVIDIA Tesla C10XX ok ok
NVIDIA Tesla C20XX ok ok
ATI Radeon HD 4XXX ok -
ATI Radeon HD 48XX ok ok
ATI Radeon HD 5XXX ok -
ATI Radeon HD 58XX ok ok
ATI Radeon HD 59XX ok ok
ATI Radeon HD 68XX ok -
ATI Radeon HD 69XX ok ok
ATI Radeon HD 77XX ok -
ATI Radeon HD 78XX ok -
ATI Radeon HD 79XX ok ok
ATI FireStream V92XX ok ok
ATI FirePro V78XX ok ok
ATI FirePro V87XX ok ok
ATI FirePro V88XX ok ok

Available arithmetics in ViennaCL provided by selected GPUs. Some older versions of the Stream SDK (APP SDK) from AMD/ATI may not comply to the OpenCL standard for double precision extensions.