All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
viennacl::linalg::opencl::detail Namespace Reference

Helper functions for OpenCL-accelerated linear algebra operations. More...

## Functions

cl_uint | make_options (vcl_size_t length, bool reciprocal, bool flip_sign)
std::string | sparse_dense_matmult_kernel_name (bool B_transposed, bool B_row_major, bool C_row_major)
| Returns the OpenCL kernel string for the operation C = A * B with A sparse, B, C dense matrices. More...
template<typename SomeT >
ocl::device const & | current_device (SomeT const &obj)
std::string | op_to_string (op_abs)
std::string | op_to_string (op_acos)
std::string | op_to_string (op_asin)
std::string | op_to_string (op_atan)
std::string | op_to_string (op_ceil)
std::string | op_to_string (op_cos)
std::string | op_to_string (op_cosh)
std::string | op_to_string (op_exp)
std::string | op_to_string (op_fabs)
std::string | op_to_string (op_floor)
std::string | op_to_string (op_log)
std::string | op_to_string (op_log10)
std::string | op_to_string (op_sin)
std::string | op_to_string (op_sinh)
std::string | op_to_string (op_sqrt)
std::string | op_to_string (op_tan)
std::string | op_to_string (op_tanh)
cl_uint | get_option_for_solver_tag (viennacl::linalg::upper_tag)
cl_uint | get_option_for_solver_tag (viennacl::linalg::unit_upper_tag)
cl_uint | get_option_for_solver_tag (viennacl::linalg::lower_tag)
cl_uint | get_option_for_solver_tag (viennacl::linalg::unit_lower_tag)
template<typename MatrixT1 , typename MatrixT2 , typename KernelT >
void | inplace_solve_impl (MatrixT1 const &A, MatrixT2 &B, KernelT &k)
template<typename NumericT >
viennacl::ocl::kernel & | kernel_for_matrix (matrix_base< NumericT > const &M, std::string const &kernel_name)
template<typename NumericT >
viennacl::ocl::kernel & | element_kernel_for_matrix (matrix_base< NumericT > const &M, std::string const &kernel_name)
template<typename NumericT >
viennacl::ocl::kernel & | legacy_kernel_for_matrix (matrix_base< NumericT > const &M, std::string const &kernel_name)
template<typename NumericT >
void | level_scheduling_substitute (vector< NumericT > &x, viennacl::backend::mem_handle const &row_index_array, viennacl::backend::mem_handle const &row_buffer, viennacl::backend::mem_handle const &col_buffer, viennacl::backend::mem_handle const &element_buffer, vcl_size_t num_rows)
template<typename NumericT , unsigned int AlignmentV>
void | row_info (compressed_matrix< NumericT, AlignmentV > const &A, vector_base< NumericT > &x, viennacl::linalg::detail::row_info_types info_selector)
template<typename NumericT , unsigned int AlignmentV>
void | block_inplace_solve (const matrix_expression< const compressed_matrix< NumericT, AlignmentV >, const compressed_matrix< NumericT, AlignmentV >, op_trans > &L, viennacl::backend::mem_handle const &block_indices, vcl_size_t num_blocks, vector_base< NumericT > const &, vector_base< NumericT > &x, viennacl::linalg::unit_lower_tag)
template<typename NumericT , unsigned int AlignmentV>
void | block_inplace_solve (matrix_expression< const compressed_matrix< NumericT, AlignmentV >, const compressed_matrix< NumericT, AlignmentV >, op_trans > const &U, viennacl::backend::mem_handle const &block_indices, vcl_size_t num_blocks, vector_base< NumericT > const &U_diagonal, vector_base< NumericT > &x, viennacl::linalg::upper_tag)
template<typename NumericT , unsigned int AlignmentV>
void | row_info (coordinate_matrix< NumericT, AlignmentV > const &A, vector_base< NumericT > &x, viennacl::linalg::detail::row_info_types info_selector)
template<typename NumericT >
viennacl::ocl::packed_cl_uint | make_layout (vector_base< NumericT > const &vec)
template<typename NumericT >
void | scan_impl (vector_base< NumericT > const &input, vector_base< NumericT > &output, bool is_inclusive)
| Worker routine for scan routines using OpenCL. More...

