mirror of
https://gitlab.kitware.com/vtk/vtk-m
synced 2024-09-20 11:05:44 +00:00
ForwardTransform2D() takes the filters in constructor.
This commit is contained in:
parent
39267ce4fb
commit
b813c4c9c5
@ -855,17 +855,17 @@ if( print)
|
||||
ArrayType afterX;
|
||||
afterX.PrepareForOutput( outDimX * outDimY, DeviceTag() );
|
||||
|
||||
vtkm::Float64 elapsedTime = 0.0;
|
||||
typedef vtkm::worklet::wavelets::ForwardTransform2D ForwardXForm;
|
||||
{
|
||||
ForwardXForm worklet( filterLen, L[0], oddLow, sigExtendedDimX, sigExtendedDimY,
|
||||
outDimX, outDimY );
|
||||
vtkm::worklet::DispatcherMapField< ForwardXForm, DeviceTag > dispatcher( worklet );
|
||||
vtkm::cont::Timer<DeviceTag> timer;
|
||||
dispatcher.Invoke( sigExtended,
|
||||
WaveletBase::filter.GetLowDecomposeFilter(),
|
||||
vtkm::Float64 elapsedTime = 0.0;
|
||||
typedef vtkm::worklet::wavelets::ForwardTransform2D<DeviceTag> ForwardXForm;
|
||||
{
|
||||
ForwardXForm worklet( WaveletBase::filter.GetLowDecomposeFilter(),
|
||||
WaveletBase::filter.GetHighDecomposeFilter(),
|
||||
afterX );
|
||||
filterLen, L[0], sigExtendedDimX, sigExtendedDimY,
|
||||
outDimX, outDimY, oddLow );
|
||||
vtkm::worklet::DispatcherMapField< ForwardXForm, DeviceTag > dispatcher( worklet );
|
||||
timer.Reset();
|
||||
dispatcher.Invoke( sigExtended, afterX );
|
||||
elapsedTime += timer.GetElapsedTime();
|
||||
}
|
||||
sigExtended.ReleaseResources();
|
||||
@ -888,14 +888,13 @@ if( print)
|
||||
ArrayType afterY;
|
||||
afterY.PrepareForOutput( outDimY * outDimX, DeviceTag() );
|
||||
{
|
||||
ForwardXForm worklet2( filterLen, L[1], oddLow, sigExtendedDimX, sigExtendedDimY,
|
||||
outDimY, outDimX );
|
||||
vtkm::worklet::DispatcherMapField< ForwardXForm, DeviceTag > dispatcher2( worklet2 );
|
||||
vtkm::cont::Timer<DeviceTag> timer;
|
||||
dispatcher2.Invoke( sigExtended,
|
||||
WaveletBase::filter.GetLowDecomposeFilter(),
|
||||
ForwardXForm worklet2( WaveletBase::filter.GetLowDecomposeFilter(),
|
||||
WaveletBase::filter.GetHighDecomposeFilter(),
|
||||
afterY );
|
||||
filterLen, L[1], sigExtendedDimX, sigExtendedDimY,
|
||||
outDimY, outDimX, oddLow );
|
||||
vtkm::worklet::DispatcherMapField< ForwardXForm, DeviceTag > dispatcher2( worklet2 );
|
||||
timer.Reset();
|
||||
dispatcher2.Invoke( sigExtended, afterY );
|
||||
elapsedTime += timer.GetElapsedTime();
|
||||
}
|
||||
sigExtended.ReleaseResources();
|
||||
|
@ -117,32 +117,30 @@ private:
|
||||
|
||||
|
||||
// Worklet: perform a simple 2D forward transform
|
||||
template< typename DeviceTag >
|
||||
class ForwardTransform2D: public vtkm::worklet::WorkletMapField
|
||||
{
|
||||
public:
|
||||
typedef void ControlSignature(WholeArrayIn<ScalarAll>, // sigIn
|
||||
WholeArrayIn<Scalar>, // lowFilter
|
||||
WholeArrayIn<Scalar>, // highFilter
|
||||
WholeArrayOut<ScalarAll>); // cA followed by cD
|
||||
typedef void ExecutionSignature(_1, _2, _3, _4, WorkIndex);
|
||||
typedef _4 InputDomain;
|
||||
typedef void ExecutionSignature(_1, _2, WorkIndex);
|
||||
typedef _2 InputDomain;
|
||||
|
||||
|
||||
// Constructor
|
||||
VTKM_EXEC_CONT_EXPORT
|
||||
ForwardTransform2D( vtkm::Id filter_len, vtkm::Id approx_len, bool odd_low,
|
||||
ForwardTransform2D( const vtkm::cont::ArrayHandle<vtkm::Float64> &loFilter,
|
||||
const vtkm::cont::ArrayHandle<vtkm::Float64> &hiFilter,
|
||||
vtkm::Id filter_len, vtkm::Id approx_len,
|
||||
vtkm::Id input_dimx, vtkm::Id input_dimy,
|
||||
vtkm::Id output_dimx, vtkm::Id output_dimy )
|
||||
{
|
||||
filterLen = filter_len;
|
||||
approxLen = approx_len;
|
||||
oddlow = odd_low;
|
||||
inputDimX = input_dimx;
|
||||
inputDimY = input_dimy;
|
||||
outputDimX = output_dimx;
|
||||
outputDimY = output_dimy;
|
||||
this->SetStartPosition();
|
||||
}
|
||||
vtkm::Id output_dimx, vtkm::Id output_dimy, bool odd_low) :
|
||||
lowFilter( loFilter.PrepareForInput( DeviceTag() ) ),
|
||||
highFilter( hiFilter.PrepareForInput( DeviceTag() ) ),
|
||||
filterLen( filter_len ), approxLen( approx_len ),
|
||||
inputDimX( input_dimx ), inputDimY( input_dimy ),
|
||||
outputDimX( output_dimx), outputDimY( output_dimy),
|
||||
oddlow( odd_low )
|
||||
{ this->SetStartPosition(); }
|
||||
|
||||
VTKM_EXEC_CONT_EXPORT
|
||||
void Input1Dto2D( const vtkm::Id &idx, vtkm::Id &x, vtkm::Id &y ) const
|
||||
@ -171,13 +169,9 @@ public:
|
||||
#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 &signalIn,
|
||||
const FilterPortalType &lowFilter,
|
||||
const FilterPortalType &highFilter,
|
||||
OutputPortalType &coeffOut,
|
||||
const vtkm::Id &workIndex) const
|
||||
{
|
||||
@ -222,11 +216,13 @@ public:
|
||||
#undef VAL
|
||||
|
||||
private:
|
||||
vtkm::Id filterLen, approxLen; // filter and outcome coeff length.
|
||||
typename vtkm::cont::ArrayHandle<vtkm::Float64>::ExecutionTypes<DeviceTag>::PortalConst
|
||||
lowFilter, highFilter;
|
||||
vtkm::Id filterLen, approxLen;
|
||||
vtkm::Id inputDimX, inputDimY;
|
||||
vtkm::Id outputDimX, outputDimY;
|
||||
bool oddlow;
|
||||
vtkm::Id xlstart, xhstart;
|
||||
vtkm::Id inputDimX, inputDimY; // extended signal
|
||||
vtkm::Id outputDimX, outputDimY;
|
||||
|
||||
VTKM_EXEC_CONT_EXPORT
|
||||
void SetStartPosition()
|
||||
|
Loading…
Reference in New Issue
Block a user