Merge topic 'fix-whitespace-issues'

cbd918b4 worklet/wavelet: fix whitespace issues

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: Robert Maynard <robert.maynard@kitware.com>
Merge-request: !773
This commit is contained in:
Ben Boeckel 2017-05-23 13:16:13 +00:00 committed by Kitware Robot
commit b69bb4f890
6 changed files with 851 additions and 851 deletions

@ -31,7 +31,7 @@ class WaveletCompressor : public vtkm::worklet::wavelets::WaveletDWT
public:
// Constructor
WaveletCompressor( wavelets::WaveletName name ) : WaveletDWT( name ) {}
WaveletCompressor( wavelets::WaveletName name ) : WaveletDWT( name ) {}
// Multi-level 1D wavelet decomposition
@ -58,7 +58,7 @@ public:
vtkm::Id CLength = this->ComputeCoeffLength( L, nLevels );
VTKM_ASSERT( CLength == sigInLen );
vtkm::Id sigInPtr = 0; // pseudo pointer for the beginning of input array
vtkm::Id sigInPtr = 0; // pseudo pointer for the beginning of input array
vtkm::Id len = sigInLen;
vtkm::Id cALen = WaveletBase::GetApproxLength( len );
vtkm::Id cptr; // pseudo pointer for the beginning of output array
@ -71,7 +71,7 @@ public:
// Define a few more types
typedef vtkm::cont::ArrayHandleCounting< vtkm::Id > IdArrayType;
typedef vtkm::cont::ArrayHandlePermutation< IdArrayType, CoeffArrayType >
typedef vtkm::cont::ArrayHandlePermutation< IdArrayType, CoeffArrayType >
PermutArrayType;
vtkm::cont::DeviceAdapterAlgorithm< DeviceTag >::Copy( sigIn, coeffOut );
@ -80,11 +80,11 @@ public:
{
tlen += L[ size_t(i) ];
cptr = 0 + CLength - tlen - cALen;
// make input array (permutation array)
IdArrayType inputIndices( sigInPtr, 1, len );
PermutArrayType input( inputIndices, coeffOut );
// make output array
PermutArrayType input( inputIndices, coeffOut );
// make output array
InterArrayType output;
WaveletDWT::DWT1D( input, output, L1d, DeviceTag() );
@ -123,7 +123,7 @@ public:
typedef typename SignalArrayType::ValueType OutValueType;
typedef vtkm::cont::ArrayHandle< OutValueType > OutArrayBasic;
typedef vtkm::cont::ArrayHandleCounting< vtkm::Id > IdArrayType;
typedef vtkm::cont::ArrayHandlePermutation< IdArrayType, SignalArrayType >
typedef vtkm::cont::ArrayHandlePermutation< IdArrayType, SignalArrayType >
PermutArrayType;
vtkm::cont::DeviceAdapterAlgorithm< DeviceTag >::Copy( coeffIn, sigOut );
@ -134,11 +134,11 @@ public:
// Make an input array
IdArrayType inputIndices( 0, 1, L1d[2] );
PermutArrayType input( inputIndices, sigOut );
PermutArrayType input( inputIndices, sigOut );
// Make an output array
OutArrayBasic output;
WaveletDWT::IDWT1D( input, L1d, output, DeviceTag() );
VTKM_ASSERT( output.GetNumberOfValues() == L1d[2] );
@ -159,17 +159,17 @@ public:
VTKM_CONT
vtkm::Float64 WaveDecompose3D( InArrayType &sigIn, // Input
vtkm::Id nLevels, // n levels of DWT
vtkm::Id inX,
vtkm::Id inY,
vtkm::Id inX,
vtkm::Id inY,
vtkm::Id inZ,
OutArrayType &coeffOut,
bool discardSigIn, // can we discard sigIn on devices?
bool discardSigIn, // can we discard sigIn on devices?
DeviceTag )
{
vtkm::Id sigInLen = sigIn.GetNumberOfValues();
VTKM_ASSERT( inX * inY * inZ == sigInLen );
if( nLevels < 0 || nLevels > WaveletBase::GetWaveletMaxLevel( inX ) ||
nLevels > WaveletBase::GetWaveletMaxLevel( inY ) ||
nLevels > WaveletBase::GetWaveletMaxLevel( inY ) ||
nLevels > WaveletBase::GetWaveletMaxLevel( inZ ) )
{
throw vtkm::cont::ErrorBadValue("Number of levels of transform is not supported! ");
@ -189,13 +189,13 @@ public:
typedef vtkm::cont::ArrayHandle<OutValueType> OutBasicArray;
// First level transform writes to the output array
vtkm::Float64 computationTime = WaveletDWT::DWT3D(
sigIn,
vtkm::Float64 computationTime = WaveletDWT::DWT3D(
sigIn,
inX, inY, inZ,
0, 0, 0,
currentLenX, currentLenY, currentLenZ,
coeffOut,
discardSigIn,
coeffOut,
discardSigIn,
DeviceTag() );
// Successor transforms writes to a temporary array
@ -207,19 +207,19 @@ public:
OutBasicArray tempOutput;
computationTime += WaveletDWT::DWT3D(
coeffOut,
computationTime += WaveletDWT::DWT3D(
coeffOut,
inX, inY, inZ,
0, 0, 0,
currentLenX, currentLenY, currentLenZ,
tempOutput,
false,
tempOutput,
false,
DeviceTag() );
// copy results to coeffOut
WaveletBase::DeviceCubeCopyTo( tempOutput,
WaveletBase::DeviceCubeCopyTo( tempOutput,
currentLenX, currentLenY, currentLenZ,
coeffOut,
coeffOut,
inX, inY, inZ,
0, 0, 0,
DeviceTag() );
@ -233,7 +233,7 @@ public:
// Multi-level 3D wavelet reconstruction
template< typename InArrayType, typename OutArrayType, typename DeviceTag>
VTKM_CONT
vtkm::Float64 WaveReconstruct3D(
vtkm::Float64 WaveReconstruct3D(
InArrayType &arrIn, // Input
vtkm::Id nLevels, // n levels of DWT
vtkm::Id inX, vtkm::Id inY, vtkm::Id inZ,
@ -252,18 +252,18 @@ public:
typedef typename OutArrayType::ValueType OutValueType;
typedef vtkm::cont::ArrayHandle<OutValueType> OutBasicArray;
vtkm::Float64 computationTime = 0.0;
OutBasicArray outBuffer;
if( nLevels == 0 ) // 0 levels means no transform
{
{
vtkm::cont::DeviceAdapterAlgorithm< DeviceTag >::Copy( arrIn, arrOut );
return 0;
return 0;
}
else if ( discardArrIn )
{
outBuffer = arrIn;
outBuffer = arrIn;
}
else
else
{
vtkm::cont::DeviceAdapterAlgorithm< DeviceTag >::Copy( arrIn, outBuffer );
}
@ -271,7 +271,7 @@ public:
std::vector<vtkm::Id> L;
this->ComputeL3( inX, inY, inZ, nLevels, L );
std::vector<vtkm::Id> L3d(27, 0);
// All transforms but the last level operate on temporary arrays
for( size_t i = 0; i < 24; i++ )
{
@ -286,22 +286,22 @@ public:
OutBasicArray tempOutput;
// IDWT
computationTime += WaveletDWT::IDWT3D( outBuffer,
computationTime += WaveletDWT::IDWT3D( outBuffer,
inX, inY, inZ,
0, 0, 0,
L3d,
tempOutput,
false,
L3d,
tempOutput,
false,
DeviceTag() );
// copy back reconstructed block
WaveletBase::DeviceCubeCopyTo( tempOutput,
WaveletBase::DeviceCubeCopyTo( tempOutput,
L3d[24], L3d[25], L3d[26],
outBuffer,
outBuffer,
inX, inY, inZ,
0, 0, 0,
DeviceTag() );
// update L3d array
L3d[0] = L3d[24];
L3d[1] = L3d[25];
@ -315,15 +315,15 @@ public:
// The last transform outputs to the final output
L3d[24] = L3d[0] + L3d[12];
L3d[25] = L3d[1] + L3d[7];
L3d[26] = L3d[2] + L3d[5];
computationTime += WaveletDWT::IDWT3D( outBuffer,
L3d[26] = L3d[2] + L3d[5];
computationTime += WaveletDWT::IDWT3D( outBuffer,
inX, inY, inZ,
0, 0, 0,
L3d,
arrOut,
true,
L3d,
arrOut,
true,
DeviceTag() );
return computationTime;
}
@ -366,10 +366,10 @@ public:
typedef vtkm::cont::ArrayHandle<OutValueType> OutBasicArray;
// First level transform operates writes to the output array
computationTime += WaveletDWT::DWT2D ( sigIn,
currentLenX, currentLenY,
computationTime += WaveletDWT::DWT2D ( sigIn,
currentLenX, currentLenY,
0, 0,
currentLenX, currentLenY,
currentLenX, currentLenY,
coeffOut, L2d, DeviceTag() );
VTKM_ASSERT( coeffOut.GetNumberOfValues() == currentLenX * currentLenY );
currentLenX = WaveletBase::GetApproxLength( currentLenX );
@ -381,10 +381,10 @@ public:
OutBasicArray tempOutput;
computationTime +=
WaveletDWT::DWT2D ( coeffOut,
inX, inY,
WaveletDWT::DWT2D ( coeffOut,
inX, inY,
0, 0,
currentLenX, currentLenY,
currentLenX, currentLenY,
tempOutput, L2d, DeviceTag() );
// copy results to coeffOut
@ -422,30 +422,30 @@ public:
typedef typename OutArrayType::ValueType OutValueType;
typedef vtkm::cont::ArrayHandle<OutValueType> OutBasicArray;
vtkm::Float64 computationTime = 0.0;
OutBasicArray outBuffer;
if( nLevels == 0 ) // 0 levels means no transform
{
{
vtkm::cont::DeviceAdapterAlgorithm< DeviceTag >::Copy( arrIn, arrOut );
return 0;
return 0;
}
else
{
vtkm::cont::DeviceAdapterAlgorithm< DeviceTag >::Copy( arrIn, outBuffer );
}
VTKM_ASSERT( vtkm::Id(L.size()) == 6 * nLevels + 4 );
std::vector<vtkm::Id> L2d(10, 0);
L2d[0] = L[0];
L2d[1] = L[1];
L2d[2] = L[2];
L2d[3] = L[3];
L2d[4] = L[4];
L2d[5] = L[5];
L2d[6] = L[6];
L2d[7] = L[7];
L2d[0] = L[0];
L2d[1] = L[1];
L2d[2] = L[2];
L2d[3] = L[3];
L2d[4] = L[4];
L2d[5] = L[5];
L2d[6] = L[6];
L2d[7] = L[7];
// All transforms but the last operate on temporary arrays
for( size_t i = 1; i < static_cast<size_t>(nLevels); i++ )
{
@ -461,7 +461,7 @@ public:
// copy back reconstructed block
WaveletBase::DeviceRectangleCopyTo( tempOutput, L2d[8], L2d[9],
outBuffer, inX, inY, 0, 0, DeviceTag() );
// update L2d array
L2d[0] = L2d[8];
L2d[1] = L2d[9];
@ -477,10 +477,10 @@ public:
// The last transform outputs to the final output
L2d[8] = L2d[0] + L2d[4];
L2d[9] = L2d[1] + L2d[3];
computationTime +=
computationTime +=
WaveletDWT::IDWT2D ( outBuffer, inX, inY, 0, 0, L2d, arrOut, DeviceTag() );
return computationTime;
return computationTime;
}
@ -501,7 +501,7 @@ public:
WaveletBase::DeviceSort( sortedArray, DeviceTag() );
vtkm::Id n = coeffLen -
vtkm::Id n = coeffLen -
static_cast<vtkm::Id>( static_cast<vtkm::Float64>(coeffLen)/ratio );
vtkm::Float64 nthVal = static_cast<vtkm::Float64>
(sortedArray.GetPortalConstControl().Get(n));
@ -513,7 +513,7 @@ public:
ThresholdType thresholdWorklet( nthVal );
vtkm::worklet::DispatcherMapField< ThresholdType, DeviceTag > dispatcher( thresholdWorklet );
dispatcher.Invoke( coeffIn );
}
}
return 0;
}
@ -569,9 +569,9 @@ public:
std::cout << "Data range = " << range << std::endl;
std::cout << "SNR = " << snr << std::endl;
std::cout << "SNR in decibels = " << decibels << std::endl;
std::cout << "L-infy norm = " << errorMax
std::cout << "L-infy norm = " << errorMax
<< ", after normalization = " << errorMax / range << std::endl;
std::cout << "RMSE = " << rmse
std::cout << "RMSE = " << rmse
<< ", after normalization = " << rmse / range << std::endl;
#undef MAKEVAL
#undef VAL
@ -580,10 +580,10 @@ public:
}
// Compute the book keeping array L for 1D DWT
void ComputeL( vtkm::Id sigInLen,
vtkm::Id nLev,
void ComputeL( vtkm::Id sigInLen,
vtkm::Id nLev,
std::vector<vtkm::Id> &L )
{
size_t nLevels = static_cast<size_t>( nLev ); // cast once
@ -602,10 +602,10 @@ public:
// Compute the book keeping array L for 2D DWT
void ComputeL2( vtkm::Id inX,
vtkm::Id inY,
vtkm::Id nLev,
vtkm::Id nLev,
std::vector<vtkm::Id> &L )
{
size_t nLevels = static_cast<size_t>( nLev );
size_t nLevels = static_cast<size_t>( nLev );
L.resize( nLevels*6 + 4 );
L[ nLevels*6 ] = inX;
L[ nLevels*6 + 1 ] = inY;
@ -661,17 +661,17 @@ public:
L[ i * 21 - 18 ] = L[ i * 21 - 21 ];
L[ i * 21 - 17 ] = L[ i * 21 - 20 ];
L[ i * 21 - 16 ] = WaveletBase::GetDetailLength( L[ i * 21 + 2 ] );
// cLHL
L[ i * 21 - 15 ] = L[ i * 21 - 21 ];
L[ i * 21 - 14 ] = WaveletBase::GetDetailLength( L[ i * 21 + 1 ] );
L[ i * 21 - 13 ] = L[ i * 21 - 19 ];
// cLHH
L[ i * 21 - 12 ] = L[ i * 21 - 21 ];
L[ i * 21 - 11 ] = L[ i * 21 - 14 ];
L[ i * 21 - 10 ] = L[ i * 21 - 16 ];
// cHLL
L[ i * 21 - 9 ] = WaveletBase::GetDetailLength( L[ i * 21 + 0 ] );
L[ i * 21 - 8 ] = L[ i * 21 - 20 ];
@ -729,7 +729,7 @@ public:
for( vtkm::Id i = 0; i < levN; i++ )
{
cALen = WaveletBase::GetApproxLength( cALen );
if( cALen == 0 )
if( cALen == 0 )
{
return cALen;
}

@ -46,7 +46,7 @@ public:
vtkm::Float64 sx, vtkm::Float64 xy )
: dimX( dx ), dimY( dy ), amp (a),
x0( x ), y0( y ),
sigmaX( sx ), sigmaY( xy )
sigmaX( sx ), sigmaY( xy )
{
sigmaX2 = 2 * sigmaX * sigmaX;
sigmaY2 = 2 * sigmaY * sigmaY;
@ -58,7 +58,7 @@ public:
x = idx % dimX;
y = idx / dimX;
}
VTKM_EXEC
vtkm::Float64 GetGaussian( vtkm::Float64 x, vtkm::Float64 y ) const
{
@ -68,7 +68,7 @@ public:
template<typename T>
VTKM_EXEC
void operator()(T& val, const vtkm::Id& workIdx) const
void operator()(T& val, const vtkm::Id& workIdx) const
{
vtkm::Id x, y;
Sig1Dto2D( workIdx, x, y );
@ -93,7 +93,7 @@ public:
VTKM_EXEC
GaussianWorklet3D( vtkm::Id dx, vtkm::Id dy, vtkm::Id dz )
: dimX( dx ), dimY( dy ), dimZ( dz )
{
{
amp = (T)20.0;
sigmaX = (T)dimX / (T)4.0; sigmaX2 = sigmaX * sigmaX * (T)2.0;
sigmaY = (T)dimY / (T)4.0; sigmaY2 = sigmaY * sigmaY * (T)2.0;
@ -107,7 +107,7 @@ public:
y = (idx - z * dimX * dimY) / dimX;
x = idx % dimX;
}
VTKM_EXEC
T GetGaussian( T x, T y, T z ) const
{
@ -120,7 +120,7 @@ public:
}
VTKM_EXEC
void operator()(T& val, const vtkm::Id& workIdx) const
void operator()(T& val, const vtkm::Id& workIdx) const
{
vtkm::Id x, y, z;
Sig1Dto3D( workIdx, x, y, z );
@ -142,7 +142,7 @@ template< typename ArrayType >
void FillArray2D( ArrayType& array, vtkm::Id dimX, vtkm::Id dimY )
{
typedef vtkm::worklet::wavelets::GaussianWorklet2D WorkletType;
WorkletType worklet( dimX, dimY, 100.0,
WorkletType worklet( dimX, dimY, 100.0,
static_cast<vtkm::Float64>(dimX)/2.0, // center
static_cast<vtkm::Float64>(dimY)/2.0, // center
static_cast<vtkm::Float64>(dimX)/4.0, // spread
@ -177,14 +177,14 @@ void TestDecomposeReconstruct3D( vtkm::Float64 cratio )
// Use a WaveletCompressor
vtkm::worklet::wavelets::WaveletName wname = vtkm::worklet::wavelets::BIOR4_4;
if( wname == vtkm::worklet::wavelets::BIOR1_1 )
std::cout << "Using wavelet kernel = Bior1.1 (HAAR)" << std::endl;
else if( wname == vtkm::worklet::wavelets::BIOR2_2 )
std::cout << "Using wavelet kernel = Bior2.2 (CDF 5/3)" << std::endl;
else if( wname == vtkm::worklet::wavelets::BIOR3_3 )
std::cout << "Using wavelet kernel = Bior3.3 (CDF 8/4)" << std::endl;
else if( wname == vtkm::worklet::wavelets::BIOR4_4 )
std::cout << "Using wavelet kernel = Bior4.4 (CDF 9/7)" << std::endl;
if( wname == vtkm::worklet::wavelets::BIOR1_1 )
std::cout << "Using wavelet kernel = Bior1.1 (HAAR)" << std::endl;
else if( wname == vtkm::worklet::wavelets::BIOR2_2 )
std::cout << "Using wavelet kernel = Bior2.2 (CDF 5/3)" << std::endl;
else if( wname == vtkm::worklet::wavelets::BIOR3_3 )
std::cout << "Using wavelet kernel = Bior3.3 (CDF 8/4)" << std::endl;
else if( wname == vtkm::worklet::wavelets::BIOR4_4 )
std::cout << "Using wavelet kernel = Bior4.4 (CDF 9/7)" << std::endl;
vtkm::worklet::WaveletCompressor compressor( wname );
vtkm::Id XMaxLevel = compressor.GetWaveletMaxLevel( sigX );
@ -197,31 +197,31 @@ void TestDecomposeReconstruct3D( vtkm::Float64 cratio )
// Decompose
vtkm::cont::Timer<> timer;
computationTime =
computationTime =
compressor.WaveDecompose3D( inputArray, nLevels, sigX, sigY, sigZ, outputArray,
false, VTKM_DEFAULT_DEVICE_ADAPTER_TAG() );
elapsedTime1 = timer.GetElapsedTime();
elapsedTime1 = timer.GetElapsedTime();
std::cout << "Decompose time = " << elapsedTime1 << std::endl;
std::cout << " ->computation time = " << computationTime << std::endl;
// Squash small coefficients
timer.Reset();
compressor.SquashCoefficients( outputArray, cratio, VTKM_DEFAULT_DEVICE_ADAPTER_TAG() );
elapsedTime2 = timer.GetElapsedTime();
elapsedTime2 = timer.GetElapsedTime();
std::cout << "Squash time = " << elapsedTime2 << std::endl;
// Reconstruct
vtkm::cont::ArrayHandle<vtkm::Float32> reconstructArray;
timer.Reset();
computationTime =
computationTime =
compressor.WaveReconstruct3D( outputArray, nLevels, sigX, sigY, sigZ, reconstructArray,
false, VTKM_DEFAULT_DEVICE_ADAPTER_TAG() );
elapsedTime3 = timer.GetElapsedTime();
elapsedTime3 = timer.GetElapsedTime();
std::cout << "Reconstruction time = " << elapsedTime3 << std::endl;
std::cout << " ->computation time = " << computationTime << std::endl;
std::cout << "Total time = "
std::cout << "Total time = "
<< (elapsedTime1 + elapsedTime2 + elapsedTime3) << std::endl;
outputArray.ReleaseResources();
compressor.EvaluateReconstruction( inputArray, reconstructArray, VTKM_DEFAULT_DEVICE_ADAPTER_TAG() );
@ -233,7 +233,7 @@ void TestDecomposeReconstruct3D( vtkm::Float64 cratio )
inputArray.GetPortalConstControl().Get(i) ),
"WaveletCompressor 3D failed..." );
}
elapsedTime1 = timer.GetElapsedTime();
elapsedTime1 = timer.GetElapsedTime();
std::cout << "Verification time = " << elapsedTime1 << std::endl;
}
@ -268,31 +268,31 @@ void TestDecomposeReconstruct2D( vtkm::Float64 cratio )
// Decompose
vtkm::cont::Timer<> timer;
computationTime =
compressor.WaveDecompose2D( inputArray, nLevels, sigX, sigY, outputArray, L,
computationTime =
compressor.WaveDecompose2D( inputArray, nLevels, sigX, sigY, outputArray, L,
VTKM_DEFAULT_DEVICE_ADAPTER_TAG() );
elapsedTime1 = timer.GetElapsedTime();
elapsedTime1 = timer.GetElapsedTime();
std::cout << "Decompose time = " << elapsedTime1 << std::endl;
std::cout << " ->computation time = " << computationTime << std::endl;
// Squash small coefficients
timer.Reset();
compressor.SquashCoefficients( outputArray, cratio, VTKM_DEFAULT_DEVICE_ADAPTER_TAG() );
elapsedTime2 = timer.GetElapsedTime();
elapsedTime2 = timer.GetElapsedTime();
std::cout << "Squash time = " << elapsedTime2 << std::endl;
// Reconstruct
vtkm::cont::ArrayHandle<vtkm::Float64> reconstructArray;
timer.Reset();
computationTime =
computationTime =
compressor.WaveReconstruct2D( outputArray, nLevels, sigX, sigY, reconstructArray, L,
VTKM_DEFAULT_DEVICE_ADAPTER_TAG() );
elapsedTime3 = timer.GetElapsedTime();
elapsedTime3 = timer.GetElapsedTime();
std::cout << "Reconstruction time = " << elapsedTime3 << std::endl;
std::cout << " ->computation time = " << computationTime << std::endl;
std::cout << "Total time = "
std::cout << "Total time = "
<< (elapsedTime1 + elapsedTime2 + elapsedTime3) << std::endl;
outputArray.ReleaseResources();
compressor.EvaluateReconstruction( inputArray, reconstructArray, VTKM_DEFAULT_DEVICE_ADAPTER_TAG() );
@ -304,7 +304,7 @@ void TestDecomposeReconstruct2D( vtkm::Float64 cratio )
inputArray.GetPortalConstControl().Get(i) ),
"WaveletCompressor 2D failed..." );
}
elapsedTime1 = timer.GetElapsedTime();
elapsedTime1 = timer.GetElapsedTime();
std::cout << "Verification time = " << elapsedTime1 << std::endl;
}
@ -320,7 +320,7 @@ void TestDecomposeReconstruct1D( vtkm::Float64 cratio )
{
tmpVector.push_back( 100.0 * vtkm::Sin(static_cast<vtkm::Float64>(i)/100.0 ));
}
vtkm::cont::ArrayHandle<vtkm::Float64> inputArray =
vtkm::cont::ArrayHandle<vtkm::Float64> inputArray =
vtkm::cont::make_ArrayHandle(tmpVector);
vtkm::cont::ArrayHandle<vtkm::Float64> outputArray;
@ -341,20 +341,20 @@ void TestDecomposeReconstruct1D( vtkm::Float64 cratio )
vtkm::cont::Timer<> timer;
compressor.WaveDecompose( inputArray, nLevels, outputArray, L, VTKM_DEFAULT_DEVICE_ADAPTER_TAG() );
vtkm::Float64 elapsedTime = timer.GetElapsedTime();
vtkm::Float64 elapsedTime = timer.GetElapsedTime();
std::cout << "Decompose time = " << elapsedTime << std::endl;
// Squash small coefficients
timer.Reset();
compressor.SquashCoefficients( outputArray, cratio, VTKM_DEFAULT_DEVICE_ADAPTER_TAG() );
elapsedTime = timer.GetElapsedTime();
elapsedTime = timer.GetElapsedTime();
std::cout << "Squash time = " << elapsedTime << std::endl;
// Reconstruct
vtkm::cont::ArrayHandle<vtkm::Float64> reconstructArray;
timer.Reset();
compressor.WaveReconstruct( outputArray, nLevels, L, reconstructArray, VTKM_DEFAULT_DEVICE_ADAPTER_TAG() );
elapsedTime = timer.GetElapsedTime();
elapsedTime = timer.GetElapsedTime();
std::cout << "Reconstruction time = " << elapsedTime << std::endl;
compressor.EvaluateReconstruction( inputArray, reconstructArray, VTKM_DEFAULT_DEVICE_ADAPTER_TAG() );
@ -362,19 +362,19 @@ void TestDecomposeReconstruct1D( vtkm::Float64 cratio )
timer.Reset();
for( vtkm::Id i = 0; i < reconstructArray.GetNumberOfValues(); i++ )
{
VTKM_TEST_ASSERT( test_equal( reconstructArray.GetPortalConstControl().Get(i),
VTKM_TEST_ASSERT( test_equal( reconstructArray.GetPortalConstControl().Get(i),
inputArray.GetPortalConstControl().Get(i)),
"WaveletCompressor 1D failed..." );
}
elapsedTime = timer.GetElapsedTime();
elapsedTime = timer.GetElapsedTime();
std::cout << "Verification time = " << elapsedTime << std::endl;
}
void TestWaveletCompressor()
{
vtkm::Float64 cratio = 2.0; // X:1 compression, where X >= 1
std::cout << "Compression ratio = " << cratio << ":1 ";
std::cout << "(Reconstruction using higher compression ratios may result in failure in verification)" << std::endl;
std::cout << "Compression ratio = " << cratio << ":1 ";
std::cout << "(Reconstruction using higher compression ratios may result in failure in verification)" << std::endl;
TestDecomposeReconstruct1D( cratio );
std::cout << std::endl;

@ -43,7 +43,7 @@ public:
WaveletBase( WaveletName name ) : wname ( name ),
filter( name )
{
if( wname == CDF9_7 || wname == BIOR4_4 ||
if( wname == CDF9_7 || wname == BIOR4_4 ||
wname == CDF5_3 || wname == BIOR2_2 )
{
this->wmode = SYMW; // Default extension mode, see MatWaveBase.cpp
@ -63,7 +63,7 @@ public:
{
return((sigInLen+1) / 2);
}
else
else
{
return((sigInLen) / 2);
}
@ -77,7 +77,7 @@ public:
{
return((sigInLen-1) / 2);
}
else
else
{
return((sigInLen) / 2);
}
@ -103,7 +103,7 @@ public:
// Returns maximum wavelet decompostion level
vtkm::Id GetWaveletMaxLevel( vtkm::Id sigInLen )
{
vtkm::Id filterLen = this->filter.GetFilterLength();
vtkm::Id filterLen = this->filter.GetFilterLength();
vtkm::Id level;
this->WaveLengthValidate( sigInLen, filterLen, level );
return level;
@ -113,7 +113,7 @@ public:
// perform a device copy. The whole 1st array to a certain start location of the 2nd array
template< typename ArrayType1, typename ArrayType2, typename DeviceTag >
void DeviceCopyStartX( const ArrayType1 &srcArray,
void DeviceCopyStartX( const ArrayType1 &srcArray,
ArrayType2 &dstArray,
vtkm::Id startIdx,
DeviceTag )
@ -141,7 +141,7 @@ public:
// Assign zeros to a certain row to a matrix
template< typename ArrayType, typename DeviceTag >
void DeviceAssignZero2DRow( ArrayType &array, vtkm::Id dimX, vtkm::Id dimY, // input
vtkm::Id rowIdx, DeviceTag )
vtkm::Id rowIdx, DeviceTag )
{
typedef vtkm::worklet::wavelets::AssignZero2DWorklet AssignZero2DType;
AssignZero2DType zeroWorklet( dimX, dimY, -1, rowIdx );
@ -155,7 +155,7 @@ public:
// Assign zeros to a certain column to a matrix
template< typename ArrayType, typename DeviceTag >
void DeviceAssignZero2DColumn( ArrayType &array, vtkm::Id dimX, vtkm::Id dimY, // input
vtkm::Id colIdx, DeviceTag )
vtkm::Id colIdx, DeviceTag )
{
typedef vtkm::worklet::wavelets::AssignZero2DWorklet AssignZero2DType;
AssignZero2DType zeroWorklet( dimX, dimY, colIdx, -1 );
@ -213,14 +213,14 @@ public:
// Sort by the absolute value on device
struct SortLessAbsFunctor
{
{
template< typename T >
VTKM_EXEC
bool operator()(const T& x, const T& y) const
{
return vtkm::Abs(x) < vtkm::Abs(y);
}
};
bool operator()(const T& x, const T& y) const
{
return vtkm::Abs(x) < vtkm::Abs(y);
}
};
template< typename ArrayType, typename DeviceTag >
void DeviceSort( ArrayType &array, DeviceTag )
{
@ -229,7 +229,7 @@ public:
}
// Reduce to the sum of all values on device
template< typename ArrayType, typename DeviceTag >
typename ArrayType::ValueType DeviceSum( const ArrayType &array, DeviceTag )
@ -257,7 +257,7 @@ public:
return vtkm::Max(x, y);
}
};
// Device Min and Max functions
@ -301,18 +301,18 @@ public:
template< typename ArrayType, typename DeviceTag >
vtkm::Float64 DeviceCalculateVariance( ArrayType &array, DeviceTag )
{
vtkm::Float64 mean = static_cast<vtkm::Float64>(this->DeviceSum( array, DeviceTag() )) /
vtkm::Float64 mean = static_cast<vtkm::Float64>(this->DeviceSum( array, DeviceTag() )) /
static_cast<vtkm::Float64>(array.GetNumberOfValues());
vtkm::cont::ArrayHandle< vtkm::Float64 > squaredDeviation;
// Use a worklet
typedef vtkm::worklet::wavelets::SquaredDeviation SDWorklet;
SDWorklet sdw( mean );
vtkm::worklet::DispatcherMapField< SDWorklet, DeviceTag > dispatcher( sdw );
dispatcher.Invoke( array, squaredDeviation );
vtkm::Float64 sdMean = this->DeviceSum( squaredDeviation, DeviceTag() ) /
vtkm::Float64 sdMean = this->DeviceSum( squaredDeviation, DeviceTag() ) /
static_cast<vtkm::Float64>( squaredDeviation.GetNumberOfValues() );
return sdMean;
@ -387,8 +387,8 @@ protected:
}
else
{
level = static_cast<vtkm::Id>( vtkm::Floor( 1.0 +
vtkm::Log2( static_cast<vtkm::Float64>(sigInLen) /
level = static_cast<vtkm::Id>( vtkm::Floor( 1.0 +
vtkm::Log2( static_cast<vtkm::Float64>(sigInLen) /
static_cast<vtkm::Float64>(filterLength) ) ) );
}
}
@ -401,4 +401,4 @@ protected:
} // namespace worklet
} // namespace vtkm
#endif
#endif

File diff suppressed because it is too large Load Diff

@ -106,14 +106,14 @@ public:
}
}
vtkm::Id GetFilterLength()
{
return this->FilterLength;
vtkm::Id GetFilterLength()
{
return this->FilterLength;
}
bool isSymmetric()
{
return this->Symmetricity;
bool isSymmetric()
{
return this->Symmetricity;
}
typedef vtkm::cont::ArrayHandle<vtkm::Float64> FilterType;

File diff suppressed because it is too large Load Diff