ViennaCL / News: Recent posts

ViennaCL 1.7.0 released!

The highlights of the 1.7.0 release are:

  • Fine-grained parallel incomplete LU factorization preconditioners (based on recent paper by Chow and Patel)

  • Fast sparse matrix-matrix multiplication (based on recent paper by Gremse et al.)

  • Improved performance of sparse matrix-vector products

  • Fine-grained parallel algebraic multigrid preconditioners for CUDA, OpenCL, and OpenMP

  • Conversion between vectors and matrices of different numeric type

  • Lanczos eigenvalue solver now optionally also returns eigenvectors... read more

Posted by Karl Rupp 2015-08-01

ViennaCL 1.3.1 released!

The following bugfixes and enhancements have been applied:
- Fixed a compilation problem with GCC 4.7 caused by the wrong order of function declarations. Also removed unnecessary indirections and unused variables.
- Improved out-of-source build in the src-version (for packagers).
- Added virtual destructor in the runtime_wrapper-class in the kernel generator.
- Extended flexibility of submatrix and subvector proxies (ranges, slices).
- Block-ILU for compressed_matrix is now applied on the GPU during the solver cycle phase. However, for the moment the implementation file in viennacl/linalg/detail/ilu/opencl block ilu.hpp needs to be included separately in order to avoid an OpenCL dependency for all ILU implementations.
- SVD now supports double precision.
- Slighly adjusted the interface for NMF. The approximation rank is now specified by the supplied matrices W and H.
- Fixed a problem with matrix-matrix products if the result matrix is not initialized properly (thanks to Laszlo Marak for finding the issue and a fix).
- The operations C += prod(A, B) and C −= prod(A, B) for matrices A, B, and C no longer introduce temporaries if the three matrices are distinct.

Posted by Karl Rupp 2012-08-09

ViennaCL 1.2.0 released!

ViennaCL 1.2.0 is now available for download! Highlights of the new release are the following features (all experimental):
- Several algebraic multigrid preconditioners
- Sparse approximate inverse preconditioners
- Fast Fourier transform
- Structured dense matrices (circulant, Hankel, Toeplitz, Vandermonde)
- Reordering algorithms (Cuthill-McKee, Gibbs-Poole-Stockmeyer)
- Proxies for manipulating subvectors and submatrices
The features are expected to reach maturity in the 1.2.x branch.... read more

Posted by Karl Rupp 2012-01-01

ViennaCL 1.1.2 released!

Version 1.1.2 is now available for download. The highlights of the new release are as follows:
- Improved CG and BiCGStab performance especially for smaller systems
- Improved performance of Jacobi and row scaling preconditioner setup
- Improved performance of coordinate_matrix
This is the final release of the 1.1.x family. The next version 1.2.0 will introduce a number of new features such as additional sparse matrix formats, support for integer vectors and matrices as well as better handling of multiple OpenCL platforms.

Posted by Karl Rupp 2011-05-21

ViennaCL within Google Summer of Code 2011

ViennaCL is part of the "Computational Science and Engineering at TU Wien" project of the Google Summer of Code 2011. If you with to contribute, check out and
Deadline for application is April 8th, 2011.

Posted by Karl Rupp 2011-03-19

ViennaCL 1.1.1 released

This new revision release has a focus on better interaction with other linear algebra libraries. The few known glitches with version 1.1.0 are now removed. Highlights:
- New out-of-the-box support for Eigen and MTL 4
- Improved default parameters for BLAS level 3 routines
- Fixed compilation problems with older OpenCL 1.0 headers
Please send us your wishes for future releases!

Posted by Karl Rupp 2011-03-17

ViennaCL 1.1.0 released

Even though not initially intended, the new version 1.1.0 is now just in time for Christmas! The highlights of this new version are as follows:
- Full BLAS level 3 support
- Multi-GPU support
- Two additional preconditioners
- Automated performance tuning environment
- ViennaCL can operate with existing, user-provided OpenCL contexts
More information can be found on the project homepage.

Thanks for the patience and merry christmas to all users of ViennaCL!

Posted by Karl Rupp 2010-12-24

ViennaCL 1.1.0 delayed to mid December

