本文整理汇总了C++中kokkos::DynRankView::extent方法的典型用法代码示例。如果您正苦于以下问题:C++ DynRankView::extent方法的具体用法?C++ DynRankView::extent怎么用?C++ DynRankView::extent使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类kokkos::DynRankView
的用法示例。
在下文中一共展示了DynRankView::extent方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: work
void
Basis_HGRAD_LINE_Cn_FEM::
getValues( Kokkos::DynRankView<outputValueValueType,outputValueProperties...> outputValues,
const Kokkos::DynRankView<inputPointValueType, inputPointProperties...> inputPoints,
const Kokkos::DynRankView<vinvValueType, vinvProperties...> vinv,
const EOperator operatorType ) {
typedef Kokkos::DynRankView<outputValueValueType,outputValueProperties...> outputValueViewType;
typedef Kokkos::DynRankView<inputPointValueType, inputPointProperties...> inputPointViewType;
typedef Kokkos::DynRankView<vinvValueType, vinvProperties...> vinvViewType;
typedef typename ExecSpace<typename inputPointViewType::execution_space,SpT>::ExecSpaceType ExecSpaceType;
// loopSize corresponds to cardinality
const auto loopSizeTmp1 = (inputPoints.extent(0)/numPtsPerEval);
const auto loopSizeTmp2 = (inputPoints.extent(0)%numPtsPerEval != 0);
const auto loopSize = loopSizeTmp1 + loopSizeTmp2;
Kokkos::RangePolicy<ExecSpaceType,Kokkos::Schedule<Kokkos::Static> > policy(0, loopSize);
typedef typename inputPointViewType::value_type inputPointType;
const ordinal_type cardinality = outputValues.extent(0);
auto vcprop = Kokkos::common_view_alloc_prop(inputPoints);
typedef typename Kokkos::DynRankView< inputPointType, typename inputPointViewType::memory_space> workViewType;
workViewType work(Kokkos::view_alloc("Basis_HGRAD_LINE_Cn_FEM::getValues::work", vcprop), cardinality, inputPoints.extent(0));
switch (operatorType) {
case OPERATOR_VALUE: {
typedef Functor<outputValueViewType,inputPointViewType,vinvViewType,workViewType,
OPERATOR_VALUE,numPtsPerEval> FunctorType;
Kokkos::parallel_for( policy, FunctorType(outputValues, inputPoints, vinv, work) );
break;
}
case OPERATOR_GRAD:
case OPERATOR_D1:
case OPERATOR_D2:
case OPERATOR_D3:
case OPERATOR_D4:
case OPERATOR_D5:
case OPERATOR_D6:
case OPERATOR_D7:
case OPERATOR_D8:
case OPERATOR_D9:
case OPERATOR_D10: {
typedef Functor<outputValueViewType,inputPointViewType,vinvViewType,workViewType,
OPERATOR_Dn,numPtsPerEval> FunctorType;
Kokkos::parallel_for( policy, FunctorType(outputValues, inputPoints, vinv, work,
getOperatorOrder(operatorType)) );
break;
}
default: {
INTREPID2_TEST_FOR_EXCEPTION( true , std::invalid_argument,
">>> ERROR (Basis_HGRAD_LINE_Cn_FEM): Operator type not implemented" );
//break; commented out because this always throws
}
}
}
示例2: getValues
void
Basis_HGRAD_TET_C2_FEM::
getValues( Kokkos::DynRankView<outputValueValueType,outputValueProperties...> outputValues,
const Kokkos::DynRankView<inputPointValueType, inputPointProperties...> inputPoints,
const EOperator operatorType ) {
typedef Kokkos::DynRankView<outputValueValueType,outputValueProperties...> outputValueViewType;
typedef Kokkos::DynRankView<inputPointValueType, inputPointProperties...> inputPointViewType;
typedef typename ExecSpace<typename inputPointViewType::execution_space,SpT>::ExecSpaceType ExecSpaceType;
// Number of evaluation points = dim 0 of inputPoints
const auto loopSize = inputPoints.extent(0);
Kokkos::RangePolicy<ExecSpaceType,Kokkos::Schedule<Kokkos::Static> > policy(0, loopSize);
switch (operatorType) {
case OPERATOR_VALUE: {
typedef Functor<outputValueViewType,inputPointViewType,OPERATOR_VALUE> FunctorType;
Kokkos::parallel_for( policy, FunctorType(outputValues, inputPoints) );
break;
}
case OPERATOR_GRAD:
case OPERATOR_D1: {
typedef Functor<outputValueViewType,inputPointViewType,OPERATOR_GRAD> FunctorType;
Kokkos::parallel_for( policy, FunctorType(outputValues, inputPoints) );
break;
}
case OPERATOR_CURL: {
INTREPID2_TEST_FOR_EXCEPTION( (operatorType == OPERATOR_CURL), std::invalid_argument,
">>> ERROR (Basis_HGRAD_TET_C2_FEM): CURL is invalid operator for rank-0 (scalar) functions in 3D");
break;
}
case OPERATOR_DIV: {
INTREPID2_TEST_FOR_EXCEPTION( (operatorType == OPERATOR_DIV), std::invalid_argument,
">>> ERROR (Basis_HGRAD_TET_C2_FEM): DIV is invalid operator for rank-0 (scalar) functions in 3D");
break;
}
case OPERATOR_D2: {
typedef Functor<outputValueViewType,inputPointViewType,OPERATOR_D2> FunctorType;
Kokkos::parallel_for( policy, FunctorType(outputValues, inputPoints) );
break;
}
case OPERATOR_D3:
case OPERATOR_D4:
case OPERATOR_D5:
case OPERATOR_D6:
case OPERATOR_D7:
case OPERATOR_D8:
case OPERATOR_D9:
case OPERATOR_D10: {
typedef Functor<outputValueViewType,inputPointViewType,OPERATOR_MAX> FunctorType;
Kokkos::parallel_for( policy, FunctorType(outputValues, inputPoints) );
break;
}
default: {
INTREPID2_TEST_FOR_EXCEPTION( !( Intrepid2::isValidOperator(operatorType) ), std::invalid_argument,
">>> ERROR (Basis_HGRAD_TET_C2_FEM): Invalid operator type");
}
}
}