ViennaCL: Linear Algebra on GPUs using OpenCL

Dear OpenCL users at the NVIDIA forums,

I am proud to announce the release of the Vienna Computing Library (ViennaCL), a scientific computing library written in C++ and based on OpenCL. It allows simple, high-level access to the vast computing resources available on parallel architectures such as GPUs and is primarily focused on common linear algebra operations (BLAS level 1 and 2) and the solution of large systems of equations by means of iterative methods. At present, the following iterative solvers are implemented:
* Conjugate Gradient (CG)
* Stabilized BiConjugate Gradient (BiCGStab)
* Generalized Minimum Residual (GMRES)
An optional ILU preconditioner can be used, which is so far precomputed on the CPU and may thus not lead to overall performance gains.

The library interface is similar to that of the ublas library, which is shipped with Boost. The iterative solvers can be used either on the CPU with ublas types or on the GPU using ViennaCL types. Consequently, there are only a few code changes in existing simulators necessary to get the iterative solvers running on the GPU. For further information, please visit http://viennacl.sourceforge.net/. If you have any questions, feel free to ask them here :-)

Best regards,
Karli

Great! But from benchmarks, GTX 470 doesn’t look very good… Maybe driver issues…

Great, I would like to test this under Windows! However, the package even fails to extract since “aux” seems to be a reserved name (from ancient DOS days), and there can’t be a directory of this name. Would you mind changing this to a different name? As you are using cmake, this replacement should not be too hard.

Thanks & kind regards,
Markus

Thanks for all the input. I’ll put version 1.0.2 online in a couple of hours which fixes the aux/ thing and some recently discovered glitches with the Visual C++ compiler under Windows.

@ivalylo
Some of the Fermi benchmarks rely on memory bandwidth, which is on the GTX 470 about the same as on the GTX 260.

ViennaCL 1.0.2 was just released, which fixes problems with the Visual C++ compiler in version 1.0.1. Moreover, the aux/ directory was renamed to auxiliary/ - thanks to user ‘grabner’ for pointing that out! :-)