diff --git a/vtkm/filter/CMakeLists.txt b/vtkm/filter/CMakeLists.txt index 5887d26d4..59a8f8cd0 100644 --- a/vtkm/filter/CMakeLists.txt +++ b/vtkm/filter/CMakeLists.txt @@ -51,6 +51,12 @@ set(deprecated_headers VectorMagnitude.h WarpScalar.h WarpVector.h + ZFPCompressor1D.h + ZFPCompressor2D.h + ZFPCompressor3D.h + ZFPDecompressor1D.h + ZFPDecompressor2D.h + ZFPDecompressor3D.h ) vtkm_declare_headers(${deprecated_headers}) @@ -105,12 +111,6 @@ set(extra_headers Triangulate.h Tube.h VertexClustering.h - ZFPCompressor1D.h - ZFPCompressor2D.h - ZFPCompressor3D.h - ZFPDecompressor1D.h - ZFPDecompressor2D.h - ZFPDecompressor3D.h ) set(extra_header_template_sources @@ -132,12 +132,6 @@ set(extra_header_template_sources Triangulate.hxx Tube.hxx VertexClustering.hxx - ZFPCompressor1D.hxx - ZFPCompressor2D.hxx - ZFPCompressor3D.hxx - ZFPDecompressor1D.hxx - ZFPDecompressor2D.hxx - ZFPDecompressor3D.hxx ) set(extra_sources_device @@ -211,6 +205,7 @@ add_subdirectory(field_conversion) add_subdirectory(field_transform) add_subdirectory(mesh_info) add_subdirectory(vector_analysis) +add_subdirectory(zfp) #-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- - if (VTKm_ENABLE_TESTING) diff --git a/vtkm/filter/ZFPCompressor1D.h b/vtkm/filter/ZFPCompressor1D.h index b0224f6c9..c28c65ba9 100644 --- a/vtkm/filter/ZFPCompressor1D.h +++ b/vtkm/filter/ZFPCompressor1D.h @@ -7,55 +7,33 @@ // the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR // PURPOSE. See the above copyright notice for more information. //============================================================================ - #ifndef vtk_m_filter_ZFPCompressor1D_h #define vtk_m_filter_ZFPCompressor1D_h -#include -#include +#include +#include namespace vtkm { namespace filter { -/// \brief Compress a scalar field using ZFP -/// Takes as input a 1D array and generates on -/// output of compressed data. -/// @warning -/// This filter is currently only supports 1D volumes. -class ZFPCompressor1D : public vtkm::filter::FilterField +VTKM_DEPRECATED(1.8, + "Use vtkm/filter/zfp/ZFPCompressor1D.h instead of vtkm/filter/ZFPCompressor1D.h.") +inline void ZFPCompressor1D_deprecated() {} + +inline void ZFPCompressor1D_deprecated_warning() { -public: - using SupportedTypes = vtkm::List; + ZFPCompressor1D_deprecated(); +} - VTKM_CONT - ZFPCompressor1D(); - - void SetRate(vtkm::Float64 _rate) { rate = _rate; } - vtkm::Float64 GetRate() { return rate; } - - template - VTKM_CONT vtkm::cont::DataSet DoExecute(const vtkm::cont::DataSet& input, - const vtkm::cont::ArrayHandle& field, - const vtkm::filter::FieldMetadata& fieldMeta, - const vtkm::filter::PolicyBase& policy); - - template - VTKM_CONT bool MapFieldOntoOutput(vtkm::cont::DataSet&, - const vtkm::cont::Field&, - vtkm::filter::PolicyBase) - { - return false; - } - -private: - vtkm::Float64 rate; - vtkm::worklet::ZFP1DCompressor compressor; +class VTKM_DEPRECATED(1.8, "Use vtkm::filter::zfp::ZFPCompressor1D.") ZFPCompressor1D + : public vtkm::filter::zfp::ZFPCompressor1D +{ + using zfp::ZFPCompressor1D::ZFPCompressor1D; }; + } } // namespace vtkm::filter -#include - -#endif // vtk_m_filter_ZFPCompressor1D_h +#endif //vtk_m_filter_ZFPCompressor1D_h diff --git a/vtkm/filter/ZFPCompressor1D.hxx b/vtkm/filter/ZFPCompressor1D.hxx deleted file mode 100644 index 8ff56b9b5..000000000 --- a/vtkm/filter/ZFPCompressor1D.hxx +++ /dev/null @@ -1,60 +0,0 @@ -//============================================================================ -// Copyright (c) Kitware, Inc. -// All rights reserved. -// See LICENSE.txt for details. -// -// This software is distributed WITHOUT ANY WARRANTY; without even -// the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR -// PURPOSE. See the above copyright notice for more information. -//============================================================================ -#ifndef vtk_m_filter_ZFPCompressor1D_hxx -#define vtk_m_filter_ZFPCompressor1D_hxx - -#include -#include -#include - -namespace vtkm -{ -namespace filter -{ - -namespace -{ - -bool IsCellSetStructured(const vtkm::cont::UnknownCellSet& cellset) -{ - if (cellset.template IsType>()) - - { - return true; - } - return false; -} -} // anonymous namespace - -//----------------------------------------------------------------------------- -inline VTKM_CONT ZFPCompressor1D::ZFPCompressor1D() - : vtkm::filter::FilterField() - , rate(0) -{ -} - - -//----------------------------------------------------------------------------- -template -inline VTKM_CONT vtkm::cont::DataSet ZFPCompressor1D::DoExecute( - const vtkm::cont::DataSet&, - const vtkm::cont::ArrayHandle& field, - const vtkm::filter::FieldMetadata&, - const vtkm::filter::PolicyBase&) -{ - auto compressed = compressor.Compress(field, rate, field.GetNumberOfValues()); - - vtkm::cont::DataSet dataset; - dataset.AddField(vtkm::cont::make_FieldPoint("compressed", compressed)); - return dataset; -} -} -} // namespace vtkm::filter -#endif diff --git a/vtkm/filter/ZFPCompressor2D.h b/vtkm/filter/ZFPCompressor2D.h index 6ebcc83c6..a71d4778e 100644 --- a/vtkm/filter/ZFPCompressor2D.h +++ b/vtkm/filter/ZFPCompressor2D.h @@ -7,55 +7,33 @@ // the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR // PURPOSE. See the above copyright notice for more information. //============================================================================ - #ifndef vtk_m_filter_ZFPCompressor2D_h #define vtk_m_filter_ZFPCompressor2D_h -#include -#include +#include +#include namespace vtkm { namespace filter { -/// \brief Compress a scalar field using ZFP -/// Takes as input a 1D array and generates on -/// output of compressed data. -/// @warning -/// This filter is currently only supports 1D volumes. -class ZFPCompressor2D : public vtkm::filter::FilterField +VTKM_DEPRECATED(1.8, + "Use vtkm/filter/zfp/ZFPCompressor2D.h instead of vtkm/filter/ZFPCompressor2D.h.") +inline void ZFPCompressor2D_deprecated() {} + +inline void ZFPCompressor2D_deprecated_warning() { -public: - using SupportedTypes = vtkm::List; + ZFPCompressor2D_deprecated(); +} - VTKM_CONT - ZFPCompressor2D(); - - void SetRate(vtkm::Float64 _rate) { rate = _rate; } - vtkm::Float64 GetRate() { return rate; } - - template - VTKM_CONT vtkm::cont::DataSet DoExecute(const vtkm::cont::DataSet& input, - const vtkm::cont::ArrayHandle& field, - const vtkm::filter::FieldMetadata& fieldMeta, - const vtkm::filter::PolicyBase& policy); - - template - VTKM_CONT bool MapFieldOntoOutput(vtkm::cont::DataSet&, - const vtkm::cont::Field&, - vtkm::filter::PolicyBase) - { - return false; - } - -private: - vtkm::Float64 rate; - vtkm::worklet::ZFP2DCompressor compressor; +class VTKM_DEPRECATED(1.8, "Use vtkm::filter::zfp::ZFPCompressor2D.") ZFPCompressor2D + : public vtkm::filter::zfp::ZFPCompressor2D +{ + using zfp::ZFPCompressor2D::ZFPCompressor2D; }; + } } // namespace vtkm::filter -#include - -#endif // vtk_m_filter_ZFPCompressor2D_h +#endif //vtk_m_filter_ZFPCompressor2D_h diff --git a/vtkm/filter/ZFPCompressor2D.hxx b/vtkm/filter/ZFPCompressor2D.hxx deleted file mode 100644 index 7ecde6e6f..000000000 --- a/vtkm/filter/ZFPCompressor2D.hxx +++ /dev/null @@ -1,67 +0,0 @@ -//============================================================================ -// Copyright (c) Kitware, Inc. -// All rights reserved. -// See LICENSE.txt for details. -// -// This software is distributed WITHOUT ANY WARRANTY; without even -// the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR -// PURPOSE. See the above copyright notice for more information. -//============================================================================ -#ifndef vtk_m_filter_ZFPCompressor2D_hxx -#define vtk_m_filter_ZFPCompressor2D_hxx - -#include -#include -#include - -namespace vtkm -{ -namespace filter -{ - -namespace -{ - -template -bool IsCellSet2DStructured(const vtkm::cont::UnknownCellSet& cellset) -{ - if (cellset.template IsType>()) - { - return true; - } - return false; -} -} // anonymous namespace - -//----------------------------------------------------------------------------- -inline VTKM_CONT ZFPCompressor2D::ZFPCompressor2D() - : vtkm::filter::FilterField() - , rate(0) -{ -} - - -//----------------------------------------------------------------------------- -template -inline VTKM_CONT vtkm::cont::DataSet ZFPCompressor2D::DoExecute( - const vtkm::cont::DataSet& input, - const vtkm::cont::ArrayHandle& field, - const vtkm::filter::FieldMetadata&, - const vtkm::filter::PolicyBase&) -{ - vtkm::cont::CellSetStructured<2> cellSet; - input.GetCellSet().AsCellSet(cellSet); - vtkm::Id2 pointDimensions = cellSet.GetPointDimensions(); - - - auto compressed = compressor.Compress(field, rate, pointDimensions); - - vtkm::cont::DataSet dataset; - dataset.SetCellSet(cellSet); - dataset.AddField(vtkm::cont::make_FieldPoint("compressed", compressed)); - - return dataset; -} -} -} // namespace vtkm::filter -#endif diff --git a/vtkm/filter/ZFPCompressor3D.h b/vtkm/filter/ZFPCompressor3D.h index 575f055e1..a310aba3a 100644 --- a/vtkm/filter/ZFPCompressor3D.h +++ b/vtkm/filter/ZFPCompressor3D.h @@ -7,54 +7,33 @@ // the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR // PURPOSE. See the above copyright notice for more information. //============================================================================ - #ifndef vtk_m_filter_ZFPCompressor3D_h #define vtk_m_filter_ZFPCompressor3D_h -#include -#include +#include +#include namespace vtkm { namespace filter { -/// \brief Compress a scalar field using ZFP -/// Takes as input a 1D array and generates on -/// output of compressed data. -/// @warning -/// This filter is currently only supports 1D volumes. -class ZFPCompressor3D : public vtkm::filter::FilterField +VTKM_DEPRECATED(1.8, + "Use vtkm/filter/zfp/ZFPCompressor3D.h instead of vtkm/filter/ZFPCompressor3D.h.") +inline void ZFPCompressor3D_deprecated() {} + +inline void ZFPCompressor3D_deprecated_warning() { -public: - using SupportedTypes = vtkm::List; - VTKM_CONT - ZFPCompressor3D(); + ZFPCompressor3D_deprecated(); +} - void SetRate(vtkm::Float64 _rate) { rate = _rate; } - vtkm::Float64 GetRate() { return rate; } - - template - VTKM_CONT vtkm::cont::DataSet DoExecute(const vtkm::cont::DataSet& input, - const vtkm::cont::ArrayHandle& field, - const vtkm::filter::FieldMetadata& fieldMeta, - const vtkm::filter::PolicyBase& policy); - - template - VTKM_CONT bool MapFieldOntoOutput(vtkm::cont::DataSet&, - const vtkm::cont::Field&, - vtkm::filter::PolicyBase) - { - return false; - } - -private: - vtkm::Float64 rate; - vtkm::worklet::ZFPCompressor compressor; +class VTKM_DEPRECATED(1.8, "Use vtkm::filter::zfp::ZFPCompressor3D.") ZFPCompressor3D + : public vtkm::filter::zfp::ZFPCompressor3D +{ + using zfp::ZFPCompressor3D::ZFPCompressor3D; }; + } } // namespace vtkm::filter -#include - -#endif // vtk_m_filter_ZFPCompressor3D_h +#endif //vtk_m_filter_ZFPCompressor3D_h diff --git a/vtkm/filter/ZFPCompressor3D.hxx b/vtkm/filter/ZFPCompressor3D.hxx deleted file mode 100644 index 8bc14a407..000000000 --- a/vtkm/filter/ZFPCompressor3D.hxx +++ /dev/null @@ -1,67 +0,0 @@ -//============================================================================ -// Copyright (c) Kitware, Inc. -// All rights reserved. -// See LICENSE.txt for details. -// -// This software is distributed WITHOUT ANY WARRANTY; without even -// the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR -// PURPOSE. See the above copyright notice for more information. -//============================================================================ -#ifndef vtk_m_filter_ZFPCompressor3D_hxx -#define vtk_m_filter_ZFPCompressor3D_hxx - -#include -#include -#include - -namespace vtkm -{ -namespace filter -{ - -namespace -{ - -template -bool IsCellSet3DStructured(const vtkm::cont::UnknownCellSet& cellset) -{ - if (cellset.template IsType>()) - { - return true; - } - return false; -} -} // anonymous namespace - -//----------------------------------------------------------------------------- -inline VTKM_CONT ZFPCompressor3D::ZFPCompressor3D() - : vtkm::filter::FilterField() - , rate(0) -{ -} - - -//----------------------------------------------------------------------------- -template -inline VTKM_CONT vtkm::cont::DataSet ZFPCompressor3D::DoExecute( - const vtkm::cont::DataSet& input, - const vtkm::cont::ArrayHandle& field, - const vtkm::filter::FieldMetadata&, - const vtkm::filter::PolicyBase&) -{ - vtkm::cont::CellSetStructured<3> cellSet; - input.GetCellSet().AsCellSet(cellSet); - vtkm::Id3 pointDimensions = cellSet.GetPointDimensions(); - - - auto compressed = compressor.Compress(field, rate, pointDimensions); - - vtkm::cont::DataSet dataset; - dataset.SetCellSet(cellSet); - dataset.AddField(vtkm::cont::make_FieldPoint("compressed", compressed)); - - return dataset; -} -} -} // namespace vtkm::filter -#endif diff --git a/vtkm/filter/ZFPDecompressor1D.h b/vtkm/filter/ZFPDecompressor1D.h index 2fdad1ed2..cb5056f18 100644 --- a/vtkm/filter/ZFPDecompressor1D.h +++ b/vtkm/filter/ZFPDecompressor1D.h @@ -7,62 +7,34 @@ // the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR // PURPOSE. See the above copyright notice for more information. //============================================================================ - #ifndef vtk_m_filter_ZFPDecompressor1D_h #define vtk_m_filter_ZFPDecompressor1D_h -#include -#include -#include +#include +#include namespace vtkm { namespace filter { -/// \brief Compress a scalar field using ZFP -/// Takes as input a 1D array and generates on -/// output of compressed data. -/// @warning -/// This filter is currently only supports 1D volumes. -class ZFPDecompressor1D : public vtkm::filter::FilterField +VTKM_DEPRECATED( + 1.8, + "Use vtkm/filter/zfp/ZFPDecompressor1D.h instead of vtkm/filter/ZFPDecompressor1D.h.") +inline void ZFPDecompressor1D_deprecated() {} + +inline void ZFPDecompressor1D_deprecated_warning() { -public: - using SupportedTypes = vtkm::List; + ZFPDecompressor1D_deprecated(); +} - VTKM_CONT - ZFPDecompressor1D(); - - void SetRate(vtkm::Float64 _rate) { rate = _rate; } - vtkm::Float64 GetRate() { return rate; } - - template - VTKM_CONT vtkm::cont::DataSet DoExecute(const vtkm::cont::DataSet& input, - const vtkm::cont::ArrayHandle& field, - const vtkm::filter::FieldMetadata& fieldMeta, - const vtkm::filter::PolicyBase& policy); - template - VTKM_CONT vtkm::cont::DataSet DoExecute( - const vtkm::cont::DataSet& input, - const vtkm::cont::ArrayHandle& field, - const vtkm::filter::FieldMetadata& fieldMeta, - const vtkm::filter::PolicyBase& policy); - - template - VTKM_CONT bool MapFieldOntoOutput(vtkm::cont::DataSet&, - const vtkm::cont::Field&, - vtkm::filter::PolicyBase) - { - return false; - } - -private: - vtkm::Float64 rate; - vtkm::worklet::ZFP1DDecompressor decompressor; +class VTKM_DEPRECATED(1.8, "Use vtkm::filter::zfp::ZFPDecompressor1D.") ZFPDecompressor1D + : public vtkm::filter::zfp::ZFPDecompressor1D +{ + using zfp::ZFPDecompressor1D::ZFPDecompressor1D; }; + } } // namespace vtkm::filter -#include - -#endif // vtk_m_filter_ZFPDecompressor1D_h +#endif //vtk_m_filter_ZFPDecompressor1D_h diff --git a/vtkm/filter/ZFPDecompressor1D.hxx b/vtkm/filter/ZFPDecompressor1D.hxx deleted file mode 100644 index 728a9d743..000000000 --- a/vtkm/filter/ZFPDecompressor1D.hxx +++ /dev/null @@ -1,57 +0,0 @@ -//============================================================================ -// Copyright (c) Kitware, Inc. -// All rights reserved. -// See LICENSE.txt for details. -// -// This software is distributed WITHOUT ANY WARRANTY; without even -// the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR -// PURPOSE. See the above copyright notice for more information. -//============================================================================ -#ifndef vtk_m_filter_ZFPDecompressor1D_hxx -#define vtk_m_filter_ZFPDecompressor1D_hxx - -#include -#include - -namespace vtkm -{ -namespace filter -{ - - -//----------------------------------------------------------------------------- -inline VTKM_CONT ZFPDecompressor1D::ZFPDecompressor1D() - : vtkm::filter::FilterField() -{ -} -//----------------------------------------------------------------------------- -template -inline VTKM_CONT vtkm::cont::DataSet ZFPDecompressor1D::DoExecute( - const vtkm::cont::DataSet&, - const vtkm::cont::ArrayHandle&, - const vtkm::filter::FieldMetadata&, - const vtkm::filter::PolicyBase&) -{ - VTKM_ASSERT(true); - vtkm::cont::DataSet ds; - return ds; -} - -//----------------------------------------------------------------------------- -template -inline VTKM_CONT vtkm::cont::DataSet ZFPDecompressor1D::DoExecute( - const vtkm::cont::DataSet&, - const vtkm::cont::ArrayHandle& field, - const vtkm::filter::FieldMetadata&, - const vtkm::filter::PolicyBase&) -{ - vtkm::cont::ArrayHandle decompress; - decompressor.Decompress(field, decompress, rate, field.GetNumberOfValues()); - - vtkm::cont::DataSet dataset; - dataset.AddField(vtkm::cont::make_FieldPoint("decompressed", decompress)); - return dataset; -} -} -} // namespace vtkm::filter -#endif diff --git a/vtkm/filter/ZFPDecompressor2D.h b/vtkm/filter/ZFPDecompressor2D.h index 4df980b53..8f514bb5f 100644 --- a/vtkm/filter/ZFPDecompressor2D.h +++ b/vtkm/filter/ZFPDecompressor2D.h @@ -7,62 +7,34 @@ // the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR // PURPOSE. See the above copyright notice for more information. //============================================================================ - #ifndef vtk_m_filter_ZFPDecompressor2D_h #define vtk_m_filter_ZFPDecompressor2D_h -#include -#include -#include +#include +#include namespace vtkm { namespace filter { -/// \brief Compress a scalar field using ZFP -/// Takes as input a 1D array and generates on -/// output of compressed data. -/// @warning -/// This filter is currently only supports 1D volumes. -class ZFPDecompressor2D : public vtkm::filter::FilterField +VTKM_DEPRECATED( + 1.8, + "Use vtkm/filter/zfp/ZFPDecompressor2D.h instead of vtkm/filter/ZFPDecompressor2D.h.") +inline void ZFPDecompressor2D_deprecated() {} + +inline void ZFPDecompressor2D_deprecated_warning() { -public: - using SupportedTypes = vtkm::List; + ZFPDecompressor2D_deprecated(); +} - VTKM_CONT - ZFPDecompressor2D(); - - void SetRate(vtkm::Float64 _rate) { rate = _rate; } - vtkm::Float64 GetRate() { return rate; } - - template - VTKM_CONT vtkm::cont::DataSet DoExecute(const vtkm::cont::DataSet& input, - const vtkm::cont::ArrayHandle& field, - const vtkm::filter::FieldMetadata& fieldMeta, - const vtkm::filter::PolicyBase& policy); - template - VTKM_CONT vtkm::cont::DataSet DoExecute( - const vtkm::cont::DataSet& input, - const vtkm::cont::ArrayHandle& field, - const vtkm::filter::FieldMetadata& fieldMeta, - const vtkm::filter::PolicyBase& policy); - - template - VTKM_CONT bool MapFieldOntoOutput(vtkm::cont::DataSet&, - const vtkm::cont::Field&, - vtkm::filter::PolicyBase) - { - return false; - } - -private: - vtkm::Float64 rate; - vtkm::worklet::ZFP2DDecompressor decompressor; +class VTKM_DEPRECATED(1.8, "Use vtkm::filter::zfp::ZFPDecompressor2D.") ZFPDecompressor2D + : public vtkm::filter::zfp::ZFPDecompressor2D +{ + using zfp::ZFPDecompressor2D::ZFPDecompressor2D; }; + } } // namespace vtkm::filter -#include - -#endif // vtk_m_filter_ZFPDecompressor2D_h +#endif //vtk_m_filter_ZFPDecompressor2D_h diff --git a/vtkm/filter/ZFPDecompressor2D.hxx b/vtkm/filter/ZFPDecompressor2D.hxx deleted file mode 100644 index a3b3b915b..000000000 --- a/vtkm/filter/ZFPDecompressor2D.hxx +++ /dev/null @@ -1,62 +0,0 @@ -//============================================================================ -// Copyright (c) Kitware, Inc. -// All rights reserved. -// See LICENSE.txt for details. -// -// This software is distributed WITHOUT ANY WARRANTY; without even -// the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR -// PURPOSE. See the above copyright notice for more information. -//============================================================================ -#ifndef vtk_m_filter_ZFPDecompressor2D_hxx -#define vtk_m_filter_ZFPDecompressor2D_hxx - -#include -#include - -namespace vtkm -{ -namespace filter -{ - - -//----------------------------------------------------------------------------- -inline VTKM_CONT ZFPDecompressor2D::ZFPDecompressor2D() - : vtkm::filter::FilterField() -{ -} -//----------------------------------------------------------------------------- -template -inline VTKM_CONT vtkm::cont::DataSet ZFPDecompressor2D::DoExecute( - const vtkm::cont::DataSet&, - const vtkm::cont::ArrayHandle&, - const vtkm::filter::FieldMetadata&, - const vtkm::filter::PolicyBase&) -{ - VTKM_ASSERT(true); - - vtkm::cont::DataSet ds; - return ds; -} - -//----------------------------------------------------------------------------- -template -inline VTKM_CONT vtkm::cont::DataSet ZFPDecompressor2D::DoExecute( - const vtkm::cont::DataSet& input, - const vtkm::cont::ArrayHandle& field, - const vtkm::filter::FieldMetadata&, - const vtkm::filter::PolicyBase&) -{ - vtkm::cont::CellSetStructured<2> cellSet; - input.GetCellSet().AsCellSet(cellSet); - vtkm::Id2 pointDimensions = cellSet.GetPointDimensions(); - - vtkm::cont::ArrayHandle decompress; - decompressor.Decompress(field, decompress, rate, pointDimensions); - - vtkm::cont::DataSet dataset; - dataset.AddField(vtkm::cont::make_FieldPoint("decompressed", decompress)); - return dataset; -} -} -} // namespace vtkm::filter -#endif diff --git a/vtkm/filter/ZFPDecompressor3D.h b/vtkm/filter/ZFPDecompressor3D.h index 6c84384c3..532d2252f 100644 --- a/vtkm/filter/ZFPDecompressor3D.h +++ b/vtkm/filter/ZFPDecompressor3D.h @@ -7,62 +7,34 @@ // the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR // PURPOSE. See the above copyright notice for more information. //============================================================================ - #ifndef vtk_m_filter_ZFPDecompressor3D_h #define vtk_m_filter_ZFPDecompressor3D_h -#include -#include -#include +#include +#include namespace vtkm { namespace filter { -/// \brief Compress a scalar field using ZFP -/// Takes as input a 1D array and generates on -/// output of compressed data. -/// @warning -/// This filter is currently only supports 1D volumes. -class ZFPDecompressor3D : public vtkm::filter::FilterField +VTKM_DEPRECATED( + 1.8, + "Use vtkm/filter/zfp/ZFPDecompressor3D.h instead of vtkm/filter/ZFPDecompressor3D.h.") +inline void ZFPDecompressor3D_deprecated() {} + +inline void ZFPDecompressor3D_deprecated_warning() { -public: - using SupportedTypes = vtkm::List; + ZFPDecompressor3D_deprecated(); +} - VTKM_CONT - ZFPDecompressor3D(); - - void SetRate(vtkm::Float64 _rate) { rate = _rate; } - vtkm::Float64 GetRate() { return rate; } - - template - VTKM_CONT vtkm::cont::DataSet DoExecute(const vtkm::cont::DataSet& input, - const vtkm::cont::ArrayHandle& field, - const vtkm::filter::FieldMetadata& fieldMeta, - const vtkm::filter::PolicyBase& policy); - template - VTKM_CONT vtkm::cont::DataSet DoExecute( - const vtkm::cont::DataSet& input, - const vtkm::cont::ArrayHandle& field, - const vtkm::filter::FieldMetadata& fieldMeta, - const vtkm::filter::PolicyBase& policy); - - template - VTKM_CONT bool MapFieldOntoOutput(vtkm::cont::DataSet&, - const vtkm::cont::Field&, - vtkm::filter::PolicyBase) - { - return false; - } - -private: - vtkm::Float64 rate; - vtkm::worklet::ZFPDecompressor decompressor; +class VTKM_DEPRECATED(1.8, "Use vtkm::filter::zfp::ZFPDecompressor3D.") ZFPDecompressor3D + : public vtkm::filter::zfp::ZFPDecompressor3D +{ + using zfp::ZFPDecompressor3D::ZFPDecompressor3D; }; + } } // namespace vtkm::filter -#include - -#endif // vtk_m_filter_ZFPDecompressor3D_h +#endif //vtk_m_filter_ZFPDecompressor3D_h diff --git a/vtkm/filter/ZFPDecompressor3D.hxx b/vtkm/filter/ZFPDecompressor3D.hxx deleted file mode 100644 index f2eb76654..000000000 --- a/vtkm/filter/ZFPDecompressor3D.hxx +++ /dev/null @@ -1,61 +0,0 @@ -//============================================================================ -// Copyright (c) Kitware, Inc. -// All rights reserved. -// See LICENSE.txt for details. -// -// This software is distributed WITHOUT ANY WARRANTY; without even -// the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR -// PURPOSE. See the above copyright notice for more information. -//============================================================================ -#ifndef vtk_m_filter_ZFPDecompressor3D_hxx -#define vtk_m_filter_ZFPDecompressor3D_hxx - -#include -#include - -namespace vtkm -{ -namespace filter -{ - - -//----------------------------------------------------------------------------- -inline VTKM_CONT ZFPDecompressor3D::ZFPDecompressor3D() - : vtkm::filter::FilterField() -{ -} -//----------------------------------------------------------------------------- -template -inline VTKM_CONT vtkm::cont::DataSet ZFPDecompressor3D::DoExecute( - const vtkm::cont::DataSet&, - const vtkm::cont::ArrayHandle&, - const vtkm::filter::FieldMetadata&, - const vtkm::filter::PolicyBase&) -{ - VTKM_ASSERT(true); - vtkm::cont::DataSet ds; - return ds; -} - -//----------------------------------------------------------------------------- -template -inline VTKM_CONT vtkm::cont::DataSet ZFPDecompressor3D::DoExecute( - const vtkm::cont::DataSet& input, - const vtkm::cont::ArrayHandle& field, - const vtkm::filter::FieldMetadata&, - const vtkm::filter::PolicyBase&) -{ - vtkm::cont::CellSetStructured<3> cellSet; - input.GetCellSet().AsCellSet(cellSet); - vtkm::Id3 pointDimensions = cellSet.GetPointDimensions(); - - vtkm::cont::ArrayHandle decompress; - decompressor.Decompress(field, decompress, rate, pointDimensions); - - vtkm::cont::DataSet dataset; - dataset.AddField(vtkm::cont::make_FieldPoint("decompressed", decompress)); - return dataset; -} -} -} // namespace vtkm::filter -#endif diff --git a/vtkm/filter/testing/CMakeLists.txt b/vtkm/filter/testing/CMakeLists.txt index 775e98a30..13ab5c917 100644 --- a/vtkm/filter/testing/CMakeLists.txt +++ b/vtkm/filter/testing/CMakeLists.txt @@ -33,7 +33,6 @@ set(unit_tests UnitTestTriangulateFilter.cxx UnitTestTubeFilter.cxx UnitTestVertexClusteringFilter.cxx - UnitTestZFP.cxx ) #Taking too long to compile with HIPCC diff --git a/vtkm/filter/zfp/CMakeLists.txt b/vtkm/filter/zfp/CMakeLists.txt new file mode 100644 index 000000000..7bbc39a10 --- /dev/null +++ b/vtkm/filter/zfp/CMakeLists.txt @@ -0,0 +1,42 @@ +##============================================================================ +## Copyright (c) Kitware, Inc. +## All rights reserved. +## See LICENSE.txt for details. +## +## This software is distributed WITHOUT ANY WARRANTY; without even +## the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +## PURPOSE. See the above copyright notice for more information. +##============================================================================ +set(zfp_headers + ZFPCompressor1D.h + ZFPCompressor2D.h + ZFPCompressor3D.h + ZFPDecompressor1D.h + ZFPDecompressor2D.h + ZFPDecompressor3D.h + ) + +set(zfp_sources_device + ZFPCompressor1D.cxx + ZFPCompressor2D.cxx + ZFPCompressor3D.cxx + ZFPDecompressor1D.cxx + ZFPDecompressor2D.cxx + ZFPDecompressor3D.cxx + ) + +vtkm_library( + NAME vtkm_filter_zfp + HEADERS ${zfp_headers} + DEVICE_SOURCES ${zfp_sources_device} + USE_VTKM_JOB_POOL +) + +target_link_libraries(vtkm_filter_zfp PUBLIC vtkm_worklet vtkm_filter_core) +target_link_libraries(vtkm_filter PUBLIC INTERFACE vtkm_filter_zfp) + +add_subdirectory(worklet) +#-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- - +if (VTKm_ENABLE_TESTING) + add_subdirectory(testing) +endif () diff --git a/vtkm/filter/zfp/ZFPCompressor1D.cxx b/vtkm/filter/zfp/ZFPCompressor1D.cxx new file mode 100644 index 000000000..c5e82da79 --- /dev/null +++ b/vtkm/filter/zfp/ZFPCompressor1D.cxx @@ -0,0 +1,38 @@ +//============================================================================ +// Copyright (c) Kitware, Inc. +// All rights reserved. +// See LICENSE.txt for details. +// +// This software is distributed WITHOUT ANY WARRANTY; without even +// the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +// PURPOSE. See the above copyright notice for more information. +//============================================================================ + +#include +#include + +namespace vtkm +{ +namespace filter +{ +namespace zfp +{ +//----------------------------------------------------------------------------- +VTKM_CONT vtkm::cont::DataSet ZFPCompressor1D::DoExecute(const vtkm::cont::DataSet& input) +{ + const auto& field = this->GetFieldFromDataSet(input); + + vtkm::cont::ArrayHandle compressed; + vtkm::worklet::ZFP1DCompressor compressor; + using SupportedTypes = vtkm::List; + field.GetData().CastAndCallForTypesWithFloatFallback( + [&](const auto& concrete) { + compressed = compressor.Compress(concrete, rate, field.GetNumberOfValues()); + }); + + // TODO: is it really PointField or WHOLE_MESH, should we do it the same way as Histogram? + return this->CreateResultFieldPoint(input, "compressed", compressed); +} +} // namespace zfp +} // namespace filter +} // namespace vtkm diff --git a/vtkm/filter/zfp/ZFPCompressor1D.h b/vtkm/filter/zfp/ZFPCompressor1D.h new file mode 100644 index 000000000..a02e37cdf --- /dev/null +++ b/vtkm/filter/zfp/ZFPCompressor1D.h @@ -0,0 +1,44 @@ +//============================================================================ +// Copyright (c) Kitware, Inc. +// All rights reserved. +// See LICENSE.txt for details. +// +// This software is distributed WITHOUT ANY WARRANTY; without even +// the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +// PURPOSE. See the above copyright notice for more information. +//============================================================================ + +#ifndef vtk_m_filter_zfp_ZFPCompressor1D_h +#define vtk_m_filter_zfp_ZFPCompressor1D_h + +#include +#include + +namespace vtkm +{ +namespace filter +{ +namespace zfp +{ +/// \brief Compress a scalar field using ZFP + +/// Takes as input a 1D array and generates on +/// output of compressed data. +/// @warning +/// This filter is currently only supports 1D volumes. +class VTKM_FILTER_ZFP_EXPORT ZFPCompressor1D : public vtkm::filter::NewFilterField +{ +public: + void SetRate(vtkm::Float64 _rate) { rate = _rate; } + vtkm::Float64 GetRate() { return rate; } + +private: + VTKM_CONT vtkm::cont::DataSet DoExecute(const vtkm::cont::DataSet& input); + + vtkm::Float64 rate = 0; +}; +} // namespace zfp +} // namespace filter +} // namespace vtkm::filter + +#endif // vtk_m_filter_zfp_ZFPCompressor1D_h diff --git a/vtkm/filter/zfp/ZFPCompressor2D.cxx b/vtkm/filter/zfp/ZFPCompressor2D.cxx new file mode 100644 index 000000000..c07dbdbce --- /dev/null +++ b/vtkm/filter/zfp/ZFPCompressor2D.cxx @@ -0,0 +1,43 @@ +//============================================================================ +// Copyright (c) Kitware, Inc. +// All rights reserved. +// See LICENSE.txt for details. +// +// This software is distributed WITHOUT ANY WARRANTY; without even +// the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +// PURPOSE. See the above copyright notice for more information. +//============================================================================ + +#include +#include + +namespace vtkm +{ +namespace filter +{ +namespace zfp +{ +//----------------------------------------------------------------------------- +VTKM_CONT vtkm::cont::DataSet ZFPCompressor2D::DoExecute(const vtkm::cont::DataSet& input) +{ + vtkm::cont::CellSetStructured<2> cellSet; + input.GetCellSet().AsCellSet(cellSet); + vtkm::Id2 pointDimensions = cellSet.GetPointDimensions(); + + vtkm::cont::ArrayHandle compressed; + + vtkm::worklet::ZFP2DCompressor compressor; + using SupportedTypes = vtkm::List; + this->GetFieldFromDataSet(input) + .GetData() + .CastAndCallForTypesWithFloatFallback( + [&](const auto& concrete) { + compressed = compressor.Compress(concrete, rate, pointDimensions); + }); + + // TODO: is it really PointField or WHOLE_MESH, should we do it the same way as Histogram? + return this->CreateResultFieldPoint(input, "compressed", compressed); +} +} // namespace zfp +} // namespace filter +} // namespace vtkm diff --git a/vtkm/filter/zfp/ZFPCompressor2D.h b/vtkm/filter/zfp/ZFPCompressor2D.h new file mode 100644 index 000000000..468db08e0 --- /dev/null +++ b/vtkm/filter/zfp/ZFPCompressor2D.h @@ -0,0 +1,44 @@ +//============================================================================ +// Copyright (c) Kitware, Inc. +// All rights reserved. +// See LICENSE.txt for details. +// +// This software is distributed WITHOUT ANY WARRANTY; without even +// the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +// PURPOSE. See the above copyright notice for more information. +//============================================================================ + +#ifndef vtk_m_filter_zfp_ZFPCompressor2D_h +#define vtk_m_filter_zfp_ZFPCompressor2D_h + +#include +#include + +namespace vtkm +{ +namespace filter +{ +namespace zfp +{ +/// \brief Compress a scalar field using ZFP + +/// Takes as input a 1D array and generates on +/// output of compressed data. +/// @warning +/// This filter is currently only supports 1D volumes. +class VTKM_FILTER_ZFP_EXPORT ZFPCompressor2D : public vtkm::filter::NewFilterField +{ +public: + void SetRate(vtkm::Float64 _rate) { rate = _rate; } + vtkm::Float64 GetRate() { return rate; } + +private: + VTKM_CONT vtkm::cont::DataSet DoExecute(const vtkm::cont::DataSet& input) override; + + vtkm::Float64 rate = 0; +}; +} // namespace zfp +} // namespace filter +} // namespace vtkm + +#endif // vtk_m_filter_zfp_ZFPCompressor2D_h diff --git a/vtkm/filter/zfp/ZFPCompressor3D.cxx b/vtkm/filter/zfp/ZFPCompressor3D.cxx new file mode 100644 index 000000000..e712172ed --- /dev/null +++ b/vtkm/filter/zfp/ZFPCompressor3D.cxx @@ -0,0 +1,43 @@ +//============================================================================ +// Copyright (c) Kitware, Inc. +// All rights reserved. +// See LICENSE.txt for details. +// +// This software is distributed WITHOUT ANY WARRANTY; without even +// the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +// PURPOSE. See the above copyright notice for more information. +//============================================================================ + +#include +#include + +namespace vtkm +{ +namespace filter +{ +namespace zfp +{ +//----------------------------------------------------------------------------- +VTKM_CONT vtkm::cont::DataSet ZFPCompressor3D::DoExecute(const vtkm::cont::DataSet& input) +{ + vtkm::cont::CellSetStructured<3> cellSet; + input.GetCellSet().AsCellSet(cellSet); + vtkm::Id3 pointDimensions = cellSet.GetPointDimensions(); + + vtkm::cont::ArrayHandle compressed; + + vtkm::worklet::ZFPCompressor compressor; + using SupportedTypes = vtkm::List; + this->GetFieldFromDataSet(input) + .GetData() + .CastAndCallForTypesWithFloatFallback( + [&](const auto& concrete) { + compressed = compressor.Compress(concrete, rate, pointDimensions); + }); + + // TODO: is it really PointField or WHOLE_MESH, should we do it the same way as Histogram? + return this->CreateResultFieldPoint(input, "compressed", compressed); +} +} // namespace zfp +} // namespace filter +} // namespace vtkm diff --git a/vtkm/filter/zfp/ZFPCompressor3D.h b/vtkm/filter/zfp/ZFPCompressor3D.h new file mode 100644 index 000000000..783cb9f7b --- /dev/null +++ b/vtkm/filter/zfp/ZFPCompressor3D.h @@ -0,0 +1,44 @@ +//============================================================================ +// Copyright (c) Kitware, Inc. +// All rights reserved. +// See LICENSE.txt for details. +// +// This software is distributed WITHOUT ANY WARRANTY; without even +// the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +// PURPOSE. See the above copyright notice for more information. +//============================================================================ + +#ifndef vtk_m_filter_zfp_ZFPCompressor3D_h +#define vtk_m_filter_zfp_ZFPCompressor3D_h + +#include +#include + +namespace vtkm +{ +namespace filter +{ +namespace zfp +{ +/// \brief Compress a scalar field using ZFP + +/// Takes as input a 1D array and generates on +/// output of compressed data. +/// @warning +/// This filter is currently only supports 1D volumes. +class VTKM_FILTER_ZFP_EXPORT ZFPCompressor3D : public vtkm::filter::NewFilterField +{ +public: + void SetRate(vtkm::Float64 _rate) { rate = _rate; } + vtkm::Float64 GetRate() { return rate; } + +private: + VTKM_CONT vtkm::cont::DataSet DoExecute(const vtkm::cont::DataSet& input) override; + + vtkm::Float64 rate = 0; +}; +} +} +} // namespace vtkm::filter + +#endif // vtk_m_filter_zfp_ZFPCompressor3D_h diff --git a/vtkm/filter/zfp/ZFPDecompressor1D.cxx b/vtkm/filter/zfp/ZFPDecompressor1D.cxx new file mode 100644 index 000000000..03dcb6b49 --- /dev/null +++ b/vtkm/filter/zfp/ZFPDecompressor1D.cxx @@ -0,0 +1,37 @@ +//============================================================================ +// Copyright (c) Kitware, Inc. +// All rights reserved. +// See LICENSE.txt for details. +// +// This software is distributed WITHOUT ANY WARRANTY; without even +// the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +// PURPOSE. See the above copyright notice for more information. +//============================================================================ + +#include +#include +#include + +namespace vtkm +{ +namespace filter +{ +namespace zfp +{ +//----------------------------------------------------------------------------- +VTKM_CONT vtkm::cont::DataSet ZFPDecompressor1D::DoExecute(const vtkm::cont::DataSet& input) +{ + // FIXME: it looks like the compressor can compress Ints and Floats but only decompressed + // to Float64? + vtkm::cont::ArrayHandle compressed; + vtkm::cont::ArrayCopyShallowIfPossible(this->GetFieldFromDataSet(input).GetData(), compressed); + + vtkm::cont::ArrayHandle decompressed; + vtkm::worklet::ZFP1DDecompressor decompressor; + decompressor.Decompress(compressed, decompressed, this->rate, compressed.GetNumberOfValues()); + + return this->CreateResultFieldPoint(input, "decompressed", decompressed); +} +} // namespace zfp +} // namespace filter +} // namespace vtkm diff --git a/vtkm/filter/zfp/ZFPDecompressor1D.h b/vtkm/filter/zfp/ZFPDecompressor1D.h new file mode 100644 index 000000000..4283e4cb9 --- /dev/null +++ b/vtkm/filter/zfp/ZFPDecompressor1D.h @@ -0,0 +1,44 @@ +//============================================================================ +// Copyright (c) Kitware, Inc. +// All rights reserved. +// See LICENSE.txt for details. +// +// This software is distributed WITHOUT ANY WARRANTY; without even +// the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +// PURPOSE. See the above copyright notice for more information. +//============================================================================ + +#ifndef vtk_m_filter_zfp_ZFPDecompressor1D_h +#define vtk_m_filter_zfp_ZFPDecompressor1D_h + +#include +#include + +namespace vtkm +{ +namespace filter +{ +namespace zfp +{ +/// \brief Compress a scalar field using ZFP + +/// Takes as input a 1D array and generates on +/// output of compressed data. +/// @warning +/// This filter is currently only supports 1D volumes. +class VTKM_FILTER_ZFP_EXPORT ZFPDecompressor1D : public vtkm::filter::NewFilterField +{ +public: + void SetRate(vtkm::Float64 _rate) { rate = _rate; } + vtkm::Float64 GetRate() { return rate; } + +private: + VTKM_CONT vtkm::cont::DataSet DoExecute(const vtkm::cont::DataSet& input) override; + + vtkm::Float64 rate = 0; +}; +} // namespace zfp +} // namespace filter +} // namespace vtkm + +#endif // vtk_m_filter_zfp_ZFPDecompressor1D_h diff --git a/vtkm/filter/zfp/ZFPDecompressor2D.cxx b/vtkm/filter/zfp/ZFPDecompressor2D.cxx new file mode 100644 index 000000000..21248e16e --- /dev/null +++ b/vtkm/filter/zfp/ZFPDecompressor2D.cxx @@ -0,0 +1,41 @@ +//============================================================================ +// Copyright (c) Kitware, Inc. +// All rights reserved. +// See LICENSE.txt for details. +// +// This software is distributed WITHOUT ANY WARRANTY; without even +// the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +// PURPOSE. See the above copyright notice for more information. +//============================================================================ + +#include +#include +#include + +namespace vtkm +{ +namespace filter +{ +namespace zfp +{ +//----------------------------------------------------------------------------- +VTKM_CONT vtkm::cont::DataSet ZFPDecompressor2D::DoExecute(const vtkm::cont::DataSet& input) +{ + // FIXME: it looks like the compressor can compress Ints and Floats but only decompressed + // to Float64? + vtkm::cont::ArrayHandle compressed; + vtkm::cont::ArrayCopyShallowIfPossible(this->GetFieldFromDataSet(input).GetData(), compressed); + + vtkm::cont::CellSetStructured<2> cellSet; + input.GetCellSet().AsCellSet(cellSet); + vtkm::Id2 pointDimensions = cellSet.GetPointDimensions(); + + vtkm::cont::ArrayHandle decompressed; + vtkm::worklet::ZFP2DDecompressor decompressor; + decompressor.Decompress(compressed, decompressed, this->rate, pointDimensions); + + return this->CreateResultFieldPoint(input, "decompressed", decompressed); +} +} // namespace zfp +} // namespace filter +} // namespace vtkm diff --git a/vtkm/filter/zfp/ZFPDecompressor2D.h b/vtkm/filter/zfp/ZFPDecompressor2D.h new file mode 100644 index 000000000..bda18ed84 --- /dev/null +++ b/vtkm/filter/zfp/ZFPDecompressor2D.h @@ -0,0 +1,44 @@ +//============================================================================ +// Copyright (c) Kitware, Inc. +// All rights reserved. +// See LICENSE.txt for details. +// +// This software is distributed WITHOUT ANY WARRANTY; without even +// the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +// PURPOSE. See the above copyright notice for more information. +//============================================================================ + +#ifndef vtk_m_filter_zfp_ZFPDecompressor2D_h +#define vtk_m_filter_zfp_ZFPDecompressor2D_h + +#include +#include + +namespace vtkm +{ +namespace filter +{ +namespace zfp +{ +/// \brief Compress a scalar field using ZFP + +/// Takes as input a 1D array and generates on +/// output of compressed data. +/// @warning +/// This filter is currently only supports 1D volumes. +class VTKM_FILTER_ZFP_EXPORT ZFPDecompressor2D : public vtkm::filter::NewFilterField +{ +public: + void SetRate(vtkm::Float64 _rate) { rate = _rate; } + vtkm::Float64 GetRate() { return rate; } + +private: + VTKM_CONT vtkm::cont::DataSet DoExecute(const vtkm::cont::DataSet& input) override; + + vtkm::Float64 rate = 0; +}; +} // namespace zfp +} // namespace filter +} // namespace vtkm + +#endif // vtk_m_filter_zfp_ZFPDecompressor2D_h diff --git a/vtkm/filter/zfp/ZFPDecompressor3D.cxx b/vtkm/filter/zfp/ZFPDecompressor3D.cxx new file mode 100644 index 000000000..6a0469289 --- /dev/null +++ b/vtkm/filter/zfp/ZFPDecompressor3D.cxx @@ -0,0 +1,41 @@ +//============================================================================ +// Copyright (c) Kitware, Inc. +// All rights reserved. +// See LICENSE.txt for details. +// +// This software is distributed WITHOUT ANY WARRANTY; without even +// the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +// PURPOSE. See the above copyright notice for more information. +//============================================================================ + +#include +#include +#include + +namespace vtkm +{ +namespace filter +{ +namespace zfp +{ +//----------------------------------------------------------------------------- +VTKM_CONT vtkm::cont::DataSet ZFPDecompressor3D::DoExecute(const vtkm::cont::DataSet& input) +{ + // FIXME: it looks like the compressor can compress Ints and Floats but only decompressed + // to Float64? + vtkm::cont::ArrayHandle compressed; + vtkm::cont::ArrayCopyShallowIfPossible(this->GetFieldFromDataSet(input).GetData(), compressed); + + vtkm::cont::CellSetStructured<3> cellSet; + input.GetCellSet().AsCellSet(cellSet); + vtkm::Id3 pointDimensions = cellSet.GetPointDimensions(); + + vtkm::cont::ArrayHandle decompressed; + vtkm::worklet::ZFPDecompressor decompressor; + decompressor.Decompress(compressed, decompressed, this->rate, pointDimensions); + + return this->CreateResultFieldPoint(input, "decompressed", decompressed); +} +} // namespace zfp +} // namespace filter +} // namespace vtkm diff --git a/vtkm/filter/zfp/ZFPDecompressor3D.h b/vtkm/filter/zfp/ZFPDecompressor3D.h new file mode 100644 index 000000000..8245e6f34 --- /dev/null +++ b/vtkm/filter/zfp/ZFPDecompressor3D.h @@ -0,0 +1,44 @@ +//============================================================================ +// Copyright (c) Kitware, Inc. +// All rights reserved. +// See LICENSE.txt for details. +// +// This software is distributed WITHOUT ANY WARRANTY; without even +// the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +// PURPOSE. See the above copyright notice for more information. +//============================================================================ + +#ifndef vtk_m_filter_zfp_ZFPDecompressor3D_h +#define vtk_m_filter_zfp_ZFPDecompressor3D_h + +#include +#include + +namespace vtkm +{ +namespace filter +{ +namespace zfp +{ +/// \brief Compress a scalar field using ZFP + +/// Takes as input a 1D array and generates on +/// output of compressed data. +/// @warning +/// This filter is currently only supports 1D volumes. +class VTKM_FILTER_ZFP_EXPORT ZFPDecompressor3D : public vtkm::filter::NewFilterField +{ +public: + void SetRate(vtkm::Float64 _rate) { rate = _rate; } + vtkm::Float64 GetRate() { return rate; } + +private: + VTKM_CONT vtkm::cont::DataSet DoExecute(const vtkm::cont::DataSet& input) override; + + vtkm::Float64 rate = 0; +}; +} // namespace zfp +} // namespace filter +} // namespace vtkm + +#endif // vtk_m_filter_zfp_ZFPDecompressor3D_h diff --git a/vtkm/filter/zfp/testing/CMakeLists.txt b/vtkm/filter/zfp/testing/CMakeLists.txt new file mode 100644 index 000000000..fa7a4d641 --- /dev/null +++ b/vtkm/filter/zfp/testing/CMakeLists.txt @@ -0,0 +1,23 @@ +##============================================================================ +## Copyright (c) Kitware, Inc. +## All rights reserved. +## See LICENSE.txt for details. +## +## This software is distributed WITHOUT ANY WARRANTY; without even +## the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +## PURPOSE. See the above copyright notice for more information. +##============================================================================ + +set(unit_tests + UnitTestZFP.cxx + ) + +set(libraries + vtkm_filter_zfp + ) + +vtkm_unit_tests( + SOURCES ${unit_tests} + LIBRARIES ${libraries} + USE_VTKM_JOB_POOL +) diff --git a/vtkm/filter/testing/UnitTestZFP.cxx b/vtkm/filter/zfp/testing/UnitTestZFP.cxx similarity index 80% rename from vtkm/filter/testing/UnitTestZFP.cxx rename to vtkm/filter/zfp/testing/UnitTestZFP.cxx index f994ee694..c4fbf2854 100644 --- a/vtkm/filter/testing/UnitTestZFP.cxx +++ b/vtkm/filter/zfp/testing/UnitTestZFP.cxx @@ -8,21 +8,18 @@ // PURPOSE. See the above copyright notice for more information. //============================================================================ -#include -#include -#include #include -#include +#include #include -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include -namespace vtkm_ut_zfp_filter +namespace { void TestZFP1DFilter(vtkm::Float64 rate) @@ -34,8 +31,8 @@ void TestZFP1DFilter(vtkm::Float64 rate) dynField.AsArrayHandle(field); auto oport = field.ReadPortal(); - vtkm::filter::ZFPCompressor1D compressor; - vtkm::filter::ZFPDecompressor1D decompressor; + vtkm::filter::zfp::ZFPCompressor1D compressor; + vtkm::filter::zfp::ZFPDecompressor1D decompressor; compressor.SetActiveField("pointvar"); compressor.SetRate(rate); @@ -65,16 +62,13 @@ void TestZFP2DFilter(vtkm::Float64 rate) dynField.AsArrayHandle(field); auto oport = field.ReadPortal(); - - vtkm::filter::ZFPCompressor2D compressor; - vtkm::filter::ZFPDecompressor2D decompressor; + vtkm::filter::zfp::ZFPCompressor2D compressor; + vtkm::filter::zfp::ZFPDecompressor2D decompressor; compressor.SetActiveField("pointvar"); compressor.SetRate(rate); auto compressed = compressor.Execute(dataset); - - decompressor.SetActiveField("compressed"); decompressor.SetRate(rate); auto decompress = decompressor.Execute(compressed); @@ -99,9 +93,8 @@ void TestZFP3DFilter(vtkm::Float64 rate) dynField.AsArrayHandle(field); auto oport = field.ReadPortal(); - - vtkm::filter::ZFPCompressor3D compressor; - vtkm::filter::ZFPDecompressor3D decompressor; + vtkm::filter::zfp::ZFPCompressor3D compressor; + vtkm::filter::zfp::ZFPDecompressor3D decompressor; compressor.SetActiveField("pointvar"); compressor.SetRate(rate); @@ -131,5 +124,5 @@ void TestZFPFilter() int UnitTestZFP(int argc, char* argv[]) { - return vtkm::cont::testing::Testing::Run(vtkm_ut_zfp_filter::TestZFPFilter, argc, argv); + return vtkm::cont::testing::Testing::Run(TestZFPFilter, argc, argv); } diff --git a/vtkm/filter/zfp/worklet/CMakeLists.txt b/vtkm/filter/zfp/worklet/CMakeLists.txt new file mode 100644 index 000000000..8bafb9490 --- /dev/null +++ b/vtkm/filter/zfp/worklet/CMakeLists.txt @@ -0,0 +1,23 @@ +##============================================================================ +## Copyright (c) Kitware, Inc. +## All rights reserved. +## See LICENSE.txt for details. +## +## This software is distributed WITHOUT ANY WARRANTY; without even +## the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +## PURPOSE. See the above copyright notice for more information. +##============================================================================ + +set(headers + ZFP1DCompressor.h + ZFP1DDecompress.h + ZFP2DCompressor.h + ZFP2DDecompress.h + ZFPCompressor.h + ZFPDecompress.h + ) + +add_subdirectory(zfp) + +#----------------------------------------------------------------------------- +vtkm_declare_headers(${headers}) diff --git a/vtkm/worklet/ZFP1DCompressor.h b/vtkm/filter/zfp/worklet/ZFP1DCompressor.h similarity index 96% rename from vtkm/worklet/ZFP1DCompressor.h rename to vtkm/filter/zfp/worklet/ZFP1DCompressor.h index 048df977e..64f8915f8 100644 --- a/vtkm/worklet/ZFP1DCompressor.h +++ b/vtkm/filter/zfp/worklet/ZFP1DCompressor.h @@ -19,8 +19,8 @@ #include #include -#include -#include +#include +#include using ZFPWord = vtkm::UInt64; diff --git a/vtkm/worklet/ZFP1DDecompress.h b/vtkm/filter/zfp/worklet/ZFP1DDecompress.h similarity index 96% rename from vtkm/worklet/ZFP1DDecompress.h rename to vtkm/filter/zfp/worklet/ZFP1DDecompress.h index bf21000a3..205a711e5 100644 --- a/vtkm/worklet/ZFP1DDecompress.h +++ b/vtkm/filter/zfp/worklet/ZFP1DDecompress.h @@ -18,9 +18,9 @@ #include #include #include +#include +#include #include -#include -#include using ZFPWord = vtkm::UInt64; diff --git a/vtkm/worklet/ZFP2DCompressor.h b/vtkm/filter/zfp/worklet/ZFP2DCompressor.h similarity index 96% rename from vtkm/worklet/ZFP2DCompressor.h rename to vtkm/filter/zfp/worklet/ZFP2DCompressor.h index ae70bb5d6..dba1e2c16 100644 --- a/vtkm/worklet/ZFP2DCompressor.h +++ b/vtkm/filter/zfp/worklet/ZFP2DCompressor.h @@ -19,8 +19,8 @@ #include #include -#include -#include +#include +#include using ZFPWord = vtkm::UInt64; diff --git a/vtkm/worklet/ZFP2DDecompress.h b/vtkm/filter/zfp/worklet/ZFP2DDecompress.h similarity index 96% rename from vtkm/worklet/ZFP2DDecompress.h rename to vtkm/filter/zfp/worklet/ZFP2DDecompress.h index 3ef108604..d6c97516b 100644 --- a/vtkm/worklet/ZFP2DDecompress.h +++ b/vtkm/filter/zfp/worklet/ZFP2DDecompress.h @@ -18,9 +18,9 @@ #include #include #include +#include +#include #include -#include -#include using ZFPWord = vtkm::UInt64; diff --git a/vtkm/worklet/ZFPCompressor.h b/vtkm/filter/zfp/worklet/ZFPCompressor.h similarity index 96% rename from vtkm/worklet/ZFPCompressor.h rename to vtkm/filter/zfp/worklet/ZFPCompressor.h index 70f4a64dc..208b68747 100644 --- a/vtkm/worklet/ZFPCompressor.h +++ b/vtkm/filter/zfp/worklet/ZFPCompressor.h @@ -19,8 +19,8 @@ #include #include -#include -#include +#include +#include using ZFPWord = vtkm::UInt64; diff --git a/vtkm/worklet/ZFPDecompress.h b/vtkm/filter/zfp/worklet/ZFPDecompress.h similarity index 96% rename from vtkm/worklet/ZFPDecompress.h rename to vtkm/filter/zfp/worklet/ZFPDecompress.h index 10faaccb0..18cdd087a 100644 --- a/vtkm/worklet/ZFPDecompress.h +++ b/vtkm/filter/zfp/worklet/ZFPDecompress.h @@ -18,9 +18,9 @@ #include #include #include +#include +#include #include -#include -#include using ZFPWord = vtkm::UInt64; diff --git a/vtkm/worklet/zfp/CMakeLists.txt b/vtkm/filter/zfp/worklet/zfp/CMakeLists.txt similarity index 100% rename from vtkm/worklet/zfp/CMakeLists.txt rename to vtkm/filter/zfp/worklet/zfp/CMakeLists.txt diff --git a/vtkm/worklet/zfp/ZFPBlockReader.h b/vtkm/filter/zfp/worklet/zfp/ZFPBlockReader.h similarity index 98% rename from vtkm/worklet/zfp/ZFPBlockReader.h rename to vtkm/filter/zfp/worklet/zfp/ZFPBlockReader.h index bf503546a..fafac4632 100644 --- a/vtkm/worklet/zfp/ZFPBlockReader.h +++ b/vtkm/filter/zfp/worklet/zfp/ZFPBlockReader.h @@ -10,7 +10,7 @@ #ifndef vtk_m_worklet_zfp_block_reader_h #define vtk_m_worklet_zfp_block_reader_h -#include +#include namespace vtkm { diff --git a/vtkm/worklet/zfp/ZFPBlockWriter.h b/vtkm/filter/zfp/worklet/zfp/ZFPBlockWriter.h similarity index 98% rename from vtkm/worklet/zfp/ZFPBlockWriter.h rename to vtkm/filter/zfp/worklet/zfp/ZFPBlockWriter.h index 2b78d7a25..46478a4d7 100644 --- a/vtkm/worklet/zfp/ZFPBlockWriter.h +++ b/vtkm/filter/zfp/worklet/zfp/ZFPBlockWriter.h @@ -10,7 +10,7 @@ #ifndef vtk_m_worklet_zfp_block_writer_h #define vtk_m_worklet_zfp_block_writer_h -#include +#include namespace vtkm { diff --git a/vtkm/worklet/zfp/ZFPCodec.h b/vtkm/filter/zfp/worklet/zfp/ZFPCodec.h similarity index 100% rename from vtkm/worklet/zfp/ZFPCodec.h rename to vtkm/filter/zfp/worklet/zfp/ZFPCodec.h diff --git a/vtkm/worklet/zfp/ZFPDecode.h b/vtkm/filter/zfp/worklet/zfp/ZFPDecode.h similarity index 97% rename from vtkm/worklet/zfp/ZFPDecode.h rename to vtkm/filter/zfp/worklet/zfp/ZFPDecode.h index 8200e7d38..7e45bd5bd 100644 --- a/vtkm/worklet/zfp/ZFPDecode.h +++ b/vtkm/filter/zfp/worklet/zfp/ZFPDecode.h @@ -11,10 +11,10 @@ #define vtk_m_worklet_zfp_decode_h #include +#include +#include +#include #include -#include -#include -#include namespace vtkm { diff --git a/vtkm/worklet/zfp/ZFPDecode1.h b/vtkm/filter/zfp/worklet/zfp/ZFPDecode1.h similarity index 91% rename from vtkm/worklet/zfp/ZFPDecode1.h rename to vtkm/filter/zfp/worklet/zfp/ZFPDecode1.h index 51ad6a32e..40b4b505f 100644 --- a/vtkm/worklet/zfp/ZFPDecode1.h +++ b/vtkm/filter/zfp/worklet/zfp/ZFPDecode1.h @@ -13,12 +13,12 @@ #include #include +#include +#include +#include +#include +#include #include -#include -#include -#include -#include -#include namespace vtkm { diff --git a/vtkm/worklet/zfp/ZFPDecode2.h b/vtkm/filter/zfp/worklet/zfp/ZFPDecode2.h similarity index 93% rename from vtkm/worklet/zfp/ZFPDecode2.h rename to vtkm/filter/zfp/worklet/zfp/ZFPDecode2.h index b5a8789ca..7b1319bca 100644 --- a/vtkm/worklet/zfp/ZFPDecode2.h +++ b/vtkm/filter/zfp/worklet/zfp/ZFPDecode2.h @@ -13,12 +13,12 @@ #include #include +#include +#include +#include +#include +#include #include -#include -#include -#include -#include -#include namespace vtkm { diff --git a/vtkm/worklet/zfp/ZFPDecode3.h b/vtkm/filter/zfp/worklet/zfp/ZFPDecode3.h similarity index 94% rename from vtkm/worklet/zfp/ZFPDecode3.h rename to vtkm/filter/zfp/worklet/zfp/ZFPDecode3.h index 58f952c33..8cd5a7119 100644 --- a/vtkm/worklet/zfp/ZFPDecode3.h +++ b/vtkm/filter/zfp/worklet/zfp/ZFPDecode3.h @@ -13,12 +13,12 @@ #include #include +#include +#include +#include +#include +#include #include -#include -#include -#include -#include -#include namespace vtkm { diff --git a/vtkm/worklet/zfp/ZFPEncode.h b/vtkm/filter/zfp/worklet/zfp/ZFPEncode.h similarity index 98% rename from vtkm/worklet/zfp/ZFPEncode.h rename to vtkm/filter/zfp/worklet/zfp/ZFPEncode.h index 5b22d4a28..7e05b79c4 100644 --- a/vtkm/worklet/zfp/ZFPEncode.h +++ b/vtkm/filter/zfp/worklet/zfp/ZFPEncode.h @@ -11,10 +11,10 @@ #define vtk_m_worklet_zfp_encode_h #include +#include +#include +#include #include -#include -#include -#include namespace vtkm { diff --git a/vtkm/worklet/zfp/ZFPEncode1.h b/vtkm/filter/zfp/worklet/zfp/ZFPEncode1.h similarity index 91% rename from vtkm/worklet/zfp/ZFPEncode1.h rename to vtkm/filter/zfp/worklet/zfp/ZFPEncode1.h index 7d2d95321..85f3b4921 100644 --- a/vtkm/worklet/zfp/ZFPEncode1.h +++ b/vtkm/filter/zfp/worklet/zfp/ZFPEncode1.h @@ -13,12 +13,12 @@ #include #include +#include +#include +#include +#include +#include #include -#include -#include -#include -#include -#include diff --git a/vtkm/worklet/zfp/ZFPEncode2.h b/vtkm/filter/zfp/worklet/zfp/ZFPEncode2.h similarity index 93% rename from vtkm/worklet/zfp/ZFPEncode2.h rename to vtkm/filter/zfp/worklet/zfp/ZFPEncode2.h index 8b6ec47da..2a541e84b 100644 --- a/vtkm/worklet/zfp/ZFPEncode2.h +++ b/vtkm/filter/zfp/worklet/zfp/ZFPEncode2.h @@ -13,12 +13,12 @@ #include #include +#include +#include +#include +#include +#include #include -#include -#include -#include -#include -#include diff --git a/vtkm/worklet/zfp/ZFPEncode3.h b/vtkm/filter/zfp/worklet/zfp/ZFPEncode3.h similarity index 94% rename from vtkm/worklet/zfp/ZFPEncode3.h rename to vtkm/filter/zfp/worklet/zfp/ZFPEncode3.h index 0f31cb76f..c98ae972d 100644 --- a/vtkm/worklet/zfp/ZFPEncode3.h +++ b/vtkm/filter/zfp/worklet/zfp/ZFPEncode3.h @@ -13,12 +13,12 @@ #include #include +#include +#include +#include +#include +#include #include -#include -#include -#include -#include -#include namespace vtkm { diff --git a/vtkm/worklet/zfp/ZFPFunctions.h b/vtkm/filter/zfp/worklet/zfp/ZFPFunctions.h similarity index 89% rename from vtkm/worklet/zfp/ZFPFunctions.h rename to vtkm/filter/zfp/worklet/zfp/ZFPFunctions.h index d1d5bd9e6..0142856dd 100644 --- a/vtkm/worklet/zfp/ZFPFunctions.h +++ b/vtkm/filter/zfp/worklet/zfp/ZFPFunctions.h @@ -11,9 +11,9 @@ #define vtk_m_worklet_zfp_functions_h #include -#include -#include -#include +#include +#include +#include namespace vtkm { diff --git a/vtkm/worklet/zfp/ZFPStructs.h b/vtkm/filter/zfp/worklet/zfp/ZFPStructs.h similarity index 93% rename from vtkm/worklet/zfp/ZFPStructs.h rename to vtkm/filter/zfp/worklet/zfp/ZFPStructs.h index 6f13ebfa7..2d2a5564a 100644 --- a/vtkm/worklet/zfp/ZFPStructs.h +++ b/vtkm/filter/zfp/worklet/zfp/ZFPStructs.h @@ -15,8 +15,8 @@ #define ZFP_MAX_PREC 64 /* maximum precision supported */ #define ZFP_MIN_EXP -1074 /* minimum floating-point base-2 exponent */ -#include -#include +#include +#include namespace vtkm { diff --git a/vtkm/worklet/zfp/ZFPTools.h b/vtkm/filter/zfp/worklet/zfp/ZFPTools.h similarity index 98% rename from vtkm/worklet/zfp/ZFPTools.h rename to vtkm/filter/zfp/worklet/zfp/ZFPTools.h index 751ea57fd..51ee7bb95 100644 --- a/vtkm/worklet/zfp/ZFPTools.h +++ b/vtkm/filter/zfp/worklet/zfp/ZFPTools.h @@ -19,7 +19,7 @@ #include #include -#include +#include using ZFPWord = vtkm::UInt64; diff --git a/vtkm/worklet/zfp/ZFPTypeInfo.h b/vtkm/filter/zfp/worklet/zfp/ZFPTypeInfo.h similarity index 100% rename from vtkm/worklet/zfp/ZFPTypeInfo.h rename to vtkm/filter/zfp/worklet/zfp/ZFPTypeInfo.h diff --git a/vtkm/worklet/CMakeLists.txt b/vtkm/worklet/CMakeLists.txt index afc91483a..bca9ef1cd 100644 --- a/vtkm/worklet/CMakeLists.txt +++ b/vtkm/worklet/CMakeLists.txt @@ -56,12 +56,6 @@ set(headers WorkletCellNeighborhood.h WorkletPointNeighborhood.h WorkletReduceByKey.h - ZFPCompressor.h - ZFPDecompress.h - ZFP1DCompressor.h - ZFP1DDecompress.h - ZFP2DCompressor.h - ZFP2DDecompress.h ) @@ -101,7 +95,6 @@ add_subdirectory(tetrahedralize) add_subdirectory(triangulate) add_subdirectory(wavelets) add_subdirectory(particleadvection) -add_subdirectory(zfp) vtkm_library( NAME vtkm_worklet diff --git a/vtkm/worklet/testing/CMakeLists.txt b/vtkm/worklet/testing/CMakeLists.txt index f6bd66341..0b6fd72d3 100644 --- a/vtkm/worklet/testing/CMakeLists.txt +++ b/vtkm/worklet/testing/CMakeLists.txt @@ -56,7 +56,6 @@ set(unit_tests UnitTestWorkletReduceByKey.cxx UnitTestVertexClustering.cxx UnitTestWaveletCompressor.cxx - UnitTestZFPCompressor.cxx ) if(HIP IN_LIST Kokkos_DEVICES) diff --git a/vtkm/worklet/testing/UnitTestZFPCompressor.cxx b/vtkm/worklet/testing/UnitTestZFPCompressor.cxx deleted file mode 100644 index 16418b7d8..000000000 --- a/vtkm/worklet/testing/UnitTestZFPCompressor.cxx +++ /dev/null @@ -1,169 +0,0 @@ -//============================================================================ -// Copyright (c) Kitware, Inc. -// All rights reserved. -// See LICENSE.txt for details. -// -// This software is distributed WITHOUT ANY WARRANTY; without even -// the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR -// PURPOSE. See the above copyright notice for more information. -//============================================================================ - -#include -#include - -#include -#include - -#include -#include - -#include -#include -#include - -#include -#include -#include - - -template -void writeArray(vtkm::cont::ArrayHandle& field, std::string filename) -{ - auto val = vtkm::worklet::zfp::detail::GetVTKMPointer(field); - std::ofstream output(filename, std::ios::binary | std::ios::out); - output.write(reinterpret_cast(val), field.GetNumberOfValues() * 8); - output.close(); - - for (int i = 0; i < field.GetNumberOfValues(); i++) - { - std::cout << val[i] << " "; - } - std::cout << std::endl; -} - -using Handle64 = vtkm::cont::ArrayHandle; -template -void Test1D(int rate) -{ - vtkm::Id dims = 256; - vtkm::cont::testing::MakeTestDataSet testDataSet; - vtkm::cont::DataSet dataset = testDataSet.Make1DUniformDataSet2(); - auto dynField = dataset.GetField("pointvar").GetData(); - - vtkm::worklet::ZFP1DCompressor compressor; - vtkm::worklet::ZFP1DDecompressor decompressor; - - if (vtkm::cont::IsType(dynField)) - { - vtkm::cont::ArrayHandle handle; - const vtkm::Id size = dynField.AsArrayHandle().GetNumberOfValues(); - handle.Allocate(size); - - auto fPortal = dynField.AsArrayHandle().ReadPortal(); - auto hPortal = handle.WritePortal(); - for (vtkm::Id i = 0; i < size; ++i) - { - hPortal.Set(i, static_cast(fPortal.Get(i))); - } - - auto compressed = compressor.Compress(handle, rate, dims); - //writeArray(compressed, "output.zfp"); - vtkm::cont::ArrayHandle decoded; - decompressor.Decompress(compressed, decoded, rate, dims); - auto oport = decoded.ReadPortal(); - for (int i = 0; i < 4; i++) - { - VTKM_TEST_ASSERT(test_equal(oport.Get(i), fPortal.Get(i), 0.8)); - } - } -} -template -void Test2D(int rate) -{ - vtkm::Id2 dims(16, 16); - vtkm::cont::testing::MakeTestDataSet testDataSet; - vtkm::cont::DataSet dataset = testDataSet.Make2DUniformDataSet2(); - auto dynField = dataset.GetField("pointvar").GetData(); - - vtkm::worklet::ZFP2DCompressor compressor; - vtkm::worklet::ZFP2DDecompressor decompressor; - - if (vtkm::cont::IsType(dynField)) - { - vtkm::cont::ArrayHandle handle; - const vtkm::Id size = dynField.AsArrayHandle().GetNumberOfValues(); - handle.Allocate(size); - - auto fPortal = dynField.AsArrayHandle().ReadPortal(); - auto hPortal = handle.WritePortal(); - for (vtkm::Id i = 0; i < size; ++i) - { - hPortal.Set(i, static_cast(fPortal.Get(i))); - } - - auto compressed = compressor.Compress(handle, rate, dims); - vtkm::cont::ArrayHandle decoded; - decompressor.Decompress(compressed, decoded, rate, dims); - auto oport = decoded.ReadPortal(); - for (int i = 0; i < 4; i++) - { - VTKM_TEST_ASSERT(test_equal(oport.Get(i), fPortal.Get(i), 0.8)); - } - } -} -template -void Test3D(int rate) -{ - vtkm::Id3 dims(4, 4, 4); - //vtkm::Id3 dims(4,4,7); - //vtkm::Id3 dims(8,8,8); - //vtkm::Id3 dims(256,256,256); - //vtkm::Id3 dims(128,128,128); - vtkm::cont::testing::MakeTestDataSet testDataSet; - vtkm::cont::DataSet dataset = testDataSet.Make3DUniformDataSet3(dims); - auto dynField = dataset.GetField("pointvar").GetData(); - - vtkm::worklet::ZFPCompressor compressor; - vtkm::worklet::ZFPDecompressor decompressor; - - if (vtkm::cont::IsType(dynField)) - { - vtkm::cont::ArrayHandle handle; - const vtkm::Id size = dynField.AsArrayHandle().GetNumberOfValues(); - handle.Allocate(size); - - auto fPortal = dynField.AsArrayHandle().ReadPortal(); - auto hPortal = handle.WritePortal(); - for (vtkm::Id i = 0; i < size; ++i) - { - hPortal.Set(i, static_cast(fPortal.Get(i))); - } - - auto compressed = compressor.Compress(handle, rate, dims); - - vtkm::cont::ArrayHandle decoded; - decompressor.Decompress(compressed, decoded, rate, dims); - auto oport = decoded.ReadPortal(); - for (int i = 0; i < 4; i++) - { - // Note the huge tolerance: This filter is clearly wrong. - // See Issue #582. - VTKM_TEST_ASSERT(test_equal(oport.Get(i), fPortal.Get(i), 0.8)); - } - } -} - -void TestZFP() -{ - Test3D(4); - Test2D(4); - Test1D(4); - //Test3D(4); - //Test3D(4); - //Test3D(4); -} - -int UnitTestZFPCompressor(int argc, char* argv[]) -{ - return vtkm::cont::testing::Testing::Run(TestZFP, argc, argv); -}