本文整理汇总了C++中viennacl::vector类的典型用法代码示例。如果您正苦于以下问题:C++ vector类的具体用法?C++ vector怎么用?C++ vector使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了vector类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: init_random
void init_random(viennacl::vector<T> & x)
{
std::vector<T> cx(x.internal_size());
for (std::size_t i = 0; i < cx.size(); ++i)
cx[i] = T(rand())/T(RAND_MAX);
viennacl::fast_copy(&cx[0], &cx[0] + cx.size(), x.begin());
}
开发者ID:Franz-S,项目名称:SOC,代码行数:7,代码来源:main.cpp
示例2: diff_2
ScalarType diff_2(ublas::vector<ScalarType> & v1, viennacl::vector<ScalarType> & v2)
{
ublas::vector<ScalarType> v2_cpu(v2.size());
viennacl::copy(v2.begin(), v2.end(), v2_cpu.begin());
return norm_2(v1 - v2_cpu) / norm_2(v1);
}
开发者ID:jayavanth,项目名称:viennacl-dev,代码行数:7,代码来源:solver.cpp
示例3: diff
NumericT diff(std::vector<NumericT> const & v1, viennacl::vector<NumericT> const & v2)
{
std::vector<NumericT> v2_cpu(v2.size());
viennacl::backend::finish();
viennacl::copy(v2.begin(), v2.end(), v2_cpu.begin());
for (std::size_t i=0;i<v1.size(); ++i)
{
if ( std::max( std::fabs(v2_cpu[i]), std::fabs(v1[i]) ) > 0 )
v2_cpu[i] = std::fabs(v2_cpu[i] - v1[i]) / std::max( std::fabs(v2_cpu[i]), std::fabs(v1[i]) );
else
v2_cpu[i] = 0.0;
if (v2_cpu[i] > 0.0001)
{
//std::cout << "Neighbor: " << i-1 << ": " << v1[i-1] << " vs. " << v2_cpu[i-1] << std::endl;
std::cout << "Error at entry " << i << ": " << v1[i] << " vs. " << v2[i] << std::endl;
//std::cout << "Neighbor: " << i+1 << ": " << v1[i+1] << " vs. " << v2_cpu[i+1] << std::endl;
exit(EXIT_FAILURE);
}
}
NumericT inf_norm = 0;
for (std::size_t i=0;i<v2_cpu.size(); ++i)
inf_norm = std::max<NumericT>(inf_norm, std::fabs(v2_cpu[i]));
return inf_norm;
}
开发者ID:10imaging,项目名称:viennacl,代码行数:28,代码来源:self_assign.cpp
示例4: diff
ScalarType diff(ublas::vector<ScalarType> & v1, viennacl::vector<ScalarType> & v2)
{
ublas::vector<ScalarType> v2_cpu(v2.size());
viennacl::backend::finish();
viennacl::copy(v2.begin(), v2.end(), v2_cpu.begin());
for (unsigned int i=0;i<v1.size(); ++i)
{
if ( std::max( std::fabs(v2_cpu[i]), std::fabs(v1[i]) ) > 0 )
{
//if (std::max( std::fabs(v2_cpu[i]), std::fabs(v1[i]) ) < 1e-10 ) //absolute tolerance (avoid round-off issues)
// v2_cpu[i] = 0;
//else
v2_cpu[i] = std::fabs(v2_cpu[i] - v1[i]) / std::max( std::fabs(v2_cpu[i]), std::fabs(v1[i]) );
}
else
v2_cpu[i] = 0.0;
if (v2_cpu[i] > 0.0001)
{
//std::cout << "Neighbor: " << i-1 << ": " << v1[i-1] << " vs. " << v2_cpu[i-1] << std::endl;
std::cout << "Error at entry " << i << ": " << v1[i] << " vs. " << v2_cpu[i] << std::endl;
//std::cout << "Neighbor: " << i+1 << ": " << v1[i+1] << " vs. " << v2_cpu[i+1] << std::endl;
exit(EXIT_FAILURE);
}
}
return norm_inf(v2_cpu);
}
开发者ID:denis14,项目名称:ViennaCL-1.5.2,代码行数:29,代码来源:scheduler_sparse.cpp
示例5: apply
void apply(viennacl::vector<ScalarType, ALIGNMENT> & vec) const
{
assert(system_matrix.size1() == vec.size());
//run kernel:
viennacl::ocl::kernel & k = viennacl::ocl::get_kernel(viennacl::linalg::kernels::vector<ScalarType, ALIGNMENT>::program_name(),
"diag_precond");
viennacl::ocl::enqueue( k(diag_A_inv, vec, static_cast<cl_uint>(vec.size())) );
}
开发者ID:eugentorica,项目名称:ViennaCL-Image,代码行数:10,代码来源:jacobi_precond.hpp
示例6: prod_impl
void prod_impl(const viennacl::hankel_matrix<SCALARTYPE, ALIGNMENT> & mat,
const viennacl::vector<SCALARTYPE, VECTOR_ALIGNMENT> & vec,
viennacl::vector<SCALARTYPE, VECTOR_ALIGNMENT> & result)
{
assert(mat.size1() == result.size());
assert(mat.size2() == vec.size());
prod_impl(mat.elements(), vec, result);
viennacl::detail::fft::reverse(result);
}
开发者ID:aokomoriuta,项目名称:ViennaCLFiles,代码行数:10,代码来源:hankel_matrix_operations.hpp
示例7: diff
ScalarType diff ( ublas::vector<ScalarType> & v1, viennacl::vector<ScalarType,Alignment> & v2 ) {
ublas::vector<ScalarType> v2_cpu ( v2.size() );
viennacl::copy( v2.begin(), v2.end(), v2_cpu.begin() );
for ( unsigned int i=0; i<v1.size(); ++i ) {
if ( std::max ( fabs ( v2_cpu[i] ), fabs ( v1[i] ) ) > 0 )
v2_cpu[i] = fabs ( v2_cpu[i] - v1[i] ) / std::max ( fabs ( v2_cpu[i] ), fabs ( v1[i] ) );
else
v2_cpu[i] = 0.0;
}
return norm_inf ( v2_cpu );
}
开发者ID:kyle-jhchen,项目名称:viennacl-dev,代码行数:11,代码来源:generator_blas1.cpp
示例8: prod_impl
void prod_impl(const viennacl::compressed_matrix<TYPE, ALIGNMENT> & mat,
const viennacl::vector<TYPE, VECTOR_ALIGNMENT> & vec,
viennacl::vector<TYPE, VECTOR_ALIGNMENT> & result,
size_t NUM_THREADS = 0)
{
assert(mat.size1() == result.size());
assert(mat.size2() == vec.size());
viennacl::ocl::kernel & k = viennacl::ocl::get_kernel(viennacl::linalg::kernels::compressed_matrix<TYPE, ALIGNMENT>::program_name(), "vec_mul");
viennacl::ocl::enqueue(k(mat.handle1(), mat.handle2(), mat.handle(), vec, result, static_cast<cl_uint>(mat.size1())));
}
开发者ID:KratosCSIC,项目名称:trunk,代码行数:12,代码来源:compressed_matrix_operations.hpp
示例9: bisect
bool
bisect(const viennacl::vector<NumericT> & diagonal, const viennacl::vector<NumericT> & superdiagonal, viennacl::vector<NumericT> & eigenvalues)
{
assert(diagonal.size() == superdiagonal.size() &&
diagonal.size() == eigenvalues.size() &&
bool("Input vectors do not have the same sizes!"));
bool bResult = false;
// flag if the matrix size is due to explicit user request
// desired precision of eigenvalues
NumericT precision = static_cast<NumericT>(0.00001);
const unsigned int mat_size = static_cast<unsigned int>(diagonal.size());
// set up input
viennacl::linalg::detail::InputData<NumericT> input(diagonal, superdiagonal, mat_size);
NumericT lg = FLT_MAX;
NumericT ug = -FLT_MAX;
// compute Gerschgorin interval
viennacl::linalg::detail::computeGerschgorin(input.std_a, input.std_b, mat_size, lg, ug);
// decide wheter the algorithm for small or for large matrices will be started
if (mat_size <= VIENNACL_BISECT_MAX_SMALL_MATRIX)
{
// initialize memory for result
viennacl::linalg::detail::ResultDataSmall<NumericT> result(mat_size);
// run the kernel
viennacl::linalg::detail::computeEigenvaluesSmallMatrix(input, result, mat_size, lg, ug, precision);
// get the result from the device and do some sanity checks,
viennacl::linalg::detail::processResultSmallMatrix(result, mat_size);
copy(result.std_eigenvalues, eigenvalues);
bResult = true;
}
else
{
// initialize memory for result
viennacl::linalg::detail::ResultDataLarge<NumericT> result(mat_size);
// run the kernel
viennacl::linalg::detail::computeEigenvaluesLargeMatrix(input, result, mat_size, lg, ug, precision);
// get the result from the device and do some sanity checks
bResult = viennacl::linalg::detail::processResultDataLargeMatrix(result, mat_size);
copy(result.std_eigenvalues, eigenvalues);
}
return bResult;
}
开发者ID:Rombur,项目名称:viennacl-dev,代码行数:50,代码来源:bisect_gpu.hpp
示例10: test_scan_values
static void test_scan_values(viennacl::vector<ScalarType> const & input,
viennacl::vector<ScalarType> & result,
bool is_inclusive_scan)
{
std::vector<ScalarType> host_input(input.size());
std::vector<ScalarType> host_result(result.size());
viennacl::copy(input, host_input);
viennacl::copy(result, host_result);
ScalarType sum = 0;
if (is_inclusive_scan)
{
for(viennacl::vcl_size_t i = 0; i < input.size(); i++)
{
sum += host_input[i];
host_input[i] = sum;
}
}
else
{
for(viennacl::vcl_size_t i = 0; i < input.size(); i++)
{
ScalarType tmp = host_input[i];
host_input[i] = sum;
sum += tmp;
}
}
for(viennacl::vcl_size_t i = 0; i < input.size(); i++)
{
if (host_input[i] != host_result[i])
{
std::cout << "Fail at vector index " << i << std::endl;
std::cout << " result[" << i << "] = " << host_result[i] << std::endl;
std::cout << " Reference = " << host_input[i] << std::endl;
if (i > 0)
{
std::cout << " previous result[" << i-1 << "] = " << host_result[i-1] << std::endl;
std::cout << " previous Reference = " << host_input[i-1] << std::endl;
}
exit(EXIT_FAILURE);
}
}
std::cout << "PASSED!" << std::endl;
}
开发者ID:Rombur,项目名称:viennacl-dev,代码行数:48,代码来源:scan.cpp
示例11: split_calc_distance
void split_calc_distance(std::vector<double>& to_sort,viennacl::ocl::context* p_context, int num_splits, naive_knn& knn, viennacl::vector<double>& distances, dense_sliding_window& sliding_window, int num_instances, viennacl::vector<double>& sample)
{
int len = num_instances / num_splits;
auto gpu_begin = distances.begin();
auto gpu_end = gpu_begin + len;
int last = num_instances - len * num_splits;
int current = 0;
knn.calc_distance(distances, sliding_window, current, current+len, sample);
current += len;
for (; current < num_instances; current += len)
{
p_context->get_queue().finish();
viennacl::copy(gpu_begin, gpu_end, to_sort.begin());
knn.calc_distance(distances, sliding_window, current, current+len, sample);
std::sort(to_sort.begin(), to_sort.end());
}
p_context->get_queue().finish();
viennacl::copy(gpu_begin, gpu_end, to_sort.begin());
std::sort(to_sort.begin(), to_sort.end());
if (last > 0)
{
//knn.calc_distance(distances, sliding_window, current -len, current + last, sample);
}
}
开发者ID:vpa1977,项目名称:smalltests,代码行数:27,代码来源:distance.cpp
示例12: init_vector
static void init_vector(viennacl::vector<ScalarType>& vcl_v)
{
std::vector<ScalarType> v(vcl_v.size());
for (std::size_t i = 0; i < v.size(); ++i)
v[i] = ScalarType(i % 7 + 1);
viennacl::copy(v, vcl_v);
}
开发者ID:Rombur,项目名称:viennacl-dev,代码行数:7,代码来源:scan.cpp
示例13: diff
ScalarType diff(ublas::vector<ScalarType> & v1, viennacl::vector<ScalarType> & v2)
{
ublas::vector<ScalarType> v2_cpu(v2.size());
viennacl::backend::finish(); //workaround for a bug in APP SDK 2.7 on Trinity APUs (with Catalyst 12.8)
viennacl::copy(v2.begin(), v2.end(), v2_cpu.begin());
for (std::size_t i=0;i<v1.size(); ++i)
{
if ( std::max( std::fabs(v2_cpu[i]), std::fabs(v1[i]) ) > 0 )
v2_cpu[i] = std::fabs(v2_cpu[i] - v1[i]) / std::max( std::fabs(v2_cpu[i]), std::fabs(v1[i]) );
else
v2_cpu[i] = 0.0;
}
return norm_inf(v2_cpu);
}
开发者ID:GnsP,项目名称:viennacl-dev,代码行数:16,代码来源:blas3_prod_float_double.hpp
示例14: prepare_householder_vector
void prepare_householder_vector(
viennacl::matrix<SCALARTYPE, row_major, ALIGNMENT>& A,
viennacl::vector<SCALARTYPE, ALIGNMENT>& D,
vcl_size_t size,
vcl_size_t row_start,
vcl_size_t col_start,
vcl_size_t start,
bool is_column
)
{
boost::numeric::ublas::vector<SCALARTYPE> tmp = boost::numeric::ublas::scalar_vector<SCALARTYPE>(size, 0);
copy_vec(A, D, row_start, col_start, is_column);
fast_copy(D.begin(), D.begin() + vcl_ptrdiff_t(size - start), tmp.begin() + start);
//std::cout << "1: " << tmp << "\n";
detail::householder_vector(tmp, start);
fast_copy(tmp, D);
//std::cout << "2: " << D << "\n";
}
开发者ID:andiselinger,项目名称:ViennaCL-1.5.2,代码行数:22,代码来源:qr-method-common.hpp
示例15: apply
void apply(viennacl::vector<NumericT> & vec) const
{
if (vec.handle().get_active_handle_id() != viennacl::MAIN_MEMORY)
{
if (tag_.use_level_scheduling())
{
//std::cout << "Using multifrontal on GPU..." << std::endl;
detail::level_scheduling_substitute(vec,
multifrontal_L_row_index_arrays_,
multifrontal_L_row_buffers_,
multifrontal_L_col_buffers_,
multifrontal_L_element_buffers_,
multifrontal_L_row_elimination_num_list_);
vec = viennacl::linalg::element_div(vec, multifrontal_U_diagonal_);
detail::level_scheduling_substitute(vec,
multifrontal_U_row_index_arrays_,
multifrontal_U_row_buffers_,
multifrontal_U_col_buffers_,
multifrontal_U_element_buffers_,
multifrontal_U_row_elimination_num_list_);
}
else
{
viennacl::context host_context(viennacl::MAIN_MEMORY);
viennacl::context old_context = viennacl::traits::context(vec);
viennacl::switch_memory_context(vec, host_context);
viennacl::linalg::inplace_solve(LU_, vec, unit_lower_tag());
viennacl::linalg::inplace_solve(LU_, vec, upper_tag());
viennacl::switch_memory_context(vec, old_context);
}
}
else //apply ILUT directly:
{
viennacl::linalg::inplace_solve(LU_, vec, unit_lower_tag());
viennacl::linalg::inplace_solve(LU_, vec, upper_tag());
}
}
开发者ID:andiselinger,项目名称:viennacl-dev,代码行数:39,代码来源:ilut.hpp
示例16: apply
static void apply(::viennacl::vector<V> &x)
{
x.clear();
}
开发者ID:ttnghia,项目名称:amgcl,代码行数:4,代码来源:viennacl.hpp
示例17: same_size
static bool same_size( const viennacl::vector< T > &x1 , const viennacl::vector< T > &x2 )
{
return x1.size() == x2.size();
}
开发者ID:HRZaheri,项目名称:batch-informed-trees,代码行数:4,代码来源:viennacl_resize.hpp
示例18: resize
static void resize( viennacl::vector< T > &x1 , const viennacl::vector< T > &x2 )
{
x1.resize( x2.size() , false );
}
开发者ID:HRZaheri,项目名称:batch-informed-trees,代码行数:4,代码来源:viennacl_resize.hpp
示例19: fill_vector
void fill_vector(viennacl::vector<NumericT> & vec)
{
for (std::size_t i = 0; i < vec.size(); ++i)
vec(i) = NumericT(1.0) + NumericT(2.0) * random<NumericT>(); //some extra weight on diagonal for stability
}
开发者ID:andiselinger,项目名称:viennacl-dev,代码行数:5,代码来源:direct_solve.cpp
示例20: clear
void clear(viennacl::vector<ScalarType, AlignmentV> & vec)
{
vec.clear();
}
开发者ID:10imaging,项目名称:viennacl,代码行数:4,代码来源:clear.hpp
注:本文中的viennacl::vector类示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论