## Detailed Description

Helper functions for OpenCL-accelerated linear algebra operations.

## Function Documentation

template<typename NumericT , unsigned int AlignmentV>

void viennacl::linalg::opencl::detail::block_inplace_solve | ( | const matrix_expression< const compressed_matrix< NumericT, AlignmentV >, const compressed_matrix< NumericT, AlignmentV >, op_trans > & | L,
|  | viennacl::backend::mem_handle const & | block_indices,
|  | vcl_size_t | num_blocks,
|  | vector_base< NumericT > const & | ,
|  | vector_base< NumericT > & | x,
|  | viennacl::linalg::unit_lower_tag |
| ) |  |

Definition at line 483 of file sparse_matrix_operations.hpp.

template<typename NumericT , unsigned int AlignmentV>

void viennacl::linalg::opencl::detail::block_inplace_solve | ( | matrix_expression< const compressed_matrix< NumericT, AlignmentV >, const compressed_matrix< NumericT, AlignmentV >, op_trans > const & | U,
|  | viennacl::backend::mem_handle const & | block_indices,
|  | vcl_size_t | num_blocks,
|  | vector_base< NumericT > const & | U_diagonal,
|  | vector_base< NumericT > & | x,
|  | viennacl::linalg::upper_tag |
| ) |  |

Definition at line 506 of file sparse_matrix_operations.hpp.

template<typename SomeT >

ocl::device const& viennacl::linalg::opencl::detail::current_device | ( | SomeT const & | obj | ) |

Definition at line 76 of file common.hpp.

template<typename NumericT >

viennacl::ocl::kernel& viennacl::linalg::opencl::detail::element_kernel_for_matrix | ( | matrix_base< NumericT > const & | M,
|  | std::string const & | kernel_name
| ) |  |

Definition at line 80 of file matrix_operations.hpp.

cl_uint viennacl::linalg::opencl::detail::get_option_for_solver_tag | ( | viennacl::linalg::upper_tag |  | ) |

inline

Definition at line 42 of file direct_solve.hpp.

cl_uint viennacl::linalg::opencl::detail::get_option_for_solver_tag | ( | viennacl::linalg::unit_upper_tag |  | ) |

inline

Definition at line 43 of file direct_solve.hpp.

cl_uint viennacl::linalg::opencl::detail::get_option_for_solver_tag | ( | viennacl::linalg::lower_tag |  | ) |

inline

Definition at line 44 of file direct_solve.hpp.

cl_uint viennacl::linalg::opencl::detail::get_option_for_solver_tag | ( | viennacl::linalg::unit_lower_tag |  | ) |

inline

Definition at line 45 of file direct_solve.hpp.

template<typename MatrixT1 , typename MatrixT2 , typename KernelT >

void viennacl::linalg::opencl::detail::inplace_solve_impl | ( | MatrixT1 const & | A,
|  | MatrixT2 & | B,
|  | KernelT & | k
| ) |  |

Definition at line 48 of file direct_solve.hpp.

template<typename NumericT >

viennacl::ocl::kernel& viennacl::linalg::opencl::detail::kernel_for_matrix | ( | matrix_base< NumericT > const & | M,
|  | std::string const & | kernel_name
| ) |  |

Definition at line 60 of file matrix_operations.hpp.

template<typename NumericT >

viennacl::ocl::kernel& viennacl::linalg::opencl::detail::legacy_kernel_for_matrix | ( | matrix_base< NumericT > const & | M,
|  | std::string const & | kernel_name
| ) |  |

Definition at line 100 of file matrix_operations.hpp.

template<typename NumericT >

void viennacl::linalg::opencl::detail::level_scheduling_substitute | ( | vector< NumericT > & | x,
|  | viennacl::backend::mem_handle const & | row_index_array,
|  | viennacl::backend::mem_handle const & | row_buffer,
|  | viennacl::backend::mem_handle const & | col_buffer,
|  | viennacl::backend::mem_handle const & | element_buffer,
|  | vcl_size_t | num_rows
| ) |  |

Definition at line 45 of file misc_operations.hpp.

template<typename NumericT >

viennacl::ocl::packed_cl_uint viennacl::linalg::opencl::detail::make_layout | ( | vector_base< NumericT > const & | vec | ) |

