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

Implementations of NMF operations using OpenCL. More...

Go to the source code of this file.

Namespaces

 viennacl
 Main namespace in ViennaCL. Holds all the basic types such as vector, matrix, etc. and defines operations upon them.
 
 viennacl::linalg
 Provides all linear algebra operations which are not covered by operator overloads.
 
 viennacl::linalg::opencl
 Holds all routines providing OpenCL linear algebra operations.
 
 viennacl::linalg::opencl::detail
 Helper functions for OpenCL-accelerated linear algebra operations.
 

Functions

template<typename DestNumericT , typename SrcNumericT >
void viennacl::linalg::opencl::convert (vector_base< DestNumericT > &dest, vector_base< SrcNumericT > const &src)
 
template<typename T , typename ScalarType1 >
void viennacl::linalg::opencl::av (vector_base< T > &vec1, vector_base< T > const &vec2, ScalarType1 const &alpha, vcl_size_t len_alpha, bool reciprocal_alpha, bool flip_sign_alpha)
 
template<typename T , typename ScalarType1 , typename ScalarType2 >
void viennacl::linalg::opencl::avbv (vector_base< T > &vec1, vector_base< T > const &vec2, ScalarType1 const &alpha, vcl_size_t len_alpha, bool reciprocal_alpha, bool flip_sign_alpha, vector_base< T > const &vec3, ScalarType2 const &beta, vcl_size_t len_beta, bool reciprocal_beta, bool flip_sign_beta)
 
template<typename T , typename ScalarType1 , typename ScalarType2 >
void viennacl::linalg::opencl::avbv_v (vector_base< T > &vec1, vector_base< T > const &vec2, ScalarType1 const &alpha, vcl_size_t len_alpha, bool reciprocal_alpha, bool flip_sign_alpha, vector_base< T > const &vec3, ScalarType2 const &beta, vcl_size_t len_beta, bool reciprocal_beta, bool flip_sign_beta)
 
template<typename T >
void viennacl::linalg::opencl::vector_assign (vector_base< T > &vec1, const T &alpha, bool up_to_internal_size=false)
 Assign a constant value to a vector (-range/-slice) More...
 
template<typename T >
void viennacl::linalg::opencl::vector_swap (vector_base< T > &vec1, vector_base< T > &vec2)
 Swaps the contents of two vectors, data is copied. More...
 
template<typename T , typename OP >
void viennacl::linalg::opencl::element_op (vector_base< T > &vec1, vector_expression< const vector_base< T >, const vector_base< T >, op_element_binary< OP > > const &proxy)
 Implementation of the element-wise operation v1 = v2 .* v3 and v1 = v2 ./ v3 (using MATLAB syntax) More...
 
template<typename T , typename OP >
void viennacl::linalg::opencl::element_op (vector_base< T > &vec1, vector_expression< const vector_base< T >, const vector_base< T >, op_element_unary< OP > > const &proxy)
 Implementation of unary element-wise operations v1 = OP(v2) More...
 
template<typename T >
void viennacl::linalg::opencl::inner_prod_impl (vector_base< T > const &vec1, vector_base< T > const &vec2, vector_base< T > &partial_result)
 Computes the partial inner product of two vectors - implementation. Library users should call inner_prod(vec1, vec2). More...
 
template<typename T >
void viennacl::linalg::opencl::inner_prod_impl (vector_base< T > const &vec1, vector_base< T > const &vec2, scalar< T > &result)
 Computes the inner product of two vectors - implementation. Library users should call inner_prod(vec1, vec2). More...
 
template<typename NumericT >
viennacl::ocl::packed_cl_uint viennacl::linalg::opencl::detail::make_layout (vector_base< NumericT > const &vec)
 
template<typename NumericT >
void viennacl::linalg::opencl::inner_prod_impl (vector_base< NumericT > const &x, vector_tuple< NumericT > const &vec_tuple, vector_base< NumericT > &result)
 Computes multiple inner products where one argument is common to all inner products. <x, y1>, <x, y2>, ..., <x, yN> More...
 
