• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

C++ viennacl::vector类代码示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

本文整理汇总了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;未经允许,请勿转载。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C++ viennacl::vector_base类代码示例发布时间:2022-05-31
下一篇:
C++ viennacl::matrix_expression类代码示例发布时间:2022-05-31
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap