InverseTransformEven() keeps coeffs by itself
This commit is contained in:
parent
89c1efda59
commit
39267ce4fb
@ -620,26 +620,24 @@ if( print)
|
||||
( WaveletBase::filter.GetLowReconstructFilter(),
|
||||
WaveletBase::filter.GetHighReconstructFilter(),
|
||||
filterLen, L[0], cATempLen );
|
||||
vtkm::worklet::DispatcherMapField<vtkm::worklet::wavelets::InverseTransformOdd<DeviceTag>, DeviceTag>
|
||||
dispatcher( inverseXformOdd );
|
||||
vtkm::worklet::DispatcherMapField<vtkm::worklet::wavelets::
|
||||
InverseTransformOdd<DeviceTag>, DeviceTag> dispatcher( inverseXformOdd );
|
||||
// use a timer
|
||||
vtkm::cont::Timer<DeviceTag> timer;
|
||||
dispatcher.Invoke( coeffInExtended,
|
||||
sigOut );
|
||||
dispatcher.Invoke( coeffInExtended, sigOut );
|
||||
elapsedTime = timer.GetElapsedTime();
|
||||
}
|
||||
else
|
||||
{
|
||||
vtkm::worklet::wavelets::InverseTransformEven inverseXformEven
|
||||
( filterLen, L[0], cATempLen, !doSymConv );
|
||||
vtkm::worklet::DispatcherMapField<vtkm::worklet::wavelets::InverseTransformEven, DeviceTag>
|
||||
dispatcher( inverseXformEven );
|
||||
vtkm::worklet::wavelets::InverseTransformEven<DeviceTag> inverseXformEven
|
||||
( WaveletBase::filter.GetLowReconstructFilter(),
|
||||
WaveletBase::filter.GetHighReconstructFilter(),
|
||||
filterLen, L[0], cATempLen, !doSymConv );
|
||||
vtkm::worklet::DispatcherMapField<vtkm::worklet::wavelets::
|
||||
InverseTransformEven<DeviceTag>, DeviceTag> dispatcher( inverseXformEven );
|
||||
// use a timer
|
||||
vtkm::cont::Timer<DeviceTag> timer;
|
||||
dispatcher.Invoke( coeffInExtended,
|
||||
WaveletBase::filter.GetLowReconstructFilter(),
|
||||
WaveletBase::filter.GetHighReconstructFilter(),
|
||||
sigOut );
|
||||
dispatcher.Invoke( coeffInExtended, sigOut );
|
||||
elapsedTime = timer.GetElapsedTime();
|
||||
}
|
||||
|
||||
|
@ -502,36 +502,33 @@ private:
|
||||
|
||||
|
||||
// Worklet: perform an inverse transform for even length, symmetric filters.
|
||||
template< typename DeviceTag >
|
||||
class InverseTransformEven: public vtkm::worklet::WorkletMapField
|
||||
{
|
||||
public:
|
||||
typedef void ControlSignature(WholeArrayIn<ScalarAll>, // Input: coeffs,
|
||||
// cA followed by cD
|
||||
WholeArrayIn<Scalar>, // lowFilter
|
||||
WholeArrayIn<Scalar>, // highFilter
|
||||
WholeArrayOut<ScalarAll>); // output
|
||||
typedef void ExecutionSignature(_1, _2, _3, _4, WorkIndex);
|
||||
typedef void ExecutionSignature(_1, _2, WorkIndex);
|
||||
typedef _1 InputDomain;
|
||||
|
||||
// Constructor
|
||||
VTKM_EXEC_CONT_EXPORT
|
||||
InverseTransformEven( vtkm::Id filtL, vtkm::Id cAL, vtkm::Id cALExt, bool m ) :
|
||||
filterLen(filtL), cALen(cAL), cALenExtended(cALExt), matlab(m)
|
||||
{
|
||||
this->cALen2 = cALen * 2;
|
||||
}
|
||||
InverseTransformEven( const vtkm::cont::ArrayHandle<vtkm::Float64> &loFilter,
|
||||
const vtkm::cont::ArrayHandle<vtkm::Float64> &hiFilter,
|
||||
vtkm::Id filtL, vtkm::Id cAL, vtkm::Id cALExt, bool m ) :
|
||||
lowFilter( loFilter.PrepareForInput(DeviceTag()) ),
|
||||
highFilter( hiFilter.PrepareForInput(DeviceTag()) ),
|
||||
filterLen( filtL ), cALen( cAL ), cALen2( cAL * 2 ),
|
||||
cALenExtended( cALExt ), matlab( m ) {}
|
||||
|
||||
// Use 64-bit float for convolution calculation
|
||||
#define VAL vtkm::Float64
|
||||
#define MAKEVAL(a) (static_cast<VAL>(a))
|
||||
|
||||
template <typename InputPortalType,
|
||||
typename FilterPortalType,
|
||||
typename OutputPortalType>
|
||||
template <typename InputPortalType, typename OutputPortalType>
|
||||
VTKM_EXEC_EXPORT
|
||||
void operator()(const InputPortalType &coeffs,
|
||||
const FilterPortalType &lowFilter,
|
||||
const FilterPortalType &highFilter,
|
||||
OutputPortalType &sigOut,
|
||||
const vtkm::Id &workIndex) const
|
||||
{
|
||||
@ -568,13 +565,14 @@ public:
|
||||
|
||||
sigOut.Set(workIndex, static_cast<typename OutputPortalType::ValueType>( sum ) );
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
#undef MAKEVAL
|
||||
#undef VAL
|
||||
|
||||
private:
|
||||
typename vtkm::cont::ArrayHandle<vtkm::Float64>::ExecutionTypes<DeviceTag>::PortalConst
|
||||
lowFilter, highFilter;
|
||||
vtkm::Id filterLen; // filter length.
|
||||
vtkm::Id cALen; // Number of actual cAs
|
||||
vtkm::Id cALen2; // = cALen * 2
|
||||
|
Loading…
Reference in New Issue
Block a user