template<typename T >
void viennacl::linalg::opencl::inner_prod_cpu (vector_base< T > const &vec1, vector_base< T > const &vec2, T &result)
 Computes the inner product of two vectors - implementation. Library users should call inner_prod(vec1, vec2). More...
 
template<typename T >
void viennacl::linalg::opencl::norm_reduction_impl (vector_base< T > const &vec, vector_base< T > &partial_result, cl_uint norm_id)
 Computes the partial work group results for vector norms. More...
 
template<typename T >
void viennacl::linalg::opencl::norm_1_impl (vector_base< T > const &vec, scalar< T > &result)
 Computes the l^1-norm of a vector. More...
 
template<typename T >
void viennacl::linalg::opencl::norm_1_cpu (vector_base< T > const &vec, T &result)
 Computes the l^1-norm of a vector with final reduction on CPU. More...
 
template<typename T >
void viennacl::linalg::opencl::norm_2_impl (vector_base< T > const &vec, scalar< T > &result)
 Computes the l^2-norm of a vector - implementation using OpenCL summation at second step. More...
 
template<typename T >
void viennacl::linalg::opencl::norm_2_cpu (vector_base< T > const &vec, T &result)
 Computes the l^1-norm of a vector with final reduction on CPU. More...
 
template<typename T >
void viennacl::linalg::opencl::norm_inf_impl (vector_base< T > const &vec, scalar< T > &result)
 Computes the supremum-norm of a vector. More...
 
template<typename T >
void viennacl::linalg::opencl::norm_inf_cpu (vector_base< T > const &vec, T &result)
 Computes the supremum-norm of a vector. More...
 
template<typename T >
cl_uint viennacl::linalg::opencl::index_norm_inf (vector_base< T > const &vec)
 Computes the index of the first entry that is equal to the supremum-norm in modulus. More...
 
template<typename NumericT >
void viennacl::linalg::opencl::max_impl (vector_base< NumericT > const &x, scalar< NumericT > &result)
 Computes the maximum value of a vector, where the result is stored in an OpenCL buffer. More...
 
template<typename NumericT >
void viennacl::linalg::opencl::max_cpu (vector_base< NumericT > const &x, NumericT &result)
 Computes the maximum value of a vector, where the value is stored in a host value. More...
 
template<typename NumericT >
void viennacl::linalg::opencl::min_impl (vector_base< NumericT > const &x, scalar< NumericT > &result)
 Computes the minimum of a vector, where the result is stored in an OpenCL buffer. More...
 
template<typename NumericT >
void viennacl::linalg::opencl::min_cpu (vector_base< NumericT > const &x, NumericT &result)
 Computes the minimum of a vector, where the result is stored on a CPU scalar. More...
 
template<typename NumericT >
void viennacl::linalg::opencl::sum_impl (vector_base< NumericT > const &x, scalar< NumericT > &result)
 Computes the sum over all entries of a vector. More...
 
template<typename NumericT >
void viennacl::linalg::opencl::sum_cpu (vector_base< NumericT > const &x, NumericT &result)
 Computes the sum over all entries of a vector. More...
 
template<typename T >
void viennacl::linalg::opencl::plane_rotation (vector_base< T > &vec1, vector_base< T > &vec2, T alpha, T beta)
 Computes a plane rotation of two vectors. More...
 
template<typename NumericT >
void viennacl::linalg::opencl::detail::scan_impl (vector_base< NumericT > const &input, vector_base< NumericT > &output, bool is_inclusive)
 Worker routine for scan routines using OpenCL. More...
 
template<typename NumericT >
void viennacl::linalg::opencl::inclusive_scan (vector_base< NumericT > const &input, vector_base< NumericT > &output)
 This function implements an inclusive scan using CUDA. More...
 
template<typename NumericT >
void viennacl::linalg::opencl::exclusive_scan (vector_base< NumericT > const &input, vector_base< NumericT > &output)
 This function implements an exclusive scan using CUDA. More...
 

Detailed Description

Implementations of NMF operations using OpenCL.

Implementations of vector operations using OpenCL.

Definition in file vector_operations.hpp.