 }
 
 template< class Matrix, class Vector>
-inline void doSymv( Matrix& m, 
-                    const Vector&x, 
-                    Vector& y, 
-                    CuspMatrixTag, 
+inline void doSymv( Matrix& m,
+                    const Vector&x,
+                    Vector& y,
+                    CuspMatrixTag,
                     CuspVectorTag,
                     CuspVectorTag  )
 {

}

template< class Matrix, class Vector>
inline void doSymv( Matrix& m, 
                    const Vector&x, 
                    Vector& y, 
                    CuspMatrixTag, 
                    ThrustVectorTag,
                    ThrustVectorTag, 
                    cusp::sparse_format  )
{
    cusp::array1d_view< typename Vector::const_iterator> cx( x.cbegin(), x.cend());

    const index_type* RESTRICT row_ptr = thrust::raw_pointer_cast( &m.row_offsets[0]);
    const index_type* RESTRICT col_ptr = thrust::raw_pointer_cast( &m.column_indices[0]);
    int rows = m.num_rows;
    #pragma omp parallel for
    for(int i = 0; i < rows; i++)
    {
        value_type temp = 0.;
