1 #ifndef VIENNACL_LINALG_OPENCL_DIRECT_SOLVE_HPP
2 #define VIENNACL_LINALG_OPENCL_DIRECT_SOLVE_HPP
45 template <
typename M1,
typename M2,
typename KernelType>
53 viennacl::traits::opencl_handle(B),
74 template <
typename NumericT,
typename F1,
typename F2,
typename SOLVERTAG>
80 KernelClass::init(ctx);
83 ss << SOLVERTAG::name() <<
"_solve";
95 template <
typename NumericT,
typename F1,
typename F2,
typename SOLVERTAG>
103 KernelClass::init(ctx);
105 std::stringstream ss;
106 ss << SOLVERTAG::name() <<
"_trans_solve";
119 template <
typename NumericT,
typename F1,
typename F2,
typename SOLVERTAG>
127 KernelClass::init(ctx);
129 std::stringstream ss;
130 ss <<
"trans_" << SOLVERTAG::name() <<
"_solve";
142 template <
typename NumericT,
typename F1,
typename F2,
typename SOLVERTAG>
150 KernelClass::init(ctx);
152 std::stringstream ss;
153 ss <<
"trans_" << SOLVERTAG::name() <<
"_trans_solve";
166 template <
typename NumericT,
typename F,
typename SOLVERTAG>
174 KernelClass::init(ctx);
185 viennacl::traits::opencl_handle(vec),
199 template <
typename NumericT,
typename F,
typename SOLVERTAG>
207 KernelClass::init(ctx);
218 viennacl::traits::opencl_handle(vec),
viennacl::ocl::kernel & get_kernel(std::string const &program_name, std::string const &kernel_name)
Convenience function for retrieving the kernel of a program directly from the context.
Definition: context.hpp:470
result_of::size_type< matrix_base< NumericT, F > >::type stride2(matrix_base< NumericT, F > const &s)
Definition: stride.hpp:68
Represents an OpenCL device within ViennaCL.
Represents an OpenCL kernel within ViennaCL.
Definition: kernel.hpp:59
Implementation of the dense matrix class.
vcl_size_t size1(MatrixType const &mat)
Generic routine for obtaining the number of rows of a matrix (ViennaCL, uBLAS, etc.)
Definition: size.hpp:216
A tag class representing a lower triangular matrix.
Definition: forwards.h:703
Manages an OpenCL context and provides the respective convenience functions for creating buffers...
Definition: context.hpp:51
A dense matrix class.
Definition: forwards.h:290
Expression template class for representing a tree of expressions which ultimately result in a matrix...
Definition: forwards.h:283
result_of::size_type< viennacl::vector_base< T > >::type stride(viennacl::vector_base< T > const &s)
Definition: stride.hpp:46
result_of::size_type< T >::type start1(T const &obj)
Definition: start.hpp:64
cl_uint get_option_for_solver_tag(viennacl::linalg::upper_tag)
Definition: direct_solve.hpp:40
OpenCL kernel file for dense matrix solves with multiple right hand side (BLAS level 3) ...
void inplace_solve_impl(M1 const &A, M2 &B, KernelType &k)
Definition: direct_solve.hpp:46
result_of::size_type< MatrixType >::type size2(MatrixType const &mat)
Generic routine for obtaining the number of columns of a matrix (ViennaCL, uBLAS, etc...
Definition: size.hpp:245
size_type size2() const
Returns the number of columns.
Definition: matrix.hpp:627
result_of::size_type< matrix_base< NumericT, F > >::type stride1(matrix_base< NumericT, F > const &s)
Definition: stride.hpp:57
vcl_size_t size(VectorType const &vec)
Generic routine for obtaining the size of a vector (ViennaCL, uBLAS, etc.)
Definition: size.hpp:144
result_of::size_type< T >::type start2(T const &obj)
Definition: start.hpp:83
void enqueue(KernelType &k, viennacl::ocl::command_queue const &queue)
Enqueues a kernel in the provided queue.
Definition: enqueue.hpp:48
A tag class representing an upper triangular matrix.
Definition: forwards.h:708
Implementation of a smart-pointer-like class for handling OpenCL handles.
result_of::size_type< T >::type start(T const &obj)
Definition: start.hpp:43
Common base class for dense vectors, vector ranges, and vector slices.
Definition: forwards.h:205
Main kernel class for the generation of matrix solve kernels.
Definition: matrix_solve.hpp:134
vcl_size_t internal_size2(matrix_base< NumericT, F > const &mat)
Helper routine for obtaining the internal number of entries per column of a ViennaCL matrix...
Definition: size.hpp:287
void inplace_solve(const matrix_base< NumericT, F1 > &A, matrix_base< NumericT, F2 > &B, SOLVERTAG)
Direct inplace solver for dense triangular systems. Matlab notation: A \ B.
Definition: direct_solve.hpp:75
Main kernel class for generating OpenCL kernels for operations on/with dense matrix objects of type v...
Definition: matrix.hpp:877
viennacl::context context(T const &t)
Returns an ID for the currently active memory domain of an object.
Definition: context.hpp:41
Representation of an OpenCL kernel in ViennaCL.
The vector type with operator-overloads and proxy classes is defined here. Linear algebra operations ...
A tag class representing a lower triangular matrix with unit diagonal.
Definition: forwards.h:713
A tag class representing transposed matrices.
Definition: forwards.h:165
size_type global_work_size(int index=0) const
Returns the global work size at the respective dimension.
Definition: kernel.hpp:759
vcl_size_t internal_size1(matrix_base< NumericT, F > const &mat)
Helper routine for obtaining the internal number of entries per row of a ViennaCL matrix...
Definition: size.hpp:279
size_type local_work_size(int index=0) const
Returns the local work size at the respective dimension.
Definition: kernel.hpp:750
A tag class representing an upper triangular matrix with unit diagonal.
Definition: forwards.h:718