本文整理汇总了C++中Blackbox::domain方法的典型用法代码示例。如果您正苦于以下问题:C++ Blackbox::domain方法的具体用法?C++ Blackbox::domain怎么用?C++ Blackbox::domain使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Blackbox
的用法示例。
在下文中一共展示了Blackbox::domain方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: stressTest
void stressTest (Blackbox & A)
{
//Note that the rowdim/coldim of A must be 30000
typedef typename Blackbox::MatrixDomain Dom;
typedef typename Dom::Block Block;
Dom MD = A.domain();
size_t m = 30000;
size_t n = 2000;
LinBox::UserTimer timer;
Block B(m,n), C(m,n);
MD.random(B);
cout << "Test: 30000x30000 matrix multiplied by 30000x2000 matrix\nblock size = 2048\n\n";
timer.clear(); timer.start();
A.unpackingApply(C,B,2048);
timer.stop();
cout << "unpacking apply time: " << timer << endl;
Block D(m,m); MD.random(D);
timer.clear(); timer.start();
MD.mul(C,D,B);
timer.stop();
cout << "domain mul time: " << timer << endl;
cout << endl;
} //end stressTest()
示例2: blockSizeTimingTest
void blockSizeTimingTest(Blackbox & A, size_t size)
{
typedef typename Blackbox::MatrixDomain Dom;
typedef typename Dom::Block Block;
Dom MD = A.domain();
size_t m = A.rowdim();
LinBox::UserTimer timer;
Block B(m,m), C(m,m), D(m,m);
MD.random(B); MD.random(D);
cout << size << " " << m << " ";
timer.clear(); timer.start();
A.unpackingApply(C,B,size);
timer.stop();
cout << timer << " ";
timer.clear(); timer.start();
A.unpackingApplyTranspose(C,B,size);
timer.stop();
cout << timer << " ";
timer.clear(); timer.start();
MD.mul(C,D,B);
timer.stop();
cout << timer << " ";
cout << endl;
} //blockSizeTimingTest()
示例3: testTiming
void testTiming(Blackbox & A)
{
typedef typename Blackbox::MatrixDomain Dom;
typedef typename Dom::Block Block;
Dom MD = A.domain();
size_t m = A.rowdim(), n = A.coldim();
size_t k = (m + n)/2;
LinBox::UserTimer timer;
Block B(n,k), C(m,k), D(k,m), E(k,n), F(k,k);
MD.random(B); MD.random(D);
vector<typename Dom::Element> v1, v2(m);
typename Dom::RandIter r(MD);
typename Dom::Element x;
for(size_t i = 0; i != n; ++i){
r.random(x);
v1.push_back(x);
}
//Tests:
cout << "Timing tests:" << endl << endl;
timer.clear(); timer.start();
for(size_t j = 0; j != m; ++j) A.apply(v2,v1);
timer.stop();
cout << "apply using vectors time: " << timer << endl;
timer.clear(); timer.start();
A.applyTranspose(C,B);
timer.stop();
cout << "apply using row addin time: " << timer << endl;
timer.clear(); timer.start();
A.unpackingApplyTranspose(C,B);
timer.stop();
cout << "apply using block axpy time: " << timer << endl;
timer.clear(); timer.start();
MD.mul(F, D, C);
timer.stop();
cout << "Matrix Domain mul time: " << timer << endl;
cout << "End of timing tests" << endl << endl;
} // testTiming
示例4: largeTest
void largeTest (Blackbox & A)
{
//Use for large blackboxes
typedef typename Blackbox::MatrixDomain Dom;
typedef typename Dom::Block Block;
Dom MD = A.domain();
size_t m = A.coldim();
size_t n = 2000;
LinBox::UserTimer timer;
Block B(m,n), C(m,n);
MD.random(B);
cout << "Test: " << A.rowdim() << "x" << m << "blackbox multiplied by " << m << "x" << n << "block\nblock size: 2048\n\n";
timer.clear(); timer.start();
A.unpackingApply(C,B,2048);
timer.stop();
cout << "unpacking apply time: " << timer << endl;
} //end largeTest
示例5: testAssociativity
bool testAssociativity(Blackbox& A)
{
typedef typename Blackbox::MatrixDomain Dom;
Dom MD = A.domain();
size_t m = A.rowdim(), n = A.coldim() - 100;
size_t k = (m + n)/2;
typename Dom::Block B(A.field(),k,m), C(A.field(),m,n);
MD.random(B); MD.random(C);
typename Dom::Block D(A.field(),m,n), E(A.field(),k,n);
A.apply(D, C); // D = AC
MD.mul(E,B,D); // E = B(AC)
typename Dom::Block F(A.field(),k,m), G(A.field(),k,n);
A.unpackingApplyTranspose(F,B); // F = BA
MD.mul(G,F,C); // G = (BA)C
return MD.areEqual(E,G);
} // testAssociativity