本文整理汇总了C++中LocalVector::Ones方法的典型用法代码示例。如果您正苦于以下问题:C++ LocalVector::Ones方法的具体用法?C++ LocalVector::Ones怎么用?C++ LocalVector::Ones使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类LocalVector
的用法示例。
在下文中一共展示了LocalVector::Ones方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: main
int main(int argc, char* argv[]) {
if (argc == 1) {
std::cerr << argv[0] << " <matrix> [Num threads]" << std::endl;
exit(1);
}
init_paralution();
if (argc > 2) {
set_omp_threads_paralution(atoi(argv[2]));
}
info_paralution();
LocalVector<double> x;
LocalVector<double> rhs;
LocalMatrix<double> mat;
mat.ReadFileMTX(std::string(argv[1]));
mat.info();
x.Allocate("x", mat.get_nrow());
rhs.Allocate("rhs", mat.get_nrow());
x.info();
rhs.info();
rhs.Ones();
mat.Apply(rhs, &x);
std::cout << "dot=" << x.Dot(rhs) << std::endl;
mat.ConvertToELL();
mat.info();
mat.MoveToAccelerator();
x.MoveToAccelerator();
rhs.MoveToAccelerator();
mat.info();
rhs.Ones();
mat.Apply(rhs, &x);
std::cout << "dot=" << x.Dot(rhs) << std::endl;
stop_paralution();
return 0;
}
示例2: main
int main(int argc, char* argv[]) {
init_paralution();
info_paralution();
LocalVector<double> x;
LocalVector<double> rhs;
LocalStencil<double> stencil(Laplace2D);
stencil.SetGrid(100); // 100x100
x.Allocate("x", stencil.get_nrow());
rhs.Allocate("rhs", stencil.get_nrow());
// Linear Solver
CG<LocalStencil<double>, LocalVector<double>, double > ls;
rhs.Ones();
x.Zeros();
ls.SetOperator(stencil);
ls.Build();
stencil.info();
double tick, tack;
tick = paralution_time();
ls.Solve(rhs, &x);
tack = paralution_time();
std::cout << "Solver execution:" << (tack-tick)/1000000 << " sec" << std::endl;
ls.Clear();
stop_paralution();
return 0;
}
示例3: main
int main(int argc, char* argv[]) {
if (argc == 1) {
std::cerr << argv[0] << " <matrix> [Num threads]" << std::endl;
exit(1);
}
init_paralution();
if (argc > 2) {
set_omp_threads_paralution(atoi(argv[2]));
}
info_paralution();
LocalVector<double> x;
LocalVector<double> rhs;
LocalMatrix<double> mat;
mat.ReadFileMTX(std::string(argv[1]));
// Compute and apply (R)CMK ordering
LocalVector<int> cmk;
// mat.CMK(&cmk);
mat.RCMK(&cmk);
mat.Permute(cmk);
mat.MoveToAccelerator();
x.MoveToAccelerator();
rhs.MoveToAccelerator();
x.Allocate("x", mat.get_nrow());
rhs.Allocate("rhs", mat.get_nrow());
// Linear Solver
CG<LocalMatrix<double>, LocalVector<double>, double > ls;
// Preconditioner
ILU<LocalMatrix<double>, LocalVector<double>, double > p;
double tick, tack;
rhs.Ones();
x.Zeros();
ls.SetOperator(mat);
ls.SetPreconditioner(p);
ls.Build();
mat.info();
tick = paralution_time();
ls.Solve(rhs, &x);
tack = paralution_time();
std::cout << "Solver execution:" << (tack-tick)/1000000 << " sec" << std::endl;
// Revert CMK ordering on solution vector
x.PermuteBackward(cmk);
stop_paralution();
return 0;
}
示例4: main
int main(int argc, char* argv[]) {
if (argc == 1) {
std::cerr << argv[0] << " <matrix> [Num threads]" << std::endl;
exit(1);
}
init_paralution();
if (argc > 2) {
set_omp_threads_paralution(atoi(argv[2]));
}
info_paralution();
// int ii;
LocalVector<double> x;
LocalVector<double> rhs;
LocalMatrix<double> mat;
struct timeval ti1,ti2;//timer
mat.ReadFileMTX(std::string(argv[1]));
mat.info();
x.Allocate("x", mat.get_nrow());
rhs.Allocate("rhs", mat.get_nrow());
x.info();
rhs.info();
rhs.Ones();
gettimeofday(&ti1,NULL); /* read starttime in t1 */
mat.Apply(rhs, &x);
gettimeofday(&ti2,NULL); /* read endtime in t2 */
fflush(stderr);
fprintf(stderr, "\nTime cost host spmv code microseconds: %ld microseconds\n",
((ti2.tv_sec - ti1.tv_sec)*1000000L
+ti2.tv_usec) - ti1.tv_usec
);
std::cout << "\ndot=" << x.Dot(rhs) << std::endl;
mat.ConvertToBCSR();
mat.info();
mat.MoveToAccelerator();
x.MoveToAccelerator();
rhs.MoveToAccelerator();
mat.info();
rhs.Ones();
// exit(1);
gettimeofday(&ti1,NULL); /* read starttime in t1 */
mat.Apply(rhs, &x);
gettimeofday(&ti2,NULL); /* read endtime in t2 */
fflush(stderr);
fprintf(stderr, "\nTime cost for accelerator spmv microseconds: %ld microseconds\n",
((ti2.tv_sec - ti1.tv_sec)*1000000L
+ti2.tv_usec) - ti1.tv_usec
);
std::cout << "\ndot=" << x.Dot(rhs) << std::endl;
stop_paralution();
return 0;
}
示例5: main
int main(int argc, char* argv[]) {
if (argc == 1) {
std::cerr << argv[0] << " <matrix> [Num threads]" << std::endl;
exit(1);
}
init_paralution();
if (argc > 2) {
set_omp_threads_paralution(atoi(argv[2]));
}
info_paralution();
LocalVector<double> b, b_old, *b_k, *b_k1, *b_tmp;
LocalMatrix<double> mat;
mat.ReadFileMTX(std::string(argv[1]));
// Gershgorin spectrum approximation
double glambda_min, glambda_max;
// Power method spectrum approximation
double plambda_min, plambda_max;
// Maximum number of iteration for the power method
int iter_max = 10000;
double tick, tack;
// Gershgorin approximation of the eigenvalues
mat.Gershgorin(glambda_min, glambda_max);
std::cout << "Gershgorin : Lambda min = " << glambda_min
<< "; Lambda max = " << glambda_max << std::endl;
mat.MoveToAccelerator();
b.MoveToAccelerator();
b_old.MoveToAccelerator();
b.Allocate("b_k+1", mat.get_nrow());
b_k1 = &b;
b_old.Allocate("b_k", mat.get_nrow());
b_k = &b_old;
b_k->Ones();
mat.info();
tick = paralution_time();
// compute lambda max
for (int i=0; i<=iter_max; ++i) {
mat.Apply(*b_k, b_k1);
// std::cout << b_k1->Dot(*b_k) << std::endl;
b_k1->Scale(double(1.0)/b_k1->Norm());
b_tmp = b_k1;
b_k1 = b_k;
b_k = b_tmp;
}
// get lambda max (Rayleigh quotient)
mat.Apply(*b_k, b_k1);
plambda_max = b_k1->Dot(*b_k) ;
tack = paralution_time();
std::cout << "Power method (lambda max) execution:" << (tack-tick)/1000000 << " sec" << std::endl;
mat.AddScalarDiagonal(double(-1.0)*plambda_max);
b_k->Ones();
tick = paralution_time();
// compute lambda min
for (int i=0; i<=iter_max; ++i) {
mat.Apply(*b_k, b_k1);
// std::cout << b_k1->Dot(*b_k) + plambda_max << std::endl;
b_k1->Scale(double(1.0)/b_k1->Norm());
b_tmp = b_k1;
b_k1 = b_k;
b_k = b_tmp;
}
// get lambda min (Rayleigh quotient)
mat.Apply(*b_k, b_k1);
plambda_min = (b_k1->Dot(*b_k) + plambda_max);
//.........这里部分代码省略.........
示例6: main
int main(int argc, char* argv[]) {
if (argc == 1) {
std::cerr << argv[0] << " <matrix> <initial_guess> <rhs> [Num threads]" << std::endl;
exit(1);
}
init_paralution();
// if (argc > 4) {
// set_omp_threads_paralution(atoi(argv[]));
// }
set_omp_threads_paralution(8);
info_paralution();
struct timeval now;
double tick, tack, b,s, sol_norm, diff_norm, ones_norm;
double *phi_ptr=NULL;
int *bubmap_ptr=NULL, phisize, maxbmap, setlssd, lvst_offst;
int xdim, ydim, zdim, defvex_perdirec;
#ifdef BUBFLO
xdim=atoi(argv[5]);
setlssd=atoi(argv[6]);
defvex_perdirec=atoi(argv[7]);
lvst_offst=atoi(argv[8]);
phisize=(xdim+2*lvst_offst)*(ydim+2*lvst_offst)*(zdim+2*lvst_offst);
#endif
LocalVector<double> x;
LocalVector<double> rhs;
LocalMatrix<double> mat;
LocalVector<double> Dinvhalf_min;
LocalVector<double> Dinvhalf_plus;
#ifdef GUUS
LocalMatrix<double> Zin;
LocalVector<double> refsol;
LocalVector<double> refones;
#endif
mat.ReadFileMTX(std::string(argv[1]));
mat.info();
#ifdef GUUS
Zin.ReadFileMTX(std::string(argv[2]));
Zin.info();
refsol.Allocate("refsol", mat.get_nrow());
refones.Allocate("refones", mat.get_nrow());
//refsol.Ones();
refsol.ReadFileASCII(std::string(argv[4]));
refones.Ones();
#endif
x.Allocate("x", mat.get_nrow());
rhs.Allocate("rhs", mat.get_nrow());
// Linear Solver
DPCG<LocalMatrix<double>, LocalVector<double>, double > ls;
MultiElimination<LocalMatrix<double>, LocalVector<double>, double > p;
Jacobi<LocalMatrix<double>, LocalVector<double>, double > j_p;
MultiColoredILU<LocalMatrix<double>, LocalVector<double>, double > mcilu_p;
ILU<LocalMatrix<double>, LocalVector<double>, double > ilu_p;
MultiColoredSGS<LocalMatrix<double>, LocalVector<double>, double > mcsgs_p;
FSAI<LocalMatrix <double>, LocalVector<double>, double > fsai_p ;
SPAI<LocalMatrix <double>, LocalVector <double>, double > spai_p ;
#ifdef GPURUN
mat.MoveToAccelerator();
x.MoveToAccelerator();
rhs.MoveToAccelerator();
#endif
#ifdef SCALIN
mat.ExtractInverseDiagonal_sqrt(&Dinvhalf_min, -1);
mat.ExtractInverseDiagonal_sqrt(&Dinvhalf_plus, 1);
mat.DiagonalMatrixMult(Dinvhalf_min);
mat.DiagonalMatrixMult_fromL(Dinvhalf_min);
//x.PointWiseMult(Dinvhalf_plus);
rhs.PointWiseMult(Dinvhalf_min);
#endif
/////////////////////////////////////////////////////////////////
std::cout << "-----------------------------------------------" << std::endl;
std::cout << "DPCG solver MCSGS" << std::endl;
#ifdef GUUS
rhs.ReadFileASCII(std::string(argv[3]));
x.SetRandom(0.0,1.0,1000);
ls.SetZ(Zin);
#endif
#ifdef BUBFLO
x.ReadFileASCII(std::string(argv[2]));
rhs.ReadFileASCII(std::string(argv[3]));
#endif
gettimeofday(&now, NULL);
tick = now.tv_sec*1000000.0+(now.tv_usec);
#ifdef BUBFLO
//.........这里部分代码省略.........