The upcoming ViennaCL 1.1.0 is going to be a huge step forward. We are currently fine-tuning the interfaces for the new features (which also include support for multiple GPUs), hunt bugs and extend our automated testing environment. This has turned out to be rather time-consuming, therefore we decided to postpone the release to mid December. Please be patient, we are not going to disappoint you!

Posted by Karl Rupp 2010-12-03

Teaser for ViennaCL 1.1.0

The highlights of the upcoming release are as follows:
* BLAS level 3 functionality
* A performance tuning facility
* Additional preconditioners
* Better out-of-the-box support for STL classes
* The ViennaCL logo :-)
More details at

Posted by Karl Rupp 2010-11-05

ViennaCL 1.0.5 released!

This is the last 1.0.x release. The main changes are as follows:
* Added a reader and writer for MatrixMarket files (thanks to Evan Bollig for suggesting that)
* Eliminated a bug that caused the upper triangular direct solver to fail on NVIDIA hardware for large matrices (thanks to Andrew Melfi for finding that)
* The number of iterations and the final estimated error can now be obtained from iterative solver tags.
* Improvements provided by Klaus Schnass are included in the developer converter script (OpenCL kernels to C++ header)
* Disabled the use of reference counting for OpenCL handles on Mac OS X (caused seg faults on program exit)

Posted by Karl Rupp 2010-08-05

New benchmarks online!

New benchmarks running ViennaCL on GPUs and CPUs in single and double precision are now online:

Posted by Karl Rupp 2010-07-14

ViennaCL 1.0.4 released!

The new version 1.0.4 is now ready for download. The main changes over 1.0.3 are:
* All tutorials now work out-of the box with Visual Studio 2008 and produce no ViennaCL-related warnings.
* Better (experimental) support for double precision on ATI GPUs, but no norm_1, norm_2, norm_inf and index_norm_inf functions using ATI Stream SDK on GPUs in double precision.
* Fixed a bug in GMRES that caused segmentation faults under Windows.
* Fixed a bug in const_sparse_matrix_adapter (thanks to Abhinav Golas and Nico Galoppo for almost simultaneous emails on that)
* Corrected incorrect return values in the sparse matrix regression test suite (thanks to Klaus Schnass for the hint)

Posted by Karl Rupp 2010-07-08

Experimental double precision on ATI GPUs

In order to use the experimental double precision support on ATI GPUs, the norm kernels have to be disabled, see
If ViennaCL is run on CPUs using the Stream SDK, no action is required.

Posted by Karl Rupp 2010-06-30

ViennaCL 1.0.3 released!

Support for multi-core CPUs with ATI Stream SDK and experimental double precision support for ViennaCL using the ATI Stream SDK are the highlights of the latest version.

Posted by Karl Rupp 2010-06-18

MATLAB interface for ViennaCL released!

It is now possible to use the three iterative solvers provided with ViennaCL 1.0.2 in MATLAB. The files are located in the folder matlab-interface.

Posted by Karl Rupp 2010-06-10

ViennaCL 1.0.2 released!

The latest revision removes problems with Visual C++ compilers in version 1.0.1 and hidden ublas-dependencies in tutorials 1 and 5.

Posted by Karl Rupp 2010-06-09

ViennaCL 1.0.1 released!

Version 1.0.1 is now available for download.
Most important changes since version 1.0.0:
- Fixed a bug in lu substitute for dense matrices
- Changed iterative solver behavior: Now stops if a certain relative residual is reached
- ILU preconditioning is now fully done on the CPU, because this gives best overall performance
- Improved GPU performance of GMRES by about a factor of two.
- Extended documentation and tutorials

Posted by Karl Rupp 2010-06-07

Project Homepage updated

The project homepage at has experienced a major update. You can now find code examples, benchmarks and direct access to the documentation there.

Posted by Karl Rupp 2010-06-02

ViennaCL 1.0.0 released!

It is a pleasure to announce the first version of ViennaCL!

Posted by Karl Rupp 2010-05-28

Release scheduled for end of May 2010

The release of ViennaCL is scheduled for the end of May 2010. Most features are implemented and benchmarks are promising.

Posted by Karl Rupp 2010-05-12