| ▼ examples | |
| ► benchmarks | |
| dense_blas.cpp | |
| direct_solve.cpp | |
| opencl.cpp | |
| qr.cpp | |
| scheduler.cpp | |
| solver.cpp | |
| sparse.cpp | |
| ► tutorial | |
| amg.cpp | |
| armadillo-with-viennacl.cpp | |
| bandwidth-reduction.cpp | |
| bisect.cpp | |
| blas1.cpp | |
| blas2.cpp | |
| blas3.cpp | |
| blas3range.cpp | |
| custom-context.cpp | |
| custom-kernels.cpp | |
| eigen-with-viennacl.cpp | |
| fft.cpp | |
| iterative-armadillo.cpp | |
| iterative-custom.cpp | |
| iterative-eigen.cpp | |
| iterative-mtl4.cpp | |
| iterative-ublas.cpp | |
| iterative.cpp | |
| lanczos.cpp | |
| least-squares.cpp | |
| libviennacl.cpp | |
| matrix-free.cpp | |
| matrix-range.cpp | |
| mtl4-with-viennacl.cpp | |
| multithreaded.cpp | |
| multithreaded_cg.cpp | |
| nmf.cpp | |
| power-iter.cpp | |
| qr.cpp | |
| qr_method.cpp | |
| scheduler.cpp | |
| spai.cpp | |
| sparse.cpp | |
| structured-matrices.cpp | |
| tql2.cpp | |
| vector-io.hpp | |
| vector-range.cpp | |
| viennacl-info.cpp | |
| wrap-host-buffer.cpp | |
| ▼ libviennacl | |
| ► include | |
| viennacl.hpp | |
| ► src | |
| backend.cpp | |
| blas1.cpp | |
| blas1_host.cpp | |
| blas1_opencl.cpp | |
| blas2.cpp | |
| blas2_host.cpp | |
| blas2_opencl.cpp | |
| blas3.cpp | |
| blas3.hpp | |
| blas3_host.cpp | |
| blas3_opencl.cpp | |
| init_matrix.hpp | |
| init_vector.hpp | |
| viennacl_private.hpp | |
| ▼ tests | |
| ► src | |
| bisect.cpp | |
| blas3_solve.cpp | |
| external_1.cpp | |
| external_2.cpp | |
| fft_1d.cpp | |
| fft_2d.cpp | |
| global_variables.cpp | |
| iterators.cpp | |
| libviennacl_blas1.cpp | |
| libviennacl_blas2.cpp | |
| libviennacl_blas3.cpp | |
| matrix_col_double.cpp | |
| matrix_col_float.cpp | |
| matrix_col_int.cpp | |
| matrix_convert.cpp | |
| matrix_float_double.hpp | |
| matrix_int.hpp | |
| matrix_product_double.cpp | |
| matrix_product_float.cpp | |
| matrix_product_float_double.hpp | |
| matrix_row_double.cpp | |
| matrix_row_float.cpp | |
| matrix_row_int.cpp | |
| matrix_vector.cpp | |
| matrix_vector_int.cpp | |
| nmf.cpp | |
| qr_method.cpp | |
| qr_method_func.cpp | |
| scalar.cpp | |
| scan.cpp | |
| scheduler_matrix.cpp | |
| scheduler_matrix_matrix.cpp | |
| scheduler_matrix_vector.cpp | |
| scheduler_sparse.cpp | |
| scheduler_vector.cpp | |
| self_assign.cpp | |
| sparse.cpp | |
| sparse_prod.cpp | |
| spmdm.cpp | |
| structured-matrices.cpp | |
| svd.cpp | |
| tql.cpp | |
| vector_convert.cpp | |
| vector_float_double.cpp | |
| vector_int.cpp | |
| vector_multi_inner_prod.cpp | |
| vector_uint.cpp | |
| ▼ viennacl | |
| ► backend | |
| cpu_ram.hpp | Implementations for the OpenCL backend functionality |
| cuda.hpp | Implementations for the CUDA backend functionality |
| mem_handle.hpp | Implements the multi-memory-domain handle |
| memory.hpp | Main interface routines for memory management |
| opencl.hpp | Implementations for the OpenCL backend functionality |
| util.hpp | Helper functionality for working with different memory domains |
| ► detail | |
| matrix_def.hpp | Forward declaration of dense matrix classes |
| vector_def.hpp | Forward declarations of the implicit_vector_base, vector_base class |
| ► device_specific | |
| ► builtin_database | |
| ► devices | |
| ► accelerator | |
| fallback.hpp | |
| ► cpu | |
| fallback.hpp | |
| ► gpu | |
| ► amd | |
| ► evergreen | |
| cedar.hpp | |
| cypress.hpp | |
| ► northern_islands | |
| barts.hpp | |
| devastator.hpp | |
| scrapper.hpp | |
| ► southern_islands | |
| tahiti.hpp | |
| ► volcanic_islands | |
| hawaii.hpp | |
| ► nvidia | |
| ► fermi | |
| geforce_gt_540m.hpp | |
| geforce_gtx_470.hpp | |
| geforce_gtx_580.hpp | |
| tesla_c2050.hpp | |
| ► kepler | |
| tesla_k20m.hpp | |
| ► maxwell | |
| geforce_gtx_750_ti.hpp | |
| ► tesla | |
| geforce_gtx_260.hpp | |
| fallback.hpp | |
| common.hpp | |
| matrix_product.hpp | |
| ► templates | |
| matrix_product_template.hpp | |
| template_base.hpp | |
| utils.hpp | |
| execute.hpp | User interface for the code generator |
| execution_handler.hpp | Helper for handling fallbacks, lazy compilation, input-dependent kernels, etc |
| forwards.h | Forwards declaration |
| lazy_program_compiler.hpp | Helper for compiling a program lazily |
| mapped_objects.hpp | Map ViennaCL objects to generator wrappers |
| tree_parsing.hpp | Code for parsing the expression trees |
| utils.hpp | Internal utils |
| ► io | |
| matrix_market.hpp | A reader and writer for the matrix market format is implemented here |
| ► linalg | |
| ► cuda | |
| amg_operations.hpp | Implementations of routines for AMG in OpenCL |
| bisect_kernel_calls.hpp | CUDA kernel calls for the bisection algorithm |
| bisect_kernel_large.hpp | First step of the bisection algorithm for the computation of eigenvalues |
| bisect_kernel_large_multi.hpp | Second step of the bisection algorithm for the computation of eigenvalues for large matrices |
| bisect_kernel_large_onei.hpp | Determine eigenvalues for large matrices for intervals that contained after the first step one eigenvalue |
| bisect_kernel_small.hpp | Determine eigenvalues for small symmetric, tridiagonal matrix |
| bisect_util.hpp | |
| common.hpp | Common routines for CUDA execution |
| direct_solve.hpp | Implementations of dense direct solvers using CUDA are found here |
| fft_operations.hpp | Implementations of Fast Furier Transformation using cuda |
| ilu_operations.hpp | Implementations of specialized routines for the Chow-Patel parallel ILU preconditioner using CUDA |
| iterative_operations.hpp | Implementations of operations using sparse matrices using CUDA |
| matrix_operations.hpp | Implementations of dense matrix related operations, including matrix-vector products, using CUDA |
| matrix_operations_col.hpp | Implementations of column-major dense matrix related operations, including matrix-vector products, using CUDA |
| matrix_operations_prod.hpp | Dense matrix-matrix product CUDA kernels reside here |
| matrix_operations_row.hpp | Implementations of row-major dense matrix related operations, including matrix-vector products, using CUDA |
| misc_operations.hpp | Implementations of miscellaneous operations using CUDA |
| nmf_operations.hpp | |
| scalar_operations.hpp | Implementations of scalar operations using CUDA |
| sparse_matrix_operations.hpp | Implementations of operations using sparse matrices using CUDA |
| sparse_matrix_operations_solve.hpp | Implementations of direct triangular solvers for sparse matrices using CUDA |
| spgemm.hpp | |
| spgemm_rmerge.hpp | |
| vector_operations.hpp | Implementations of NMF operations using CUDA |
| ► detail | |
| ► amg | |
| amg_base.hpp | Helper classes and functions for the AMG preconditioner. Experimental |
| ► bisect | |
| bisect_kernel_calls.hpp | Kernel calls for the bisection algorithm |
| bisect_large.hpp | Computation of eigenvalues of a large symmetric, tridiagonal matrix |
| bisect_small.hpp | Computation of eigenvalues of a small symmetric, tridiagonal matrix |
| config.hpp | Global configuration parameters |
| gerschgorin.hpp | Computation of Gerschgorin interval for symmetric, tridiagonal matrix |
| structs.hpp | Helper structures to simplify variable handling |
| util.hpp | Utility functions |
| ► ilu | |
| block_ilu.hpp | Implementations of incomplete block factorization preconditioners |
| chow_patel_ilu.hpp | Implementations of incomplete factorization preconditioners with fine-grained parallelism |
| common.hpp | Common routines used within ILU-type preconditioners |
| ilu0.hpp | Implementations of incomplete factorization preconditioners with static nonzero pattern |
| ilut.hpp | Implementations of an incomplete factorization preconditioner with threshold (ILUT) |
| ► spai | |
| block_matrix.hpp | Implementation of a bunch of (small) matrices on GPU. Experimental |
| block_vector.hpp | Implementation of a bunch of vectors on GPU. Experimental |
| fspai.hpp | Implementation of FSPAI. Experimental |
| qr.hpp | Implementation of a simultaneous QR factorization of multiple matrices. Experimental |
| small_matrix.hpp | Implementation of a routines for small matrices (helper for SPAI). Experimental |
| spai-dynamic.hpp | Implementation of a dynamic SPAI. Provides the routines for automatic pattern updates Experimental |
| spai-static.hpp | Implementation of a static SPAI. Experimental |
| spai.hpp | Main implementation of SPAI (not FSPAI). Experimental |
| spai_tag.hpp | Implementation of the spai tag holding SPAI configuration parameters. Experimental |
| sparse_vector.hpp | Implementation of a helper sparse vector class for SPAI. Experimental |
| op_applier.hpp | Defines the action of certain unary and binary operators and its arguments (for host execution) |
| op_executor.hpp | Defines the worker class for decomposing an expression tree into small chunks, which can be processed by the predefined operations in ViennaCL |
| ► host_based | |
| amg_operations.hpp | Implementations of routines for AMG using the CPU on the host (with OpenMP if enabled) |
| common.hpp | Common routines for single-threaded or OpenMP-enabled execution on CPU |
| direct_solve.hpp | Implementations of dense direct triangular solvers are found here |
| fft_operations.hpp | Implementations of Fast Furier Transformation using a plain single-threaded or OpenMP-enabled execution on CPU |
| ilu_operations.hpp | Implementations of specialized routines for the Chow-Patel parallel ILU preconditioner using the host (OpenMP) |
| iterative_operations.hpp | Implementations of specialized kernels for fast iterative solvers using OpenMP on the CPU |
| matrix_operations.hpp | Implementations of dense matrix related operations, including matrix-vector products, using a plain single-threaded or OpenMP-enabled execution on CPU |
| misc_operations.hpp | Implementations of miscellaneous operations on the CPU using a single thread or OpenMP |
| nmf_operations.hpp | |
| scalar_operations.hpp | Implementations of scalar operations using a plain single-threaded or OpenMP-enabled execution on CPU |
| sparse_matrix_operations.hpp | Implementations of operations using sparse matrices on the CPU using a single thread or OpenMP |
| spgemm_vector.hpp | |
| vector_operations.hpp | Implementations of NMF operations using a plain single-threaded or OpenMP-enabled execution on CPU |
| ► opencl | |
| ► kernels | |
| amg.hpp | OpenCL kernel file for operations related to algebraic multigrid |
| bisect.hpp | OpenCL kernels for the bisection algorithm for eigenvalues |
| compressed_compressed_matrix.hpp | OpenCL kernel file for vector operations |
| compressed_matrix.hpp | OpenCL kernel file for compressed_matrix operations |
| coordinate_matrix.hpp | OpenCL kernel file for coordinate_matrix operations |
| ell_matrix.hpp | OpenCL kernel file for ell_matrix operations |
| fft.hpp | OpenCL kernel file for FFT operations |
| hyb_matrix.hpp | OpenCL kernel file for hyb_matrix operations |
| ilu.hpp | OpenCL kernel file for nonnegative matrix factorization |
| iterative.hpp | OpenCL kernel file for specialized iterative solver kernels |
| matrix.hpp | Runtime generation of OpenCL kernels for matrix operations |
| matrix_element.hpp | OpenCL kernel file for element-wise matrix operations |
| matrix_solve.hpp | OpenCL kernel file for dense matrix solves with multiple right hand side (BLAS level 3) |
| nmf.hpp | OpenCL kernel file for nonnegative matrix factorization |
| scalar.hpp | OpenCL kernel file for scalar operations |
| scan.hpp | OpenCL kernel file for scan operations. To be merged back to vector operations |
| sliced_ell_matrix.hpp | OpenCL kernel file for sliced_ell_matrix operations |
| spai.hpp | OpenCL kernel file for sparse approximate inverse operations |
| svd.hpp | OpenCL kernel file for singular value decomposition |
| vector.hpp | OpenCL kernel file for vector operations |
| vector_element.hpp | OpenCL kernel file for element-wise vector operations |
| amg_operations.hpp | Implementations of routines for AMG in OpenCL |
| bisect_kernel_calls.hpp | OpenCL kernel calls for the bisection algorithm |
| common.hpp | Common implementations shared by OpenCL-based operations |
| direct_solve.hpp | Implementations of dense direct solvers are found here |
| fft_operations.hpp | Implementations of Fast Furier Transformation using OpenCL |
| ilu_operations.hpp | Implementations of specialized routines for the Chow-Patel parallel ILU preconditioner using OpenCL |
| iterative_operations.hpp | Implementations of specialized kernels for fast iterative solvers using OpenCL |
| matrix_operations.hpp | Implementations of dense matrix related operations, including matrix-vector products, using OpenCL |
| misc_operations.hpp | Implementations of operations using compressed_matrix and OpenCL |
| nmf_operations.hpp | |
| scalar_operations.hpp | Implementations of scalar operations using OpenCL |
| sparse_matrix_operations.hpp | Implementations of operations using sparse matrices and OpenCL |
| vandermonde_matrix_operations.hpp | Implementations of operations using vandermonde_matrix |
| vector_operations.hpp | Implementations of NMF operations using OpenCL |
| amg.hpp | Main include file for algebraic multigrid (AMG) preconditioners. Experimental |
| amg_operations.hpp | Implementations of operations for algebraic multigrid |
| bicgstab.hpp | The stabilized bi-conjugate gradient method is implemented here |
| bisect.hpp | Implementation of the algorithm for finding eigenvalues of a tridiagonal matrix |
| bisect_gpu.hpp | Implementation of an bisection algorithm for eigenvalues |
| cg.hpp | The conjugate gradient method is implemented here |
| circulant_matrix_operations.hpp | Implementations of operations using circulant_matrix. Experimental |
| direct_solve.hpp | Implementations of dense direct solvers are found here |
| eig.hpp | Convenience header file including all available eigenvalue algorithms |
| fft_operations.hpp | Implementations of Fast Furier Transformation |
| gmres.hpp | Implementations of the generalized minimum residual method are in this file |
| hankel_matrix_operations.hpp | Implementations of operations using hankel_matrix. Experimental |
| ichol.hpp | Implementations of incomplete Cholesky factorization preconditioners with static nonzero pattern |
| ilu.hpp | Implementations of incomplete factorization preconditioners. Convenience header file |
| ilu_operations.hpp | Implementations of specialized routines for the Chow-Patel parallel ILU preconditioner |
| inner_prod.hpp | Generic interface for the computation of inner products. See viennacl/linalg/vector_operations.hpp for implementations |
| iterative_operations.hpp | Implementations of specialized routines for the iterative solvers |
| jacobi_precond.hpp | Implementation of a simple Jacobi preconditioner |
| lanczos.hpp | Generic interface for the Lanczos algorithm |
| lu.hpp | Implementations of LU factorization for row-major and column-major dense matrices |
| matrix_operations.hpp | Implementations of dense matrix related operations including matrix-vector products |
| maxmin.hpp | |
| misc_operations.hpp | Implementations of miscellaneous operations |
| mixed_precision_cg.hpp | The conjugate gradient method using mixed precision is implemented here. Experimental |
| nmf.hpp | Provides a nonnegative matrix factorization implementation. Experimental |
| norm_1.hpp | Generic interface for the l^1-norm. See viennacl/linalg/vector_operations.hpp for implementations |
| norm_2.hpp | Generic interface for the l^2-norm. See viennacl/linalg/vector_operations.hpp for implementations |
| norm_frobenius.hpp | Generic interface for the Frobenius norm |
| norm_inf.hpp | Generic interface for the l^infty-norm. See viennacl/linalg/vector_operations.hpp for implementations |
| power_iter.hpp | Defines a tag for the configuration of the power iteration method |
| prod.hpp | Generic interface for matrix-vector and matrix-matrix products. See viennacl/linalg/vector_operations.hpp, viennacl/linalg/matrix_operations.hpp, and viennacl/linalg/sparse_matrix_operations.hpp for implementations |
| qr-method-common.hpp | Common routines used for the QR method and SVD. Experimental |
| qr-method.hpp | Implementation of the QR method for eigenvalue computations. Experimental |
| qr.hpp | Provides a QR factorization using a block-based approach |
| row_scaling.hpp | A row normalization preconditioner is implemented here |
| scalar_operations.hpp | Implementations of scalar operations |
| spai.hpp | Main include file for the sparse approximate inverse preconditioner family (SPAI and FSPAI). Experimental |
| sparse_matrix_operations.hpp | Implementations of operations using sparse matrices |
| sum.hpp | Stub routines for the summation of elements in a vector, or all elements in either a row or column of a dense matrix |
| svd.hpp | Provides singular value decomposition using a block-based approach. Experimental |
| toeplitz_matrix_operations.hpp | Implementations of operations using toeplitz_matrix. Experimental |
| tql2.hpp | Implementation of the tql2-algorithm for eigenvalue computations |
| vandermonde_matrix_operations.hpp | Implementations of operations using vandermonde_matrix. Experimental |
| vector_operations.hpp | Implementations of vector operations |
| ► meta | |
| enable_if.hpp | Simple enable-if variant that uses the SFINAE pattern |
| predicate.hpp | All the predicates used within ViennaCL. Checks for expressions to be vectors, etc |
| result_of.hpp | A collection of compile time type deductions |
| tag_of.hpp | Dispatch facility for distinguishing between ublas, STL and ViennaCL types |
| ► misc | |
| bandwidth_reduction.hpp | Convenience include for bandwidth reduction algorithms such as Cuthill-McKee or Gibbs-Poole-Stockmeyer. Experimental |
| cuthill_mckee.hpp | Implementation of several flavors of the Cuthill-McKee algorithm. Experimental |
| gibbs_poole_stockmeyer.hpp | Implementation of the Gibbs-Poole-Stockmeyer algorithm. Experimental |
| ► ocl | |
| backend.hpp | Implementations of the OpenCL backend, where all contexts are stored in |
| command_queue.hpp | Implementations of command queue representations |
| context.hpp | Represents an OpenCL context within ViennaCL |
| device.hpp | Represents an OpenCL device within ViennaCL |
| device_utils.hpp | Various utility implementations for dispatching with respect to the different devices available on the market |
| enqueue.hpp | Enqueues kernels into command queues |
| error.hpp | Error handling for the OpenCL layer of ViennaCL |
| forwards.h | This file provides the forward declarations for the OpenCL layer of ViennaCL |
| handle.hpp | Implementation of a smart-pointer-like class for handling OpenCL handles |
| kernel.hpp | Representation of an OpenCL kernel in ViennaCL |
| local_mem.hpp | A local (shared) memory object for OpenCL |
| platform.hpp | Implements a OpenCL platform within ViennaCL |
| program.hpp | Implements an OpenCL program class for ViennaCL |
| utils.hpp | Provides OpenCL-related utilities |
| ► scheduler | |
| execute.hpp | Provides the datastructures for dealing with a single statement such as 'x = y + z;' |
| execute_axbx.hpp | Provides the datastructures for dealing with statements of the type x = (y) +- (z) |
| execute_elementwise.hpp | Deals with the execution of unary and binary element-wise operations |
| execute_generic_dispatcher.hpp | Provides unified wrappers for the common routines {as(), asbs(), asbs_s()}, {av(), avbv(), avbv_v()}, and {am(), ambm(), ambm_m()} such that scheduler logic is not cluttered with numeric type decutions |
| execute_matrix_dispatcher.hpp | Provides wrappers for am(), ambm(), ambm_m(), etc. in viennacl/linalg/matrix_operations.hpp such that scheduler logic is not cluttered with numeric type decutions |
| execute_matrix_prod.hpp | Deals with matrix-vector and matrix-matrix products |
| execute_scalar_assign.hpp | Deals with the execution of x = RHS; for a vector x and any compatible right hand side expression RHS |
| execute_scalar_dispatcher.hpp | Provides wrappers for as(), asbs(), asbs_s(), etc. in viennacl/linalg/scalar_operations.hpp such that scheduler logic is not cluttered with numeric type decutions |
| execute_util.hpp | Provides various utilities for implementing the execution of statements |
| execute_vector_dispatcher.hpp | Provides wrappers for av(), avbv(), avbv_v(), etc. in viennacl/linalg/vector_operations.hpp such that scheduler logic is not cluttered with numeric type decutions |
| forwards.h | Provides the datastructures for dealing with a single statement such as 'x = y + z;' |
| io.hpp | Some helper routines for reading/writing/printing scheduler expressions |
| preset.hpp | |
| ► tools | |
| adapter.hpp | Adapter classes for sparse matrices made of the STL type std::vector<std::map<SizeT, NumericT> > |
| entry_proxy.hpp | A proxy class for entries in a vector |
| matrix_generation.hpp | Helper routines for generating sparse matrices |
| matrix_size_deducer.hpp | Helper implementations that deduce the dimensions of the supplied matrix-valued expressions |
| random.hpp | A small collection of sequential random number generators |
| sha1.hpp | |
| shared_ptr.hpp | Implementation of a shared pointer class (cf. std::shared_ptr, boost::shared_ptr). Will be used until C++11 is widely available |
| timer.hpp | A simple, yet (mostly) sufficiently accurate timer for benchmarking and profiling |
| tools.hpp | Various little tools used here and there in ViennaCL |
| ► traits | |
| clear.hpp | Generic clear functionality for different vector and matrix types |
| context.hpp | Extracts the underlying context from objects |
| fill.hpp | Generic fill functionality for different matrix types |
| handle.hpp | Extracts the underlying OpenCL handle from a vector, a matrix, an expression etc |
| row_major.hpp | Determines whether a given expression has a row-major matrix layout |
| size.hpp | Generic size and resize functionality for different vector and matrix types |
| start.hpp | Extracts the underlying OpenCL start index handle from a vector, a matrix, an expression etc |
| stride.hpp | Determines row and column increments for matrices and matrix proxies |
| circulant_matrix.hpp | Implementation of the circulant_matrix class for efficient manipulation of circulant matrices. Experimental |
| compressed_compressed_matrix.hpp | Implementation of the compressed_compressed_matrix class (CSR format with a relatively small number of nonzero rows) |
| compressed_matrix.hpp | Implementation of the compressed_matrix class |
| context.hpp | Implementation of a OpenCL-like context, which serves as a unification of {OpenMP, CUDA, OpenCL} at the user API |
| coordinate_matrix.hpp | Implementation of the coordinate_matrix class |
| ell_matrix.hpp | Implementation of the ell_matrix class |
| fft.hpp | All routines related to the Fast Fourier Transform. Experimental |
| forwards.h | This file provides the forward declarations for the main types used within ViennaCL |
| hankel_matrix.hpp | Implementation of the hankel_matrix class for efficient manipulation of Hankel matrices. Experimental |
| hyb_matrix.hpp | Implementation of the hyb_matrix class |
| matrix.hpp | Implementation of the dense matrix class |
| matrix_proxy.hpp | Proxy classes for matrices |
| range.hpp | Implementation of a range object for use with proxy objects |
| scalar.hpp | Implementation of the ViennaCL scalar class |
| slice.hpp | Implementation of a slice object for use with proxy objects |
| sliced_ell_matrix.hpp | Implementation of the sliced_ell_matrix class |
| toeplitz_matrix.hpp | Implementation of the toeplitz_matrix class for efficient manipulation of Toeplitz matrices. Experimental |
| vandermonde_matrix.hpp | Implementation of the vandermonde_matrix class for efficient manipulation of Vandermonde matrices. Experimental |
| vector.hpp | The vector type with operator-overloads and proxy classes is defined here. Linear algebra operations such as norms and inner products are located in linalg/vector_operations.hpp |
| vector_proxy.hpp | Proxy classes for vectors |
| version.hpp | Provides version information for detecting different versions of ViennaCL |