mirror of
https://gitlab.kitware.com/vtk/vtk-m
synced 2024-09-19 10:35:42 +00:00
Merge topic 'properly_compute_scatter_array_lengths'
85084f2c ScatterIdentity::GetVisitArray parameters are now named properly 86ecad65 ScatterIdentity::GetOutputToInputMap parameters are now named properly 40896e2b Allocate the scatter arrays to be proper length. Acked-by: Kitware Robot <kwrobot@kitware.com> Acked-by: Kenneth Moreland <kmorel@sandia.gov> Merge-request: !359
This commit is contained in:
commit
177b31f330
@ -40,27 +40,27 @@ struct ScatterIdentity
|
||||
{
|
||||
typedef vtkm::cont::ArrayHandleIndex OutputToInputMapType;
|
||||
VTKM_CONT_EXPORT
|
||||
OutputToInputMapType GetOutputToInputMap(vtkm::Id outputRange) const
|
||||
OutputToInputMapType GetOutputToInputMap(vtkm::Id inputRange) const
|
||||
{
|
||||
return OutputToInputMapType(outputRange);
|
||||
return OutputToInputMapType(inputRange);
|
||||
}
|
||||
VTKM_CONT_EXPORT
|
||||
OutputToInputMapType GetOutputToInputMap(vtkm::Id3 outputRange) const
|
||||
OutputToInputMapType GetOutputToInputMap(vtkm::Id3 inputRange) const
|
||||
{
|
||||
return this->GetOutputToInputMap(
|
||||
outputRange[0]*outputRange[1]*outputRange[2]);
|
||||
inputRange[0]*inputRange[1]*inputRange[2]);
|
||||
}
|
||||
|
||||
typedef vtkm::cont::ArrayHandleConstant<vtkm::IdComponent> VisitArrayType;
|
||||
VTKM_CONT_EXPORT
|
||||
VisitArrayType GetVisitArray(vtkm::Id outputRange) const
|
||||
VisitArrayType GetVisitArray(vtkm::Id inputRange) const
|
||||
{
|
||||
return VisitArrayType(1, outputRange);
|
||||
return VisitArrayType(1, inputRange);
|
||||
}
|
||||
VTKM_CONT_EXPORT
|
||||
VisitArrayType GetVisitArray(vtkm::Id3 outputRange) const
|
||||
VisitArrayType GetVisitArray(vtkm::Id3 inputRange) const
|
||||
{
|
||||
return this->GetVisitArray(outputRange[0]*outputRange[1]*outputRange[2]);
|
||||
return this->GetVisitArray(inputRange[0]*inputRange[1]*inputRange[2]);
|
||||
}
|
||||
|
||||
template<typename RangeType>
|
||||
|
@ -445,6 +445,7 @@ protected:
|
||||
{
|
||||
this->InvokeTransportParameters(
|
||||
invocation,
|
||||
numInstances,
|
||||
this->Worklet.GetScatter().GetOutputRange(numInstances),
|
||||
device);
|
||||
}
|
||||
@ -469,6 +470,7 @@ protected:
|
||||
{
|
||||
this->InvokeTransportParameters(
|
||||
invocation,
|
||||
dimensions,
|
||||
this->Worklet.GetScatter().GetOutputRange(dimensions),
|
||||
device);
|
||||
}
|
||||
@ -480,10 +482,11 @@ private:
|
||||
DispatcherBase(const MyType &);
|
||||
void operator=(const MyType &);
|
||||
|
||||
template<typename Invocation, typename RangeType, typename DeviceAdapter>
|
||||
template<typename Invocation, typename InputRangeType, typename OutputRangeType, typename DeviceAdapter>
|
||||
VTKM_CONT_EXPORT
|
||||
void InvokeTransportParameters(const Invocation &invocation,
|
||||
RangeType range,
|
||||
const InputRangeType& inputRange,
|
||||
const OutputRangeType& outputRange,
|
||||
DeviceAdapter device) const
|
||||
{
|
||||
// The first step in invoking a worklet is to transport the arguments to
|
||||
@ -504,13 +507,13 @@ private:
|
||||
TransportFunctorType>::type ExecObjectParameters;
|
||||
|
||||
ExecObjectParameters execObjectParameters =
|
||||
parameters.StaticTransformCont(TransportFunctorType(range));
|
||||
parameters.StaticTransformCont(TransportFunctorType(outputRange));
|
||||
|
||||
// Get the arrays used for scattering input to output.
|
||||
typename WorkletType::ScatterType::OutputToInputMapType outputToInputMap =
|
||||
this->Worklet.GetScatter().GetOutputToInputMap(range);
|
||||
this->Worklet.GetScatter().GetOutputToInputMap(inputRange);
|
||||
typename WorkletType::ScatterType::VisitArrayType visitArray =
|
||||
this->Worklet.GetScatter().GetVisitArray(range);
|
||||
this->Worklet.GetScatter().GetVisitArray(inputRange);
|
||||
|
||||
// Replace the parameters in the invocation with the execution object and
|
||||
// pass to next step of Invoke. Also add the scatter information.
|
||||
@ -519,7 +522,7 @@ private:
|
||||
.ChangeParameters(execObjectParameters)
|
||||
.ChangeOutputToInputMap(outputToInputMap.PrepareForInput(device))
|
||||
.ChangeVisitArray(visitArray.PrepareForInput(device)),
|
||||
range,
|
||||
outputRange,
|
||||
device);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user