本文整理汇总了C++中Plan::GetSourceDimsToMerge方法的典型用法代码示例。如果您正苦于以下问题:C++ Plan::GetSourceDimsToMerge方法的具体用法?C++ Plan::GetSourceDimsToMerge怎么用?C++ Plan::GetSourceDimsToMerge使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Plan
的用法示例。
在下文中一共展示了Plan::GetSourceDimsToMerge方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: weightGridList
//.........这里部分代码省略.........
for( size_t j=0; j<d; ++j )
{
globalA[j] = A[j]+
(myTBoxCoords[j]<<log2LocalTBoxesPerDim[j]);
x0Ap[j] = tBox.offsets[j] + (globalA[j]|1)*wA[j];
ARelativeToAp |= (globalA[j]&1)<<j;
}
#ifdef TIMING
bfly::L2LTimer.Start();
#endif
bfly::L2L
( context, plan, phase, level,
ARelativeToAp, x0A, x0Ap, p0B, wA, wB,
parentIOffset, oldWeightGridList,
weightGridList[iIndex] );
#ifdef TIMING
bfly::L2LTimer.Stop();
#endif
}
}
}
}
else
{
const size_t log2NumMerging = d-log2LocalSBoxes;
log2LocalSBoxes = 0;
for( size_t j=0; j<d; ++j )
log2LocalSBoxesPerDim[j] = 0;
// Fully refine target domain and coarsen source domain.
// We partition the target domain after the SumScatter.
const vector<size_t>& sDimsToMerge =
plan.GetSourceDimsToMerge( level );
for( size_t i=0; i<log2NumMerging; ++i )
{
const size_t j = sDimsToMerge[i];
if( mySBoxCoords[j] & 1 )
mySBox.offsets[j] -= mySBox.widths[j];
mySBoxCoords[j] /= 2;
mySBox.widths[j] *= 2;
}
for( size_t j=0; j<d; ++j )
{
++log2LocalTBoxesPerDim[j];
++log2LocalTBoxes;
}
// Compute the coordinates and center of this source box
array<R,d> p0B;
for( size_t j=0; j<d; ++j )
p0B[j] = mySBox.offsets[j] + wB[j]/R(2);
// Form the partial weights by looping over the boxes in the
// target domain.
ConstrainedHTreeWalker<d> AWalker( log2LocalTBoxesPerDim );
WeightGridList<R,d,q> partialWeightGridList( 1<<log2LocalTBoxes );
for( size_t tIndex=0;
tIndex<(1u<<log2LocalTBoxes); ++tIndex, AWalker.Walk() )
{
const array<size_t,d> A = AWalker.State();
// Compute coordinates and center of this target box
array<R,d> x0A;
for( size_t j=0; j<d; ++j )
x0A[j] = myTBox.offsets[j] + (A[j]+R(1)/R(2))*wA[j];