Reporting Bugs/Issues for Contour Tree Uniform Filters
While I was testing the contour tree filters, I noticed the following issues.
Here are the testing environments:
Ubuntu 18.04
GCC/G++ 7.5.0
OpenMP 4.0
With Kokkos, MPI
Windows 10
MSVC2019 v16.8.4
With TBB, MPI
-
(Windows) Encoding Bug for "ContourTreeUniform.h" and "ContourTreeUniform.cxx". When compiling VTK-m, the MSVC compiler returned "Compiler Error C2447". After debugging, I noticed that after I change the encoding of these two files from UTF-8 to UTF-8-DOM, the compilation is successful. However, as UTF-8-DOM is not suggested, this is only a temporary fix. Since these two files are the only files having encoding issues when compiling with MSVC, I think there may be other ways to fix this encoding issue.
-
(Windows) In "examples/contour_tree_distributed/TreeCompilerApp.cxx", line 76, fopen(argv[argument], "r") may need to be changed to fopen(argv[argument], "rb"). Otherwise, on Windows (MSVC), the .dat files cannot be properly read.
-
(Windows + Linux) For the ContourTreeUniformDistributed Filter, if we use numBlocks=1, the output Dataset will only have one field, which is the same field as the active field of the input Dataset object. This is likely to be an unexpected behavior because I didn't see any code handling this situation. Currently, the testing code (UnitTestContourTreeUniformDistributedFilterMPI.cxx) directly connects partitions together without checking the number of partitions (line 421), which will throw an exception if numBlocks=1. An easy solution is to assert that numBlocks >= 2.
-
(Windows + Linux) In "examples/contour_tree_distributed/ContourTreeApp.cxx", when loading the ASCII data (I didn't test the BOV format because I am unfamiliar with it), it fails to work if one dimension is exactly 1 (which is often the case if the data is a 2D slice from a 3D dataset), because the smallest dimension (1) cannot be split anymore. There should be a special check that if the smallest dimension is 1, we reduce the dimension of the dataset by 1 (i.e. 3D->2D)
-
(Feature Request) In "examples/contour_tree_distributed/ContourTreeApp.cxx", I highly recommend add the data loader for VTK format (can be implemented with vtkm::io::VTKDataSetReader), because it is a popular data type for audience with experience for Paraview. Because 2D datasets in VTK format are always stored as 3D datasets, the previous bug (the smallest dimension being 1) needs to be fixed.
I will keep updating bugs in this thread. Please let me know if you have any questions.
Here is an example of the 2D VTK dataset I used during my tests (which comes from a public data source) heatedflow_0.vtk