C++ ViennaCL中从std::vector到ublas::compressed_矩阵的转换
我希望做一些计算,并将结果雅可比矩阵NxN和右手边向量(n)传递给boost的ublas,最终传递给ViennaCL 使用copy()时向量没有问题,但是,矩阵被证明是困难的。任何帮助都将不胜感激C++ ViennaCL中从std::vector到ublas::compressed_矩阵的转换,c++,boost,ublas,viennacl,C++,Boost,Ublas,Viennacl,我希望做一些计算,并将结果雅可比矩阵NxN和右手边向量(n)传递给boost的ublas,最终传递给ViennaCL 使用copy()时向量没有问题,但是,矩阵被证明是困难的。任何帮助都将不胜感激 // Global Variables vector< vector<float> > Jacobian(0, vector<float>(0)); //Jacobian matrix vector<float> delta_PQ; //rhs //
// Global Variables
vector< vector<float> > Jacobian(0, vector<float>(0)); //Jacobian matrix
vector<float> delta_PQ; //rhs
//
// Set up some ublas objects
//
ublas::vector<ScalarType> rhs;
ublas::vector<ScalarType> result;
ublas::compressed_matrix<ScalarType> ublas_matrix;
using namespace boost::numeric;
typedef float ScalarType;
// Resize RHS from main program
resize_vector(rhs2, j_dimension);
ublas_matrix2.resize(j_dimension, j_dimension);
//copy content to GPU vector (recommended initialization)
copy(delta_PQ.begin(), delta_PQ.end(), rhs.begin()); //works
copy(Jacobian.begin(), Jacobian.end(), ublas_matrix); //won't compile
//全局变量
向量Jacobian(0,向量(0))//雅可比矩阵
矢量delta_-PQ//rhs
//
//设置一些ublas对象
//
ublas::矢量rhs;
向量结果;
ublas::压缩矩阵ublas\u矩阵;
使用名称空间boost::numeric;
typedef float ScalarType;
//从主程序调整RHS的大小
调整_向量的大小(rhs2,j_维度);
ublas_矩阵2.调整大小(j_维度,j_维度);
//将内容复制到GPU向量(建议初始化)
复制(delta_PQ.begin()、delta_PQ.end()、rhs.begin())//作品
复制(Jacobian.begin()、Jacobian.end()、ublas_矩阵)//不会编译
我尝试了许多变体并查看了文档:
此外,ViennaCL的例子对我也不适用:
在谷歌搜索了几个小时后,我决定在这里发布,希望其他人能破解它,让下一个人更容易找到它。为了结束这个循环,我想让大家知道我为解决我的问题做了什么。特别感谢卡尔·鲁普在维也纳的项目 或者,通过操作符()直接填充ublas矩阵,即 等等。根据值的顺序,直接填充ublas_矩阵可能比复制慢或快。根据经验,无论何时以“随机”方式写入条目,vector