Definition at line 470 of file vector_operations.hpp.

cl_uint viennacl::linalg::opencl::detail::make_options | ( | vcl_size_t | length,
|  | bool | reciprocal,
|  | bool | flip_sign
| ) |  |

inline

Definition at line 42 of file common.hpp.

std::string viennacl::linalg::opencl::detail::op_to_string | ( | op_abs |  | ) |

inline

Definition at line 78 of file common.hpp.

std::string viennacl::linalg::opencl::detail::op_to_string | ( | op_acos |  | ) |

inline

Definition at line 79 of file common.hpp.

std::string viennacl::linalg::opencl::detail::op_to_string | ( | op_asin |  | ) |

inline

Definition at line 80 of file common.hpp.

std::string viennacl::linalg::opencl::detail::op_to_string | ( | op_atan |  | ) |

inline

Definition at line 81 of file common.hpp.

std::string viennacl::linalg::opencl::detail::op_to_string | ( | op_ceil |  | ) |

inline

Definition at line 82 of file common.hpp.

std::string viennacl::linalg::opencl::detail::op_to_string | ( | op_cos |  | ) |

inline

Definition at line 83 of file common.hpp.

std::string viennacl::linalg::opencl::detail::op_to_string | ( | op_cosh |  | ) |

inline

Definition at line 84 of file common.hpp.

std::string viennacl::linalg::opencl::detail::op_to_string | ( | op_exp |  | ) |

inline

Definition at line 85 of file common.hpp.

std::string viennacl::linalg::opencl::detail::op_to_string | ( | op_fabs |  | ) |

inline

Definition at line 86 of file common.hpp.

std::string viennacl::linalg::opencl::detail::op_to_string | ( | op_floor |  | ) |

inline

Definition at line 87 of file common.hpp.

std::string viennacl::linalg::opencl::detail::op_to_string | ( | op_log |  | ) |

inline

Definition at line 88 of file common.hpp.

std::string viennacl::linalg::opencl::detail::op_to_string | ( | op_log10 |  | ) |

inline

Definition at line 89 of file common.hpp.

std::string viennacl::linalg::opencl::detail::op_to_string | ( | op_sin |  | ) |

inline

Definition at line 90 of file common.hpp.

std::string viennacl::linalg::opencl::detail::op_to_string | ( | op_sinh |  | ) |

inline

Definition at line 91 of file common.hpp.

std::string viennacl::linalg::opencl::detail::op_to_string | ( | op_sqrt |  | ) |

inline

Definition at line 92 of file common.hpp.

std::string viennacl::linalg::opencl::detail::op_to_string | ( | op_tan |  | ) |

inline

Definition at line 93 of file common.hpp.

std::string viennacl::linalg::opencl::detail::op_to_string | ( | op_tanh |  | ) |

inline

Definition at line 94 of file common.hpp.

template<typename NumericT , unsigned int AlignmentV>

void viennacl::linalg::opencl::detail::row_info | ( | compressed_matrix< NumericT, AlignmentV > const & | A,
|  | vector_base< NumericT > & | x,
|  | viennacl::linalg::detail::row_info_types | info_selector
| ) |  |

Definition at line 56 of file sparse_matrix_operations.hpp.

template<typename NumericT , unsigned int AlignmentV>

void viennacl::linalg::opencl::detail::row_info | ( | coordinate_matrix< NumericT, AlignmentV > const & | A,
|  | vector_base< NumericT > & | x,
|  | viennacl::linalg::detail::row_info_types | info_selector
| ) |  |

Definition at line 701 of file sparse_matrix_operations.hpp.

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.

Note on performance: For non-in-place scans one could optimize away the temporary 'opencl_carries'-array. This, however, only provides small savings in the latency-dominated regime, yet would effectively double the amount of code to maintain.

Definition at line 1193 of file vector_operations.hpp.

std::string viennacl::linalg::opencl::detail::sparse_dense_matmult_kernel_name | ( | bool | B_transposed,
|  | bool | B_row_major,
|  | bool | C_row_major
| ) |  |

inline

Returns the OpenCL kernel string for the operation C = A * B with A sparse, B, C dense matrices.

Definition at line 49 of file common.hpp.