本文整理汇总了C++中matrix_expression类的典型用法代码示例。如果您正苦于以下问题:C++ matrix_expression类的具体用法?C++ matrix_expression怎么用?C++ matrix_expression使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了matrix_expression类的9个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: inplace_solve
typename viennacl::enable_if< viennacl::is_any_dense_nonstructured_matrix<M1>::value
&& viennacl::is_any_dense_nonstructured_vector<V1>::value
>::type
inplace_solve(const matrix_expression< const M1, const M1, op_trans> & proxy,
V1 & vec,
SOLVERTAG)
{
assert( (proxy.lhs().size1() == vec.size()) && bool("Size check failed in inplace_solve(): size1(A) != size(b)"));
assert( (proxy.lhs().size2() == vec.size()) && bool("Size check failed in inplace_solve(): size2(A) != size(b)"));
switch (viennacl::traits::handle(proxy.lhs()).get_active_handle_id())
{
case viennacl::MAIN_MEMORY:
viennacl::linalg::host_based::inplace_solve(proxy, vec, SOLVERTAG());
break;
#ifdef VIENNACL_WITH_OPENCL
case viennacl::OPENCL_MEMORY:
viennacl::linalg::opencl::inplace_solve(proxy, vec, SOLVERTAG());
break;
#endif
#ifdef VIENNACL_WITH_CUDA
case viennacl::CUDA_MEMORY:
viennacl::linalg::cuda::inplace_solve(proxy, vec, SOLVERTAG());
break;
#endif
default:
throw "not implemented";
}
}
开发者ID:AngeloTorelli,项目名称:CompuCell3D,代码行数:29,代码来源:direct_solve.hpp
示例2: inplace_solve
void inplace_solve(const matrix_expression< const matrix_base<NumericT>, const matrix_base<NumericT>, op_trans> & proxy,
vector_base<NumericT> & vec,
SOLVERTAG)
{
assert( (proxy.lhs().size1() == vec.size()) && bool("Size check failed in inplace_solve(): size1(A) != size(b)"));
assert( (proxy.lhs().size2() == vec.size()) && bool("Size check failed in inplace_solve(): size2(A) != size(b)"));
switch (viennacl::traits::handle(proxy.lhs()).get_active_handle_id())
{
case viennacl::MAIN_MEMORY:
viennacl::linalg::host_based::inplace_solve(proxy.lhs(), true, vec, SOLVERTAG());
break;
#ifdef VIENNACL_WITH_OPENCL
case viennacl::OPENCL_MEMORY:
viennacl::linalg::opencl::inplace_solve(proxy.lhs(), true, vec, SOLVERTAG());
break;
#endif
#ifdef VIENNACL_WITH_CUDA
case viennacl::CUDA_MEMORY:
viennacl::linalg::cuda::inplace_solve(proxy.lhs(), true, vec, SOLVERTAG());
break;
#endif
case viennacl::MEMORY_NOT_INITIALIZED:
throw memory_exception("not initialised!");
default:
throw memory_exception("not implemented");
}
}
开发者ID:GnsP,项目名称:viennacl-dev,代码行数:28,代码来源:direct_solve.hpp
示例3: block_inplace_solve
typename viennacl::enable_if< viennacl::is_any_sparse_matrix<SparseMatrixType>::value>::type
block_inplace_solve(const matrix_expression<const SparseMatrixType, const SparseMatrixType, op_trans> & mat,
viennacl::backend::mem_handle const & block_index_array, vcl_size_t num_blocks,
viennacl::vector_base<ScalarType> const & mat_diagonal,
viennacl::vector_base<ScalarType> & vec,
SOLVERTAG tag)
{
assert( (mat.size1() == mat.size2()) && bool("Size check failed for triangular solve on transposed compressed matrix: size1(mat) != size2(mat)"));
assert( (mat.size1() == vec.size()) && bool("Size check failed for transposed compressed matrix triangular solve: size1(mat) != size(x)"));
switch (viennacl::traits::handle(mat.lhs()).get_active_handle_id())
{
case viennacl::MAIN_MEMORY:
viennacl::linalg::host_based::detail::block_inplace_solve(mat, block_index_array, num_blocks, mat_diagonal, vec, tag);
break;
#ifdef VIENNACL_WITH_OPENCL
case viennacl::OPENCL_MEMORY:
viennacl::linalg::opencl::detail::block_inplace_solve(mat, block_index_array, num_blocks, mat_diagonal, vec, tag);
break;
#endif
#ifdef VIENNACL_WITH_CUDA
case viennacl::CUDA_MEMORY:
viennacl::linalg::cuda::detail::block_inplace_solve(mat, block_index_array, num_blocks, mat_diagonal, vec, tag);
break;
#endif
case viennacl::MEMORY_NOT_INITIALIZED:
throw memory_exception("not initialised!");
default:
throw memory_exception("not implemented");
}
}
开发者ID:GnsP,项目名称:viennacl-dev,代码行数:31,代码来源:sparse_matrix_operations.hpp
示例4: prod_impl
void prod_impl(const matrix_expression< const matrix_base<NumericT>, const matrix_base<NumericT>, op_trans> & mat_trans,
const vector_base<NumericT> & vec,
vector_base<NumericT> & result)
{
assert( (viennacl::traits::size1(mat_trans.lhs()) == viennacl::traits::size(vec)) && bool("Size check failed at v1 = trans(A) * v2: size1(A) != size(v2)"));
assert( (viennacl::traits::size2(mat_trans.lhs()) == viennacl::traits::size(result)) && bool("Size check failed at v1 = trans(A) * v2: size2(A) != size(v1)"));
switch (viennacl::traits::handle(mat_trans.lhs()).get_active_handle_id())
{
case viennacl::MAIN_MEMORY:
viennacl::linalg::host_based::prod_impl(mat_trans.lhs(), true, vec, result);
break;
#ifdef VIENNACL_WITH_OPENCL
case viennacl::OPENCL_MEMORY:
viennacl::linalg::opencl::prod_impl(mat_trans.lhs(), true, vec, result);
break;
#endif
#ifdef VIENNACL_WITH_CUDA
case viennacl::CUDA_MEMORY:
viennacl::linalg::cuda::prod_impl(mat_trans.lhs(), true, vec, result);
break;
#endif
case viennacl::MEMORY_NOT_INITIALIZED:
throw memory_exception("not initialised!");
default:
throw memory_exception("not implemented");
}
}
开发者ID:GnsP,项目名称:viennacl-dev,代码行数:28,代码来源:matrix_operations.hpp
示例5: solve
matrix<SCALARTYPE, F2, ALIGNMENT_B> solve(const matrix<SCALARTYPE, F1, ALIGNMENT_A> & A,
const matrix_expression< const matrix<SCALARTYPE, F2, ALIGNMENT_B>,
const matrix<SCALARTYPE, F2, ALIGNMENT_B>,
op_trans> & proxy,
TAG const & tag)
{
// do an inplace solve on the result vector:
matrix<SCALARTYPE, F2, ALIGNMENT_B> result(proxy.lhs().size2(), proxy.lhs().size1());
result = proxy;
inplace_solve(A, result, tag);
return result;
}
开发者ID:eugentorica,项目名称:ViennaCL-Image,代码行数:14,代码来源:direct_solve.hpp
示例6: inplace_solve
void inplace_solve(const matrix_expression< const matrix<SCALARTYPE, F, ALIGNMENT>,
const matrix<SCALARTYPE, F, ALIGNMENT>,
op_trans> & proxy,
vector<SCALARTYPE, VEC_ALIGNMENT> & vec,
SOLVERTAG)
{
assert(proxy.lhs().size1() == vec.size());
assert(proxy.lhs().size2() == vec.size());
typedef typename viennacl::tools::MATRIX_KERNEL_CLASS_DEDUCER< matrix<SCALARTYPE, F, ALIGNMENT> >::ResultType KernelClass;
std::stringstream ss;
ss << "trans_" << SOLVERTAG::name() << "_triangular_substitute_inplace";
viennacl::ocl::kernel & k = viennacl::ocl::get_kernel(KernelClass::program_name(), ss.str());
k.global_work_size(0, k.local_work_size());
viennacl::ocl::enqueue(k(proxy.lhs(), proxy.lhs().size1(), proxy.lhs().size2(),
proxy.lhs().internal_size1(), proxy.lhs().internal_size2(), vec));
}
开发者ID:eugentorica,项目名称:ViennaCL-Image,代码行数:19,代码来源:direct_solve.hpp
示例7: op_aliasing
bool op_aliasing(matrix_base<NumericT> const & lhs, matrix_expression<const LhsT, const RhsT, OpT> const & rhs)
{
return op_aliasing(lhs, rhs.lhs()) || op_aliasing(lhs, rhs.rhs());
}
开发者ID:10imaging,项目名称:viennacl,代码行数:4,代码来源:op_executor.hpp
示例8: row_major
bool row_major(matrix_expression<LHS, RHS, OP> const & proxy) { return viennacl::traits::row_major(proxy.lhs()); }
开发者ID:Rombur,项目名称:viennacl-dev,代码行数:1,代码来源:row_major.hpp
示例9: jacobian_determinant
[[nodiscard]] inline auto jacobian_determinant(matrix_expression const& jacobian)
{
return detail::jacobian_determinant(jacobian.eval());
}
开发者ID:dbeurle,项目名称:neon,代码行数:4,代码来源:jacobian_determinant.hpp
注:本文中的matrix_expression类示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论