Commit Graph

7847 Commits

Author SHA1 Message Date
Dave Pugmire
97b460110f Fix issues....... 2023-03-15 12:45:45 -04:00
Dave Pugmire
6db8c316ad Merge branch 'master' of https://gitlab.kitware.com/vtk/vtk-m into add_visit_file_reader 2023-03-15 09:23:03 -04:00
Dave Pugmire
39cb7a653b kick the build machines. 2023-03-14 21:06:02 -04:00
Dave Pugmire
c989550111 Better error checking and logging. 2023-03-14 15:15:06 -04:00
Kenneth Moreland
7ddf3d85c5 Merge topic 'remove-unlicensed-data'
5aba6e1be Remove unlicensed data

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: Vicente Bolea <vicente.bolea@kitware.com>
Merge-request: !3012
2023-03-14 11:42:03 -04:00
Dave Pugmire
2a6220726d Error checking for number of blocks. 2023-03-13 16:26:58 -04:00
Dave Pugmire
f60f437000 Add VisIt file reader. 2023-03-13 16:13:21 -04:00
Kenneth Moreland
5aba6e1bea Remove unlicensed data
Some of the test data sets are derived from data sets that are commonly
distributed to test visualization algorithms and are featured in
numerous papers. However, I am unable to track down the original source
let alone identify what license, if any, they were released under. To
avoid any complications with data ownership, remove these data sets and
replace them with in house data sets that we explicitly own.
2023-03-13 13:54:44 -06:00
Louis Gombert
ea13c27613 Minor Shrink filter fixes 2023-03-09 16:46:58 +01:00
Louis Gombert
b970a6f4c7 Merge topic 'shrink-filter'
67d6780fb Add Shrink filter

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: Kenneth Moreland <morelandkd@ornl.gov>
Merge-request: !3007
2023-03-09 09:14:01 -05:00
Louis Gombert
67d6780fba Add Shrink filter
This filter shrinks the cells of a DataSet towards their centroid, computed as the average position of the cell points
2023-03-09 09:48:46 +01:00
Kenneth Moreland
58fc99c2f8 Fix fast paths for ArrayRangeCompute
The precompiled `ArrayRangeCompute` function was not following proper fast
paths for special arrays. For example, when computing the range of an
`ArrayHandleUniformPointCoordinates`, the ranges should be taken from the
origin and spacing of the special array. However, the precompiled version
was calling the generic range computation, which was doing an unnecessary
reduction over the entire array. These fast paths have been fixed.

These mistakes in the code were caused by quirks in how templated method
overloading works. To prevent this mistake from happening again in the
precompiled `ArrayRangeCompute` function and elsewhere, all templated forms
of `ArrayRangeCompute` have been deprecated. Most will call
`ArrayRangeCompute` with no issues. For those that need the templated
version, `ArrayRangeComputeTemplate` replaces the old templated
`ArrayRangeCompute`. There is exactly one templated declaration of
`ArrayRangeComputeTemplate` that uses a class, `ArrayRangeComputeImpl`,
with partial specialization to ensure the correct form is used.
2023-03-08 12:36:53 -07:00
Kenneth Moreland
4b19139f3d Add tests to UnitTestArrayRangeCompute
Make the test a bit more complete by testing more array types.
2023-03-08 12:36:53 -07:00
Kenneth Moreland
69a9d4a87e Merge topic 'convert-runtime-vec-array'
331a277fe Automatically convert between ArrayHandleBasic and ArrayHandleRuntimeVec

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: Li-Ta Lo <ollie@lanl.gov>
Merge-request: !2994
2023-03-08 14:35:30 -05:00
Thomas H. Gibson
b1bb050bc8 Merge topic 'thrust-sorting'
267ee49cb docker: update kokkos hip image
67bf9a966 docker: update kokkos hip image
50d4ab5cc CMake: VTKm_ENABLE_KOKKOS_THRUST to depend on Kokkos with CUDA or HIP enabled
0604f314a Fix for building SERIAL unit tests with KOKKOS_HIP/CUDA enabled
802bf80b0 CI: Add rocthrust installation step
fda475d5b Rework Thrust CMake options
e6f63a807 Adding CMake tweaks to turn off thrust algorithms if thrust is not detected.
5a72275ed Rewrite sorting specialization using std::enable_if_t
...

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !2926
2023-03-06 09:48:43 -05:00
Kenneth Moreland
2af555f6c9 Simplify serialization of DataSet objects
`vtkm::cont::DataSet` is a dynamic object that can hold cell sets and
fields of many different types, none of which are known until runtime. This
causes a problem with serialization, which has to know what type to compile
the serialization for, particularly when unserializing the type at the
receiving end. The original implementation "solved" the problem by creating
a secondary wrapper object that was templated on types of field arrays and
cell sets that might be serialized. This is not a great solution as it
punts the problem to algorithm developers.

This problem has been completely solved for fields, as it is possible to
serialize most types of arrays without knowing their type now. You still
need to iterate over every possible `CellSet` type, but there are not that
many `CellSet`s that are practically encountered. Thus, there is now a
direct implementation of `Serialization` for `DataSet` that covers all the
data types you are likely to encounter.

The old `SerializableDataSet` has been deprecated. In the unlikely event an
algorithm needs to transfer a non-standard type of `CellSet` (such as a
permuted cell set), it can use the replacement `DataSetWithCellSetTypes`,
which just specifies the cell set types.
2023-03-03 09:17:44 -07:00
Vicente Adolfo Bolea Sanchez
ecd4a68ffc cxx,c++: Remove c++14 references
- MSVC C++14 support obtained from: https://learn.microsoft.com/en-us/cpp/overview/visual-cpp-language-conformance?view=msvc-170
- _MSVC_VER taken from https://stackoverflow.com/a/70630/2420872

fixes: #754
2023-02-23 19:30:58 -05:00
Kenneth Moreland
331a277fe3 Automatically convert between ArrayHandleBasic and ArrayHandleRuntimeVec
The `UnknownArrayHandle` has been updated to allow
`ArrayHandleRuntimeVec` to work interchangeably with basic
`ArrayHandle`. If an `ArrayHandleRuntimeVec` is put into an
`UnknownArrayHandle`, it can be later retrieved as an `ArrayHandleBasic`
as long as the base component type matches and it has the correct amount
of components. This means that an array can be created as an
`ArrayHandleRuntimeVec` and be used with any filters or most other
features designed to operate on basic `ArrayHandle`s. Likewise, an array
added as a basic `ArrayHandle` can be retrieved in an
`ArrayHandleRuntimeVec`. This makes it easier to pull arrays from VTK-m
and place them in external structures (such as `vtkDataArray`).
2023-02-20 07:39:49 -07:00
Sean Miller
0604f314aa Fix for building SERIAL unit tests with KOKKOS_HIP/CUDA enabled 2023-02-20 08:28:34 -06:00
Sean Miller
e6f63a807d Adding CMake tweaks to turn off thrust algorithms if thrust is not detected. 2023-02-20 08:26:24 -06:00
Thomas Gibson
5a72275ed8 Rewrite sorting specialization using std::enable_if_t 2023-02-20 08:25:05 -06:00
Sean Miller
04013b9924 Add sorting implementation using thrust
Co-authored-by: Thomas Gibson <thomas.gibson@amd.com>
2023-02-20 08:25:02 -06:00
Vicente Bolea
cf3c9bc921 Merge topic 'fix-compile_fix_for_sycl'
2ac236fe2 kokkos: disable volatile when kokkos >= 3.7

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !2991
2023-02-18 18:35:41 -05:00
Vicente Adolfo Bolea Sanchez
2ac236fe21 kokkos: disable volatile when kokkos >= 3.7 2023-02-17 20:56:14 -05:00
Vicente Adolfo Bolea Sanchez
36912c16dc kokkos: disable volatile when kokkos >= 3.7 2023-02-17 20:29:38 -05:00
Kenneth Moreland
383c3e1b60 Merge topic 'runtime-vec-array'
504d241b4 Correct documentation about `ArrayHandle`s with `Vec`-like values
cdd1dbd7b Add ArrayHandleRuntimeVec
a7679c9e9 Add more safety to VecTraits
da731005b Remove unused comments in test

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: Sujin Philip <sujin.philip@kitware.com>
Merge-request: !2982
2023-02-17 13:35:47 -05:00
Vicente Adolfo Bolea Sanchez
6bfb0cedc5 kokkos: disable volatile when kokkos >= 3.7
(cherry picked from commit c32e67aa6d394c2267f95bb1306fe705b12bfc13)
2023-02-16 15:49:29 -05:00
Kenneth Moreland
504d241b44 Correct documentation about ArrayHandles with Vec-like values 2023-02-16 12:46:34 -07:00
Kenneth Moreland
88004132c3 Compile UnitTestAbort.cxx with a normal C++ compiler
`UnitTestAbort.cxx` does not touch any code that needs to be compiled on
the device, so you do not need a device compiler. Use the standard C++
compiler instead.
2023-02-16 11:26:04 -07:00
Kenneth Moreland
cdd1dbd7bc Add ArrayHandleRuntimeVec
The new `ArrayHandleRuntimeVec` is a fancy `ArrayHandle` allows you to
specify a basic array of `Vec`s where the number of components of the `Vec`
are not known until runtime. (It can also optionally specify scalars.) The
behavior is much like that of `ArrayHandleGroupVecVariable` except that its
representation is much more constrained. This constrained representation
allows it to be automatically converted to an `ArrayHandleBasic` with the
proper `Vec` value type. This allows one part of code (such as a file
reader) to create an array with any `Vec` size, and then that array can be
fed to an algorithm that expects an `ArrayHandleBasic` of a certain value
type.
2023-02-16 07:04:10 -07:00
Kenneth Moreland
a7679c9e99 Add more safety to VecTraits
You can often get compile errors when trying to get `Vec` attributes
from types that do not define `VecTraits`. This is of particular problem
when you create an object like `Vec` with a component that does not
define `VecTraits`. Make using these types safer by internally using
`SafeVecTraits`, which will gracefully handle types that do not have
`VecTraits`.
2023-02-16 07:04:10 -07:00
Kenneth Moreland
da731005b3 Remove unused comments in test 2023-02-16 07:04:10 -07:00
Mark Bolstad
be86a3f882 Merge topic 'compile_fix_for_sycl'
7d3ea2126 Changes for compiling with SYCL

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !2986
2023-02-15 16:49:20 -05:00
Mark Bolstad
7d3ea2126d Changes for compiling with SYCL
- Remove volatile keyword from `join'
  - Remove various `printf' in device code
2023-02-15 14:38:59 -07:00
Kenneth Moreland
5fd7a3711f Merge topic 'pass-field-fixes' into release-2.0
5a141349a Fix the passing of fields in filters

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !2985
2023-02-14 12:43:33 -05:00
Kenneth Moreland
b06d00d524 Merge topic 'pass-field-fixes'
5a141349a Fix the passing of fields in filters

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !2985
2023-02-14 12:43:33 -05:00
Sujin Philip
ec73ec36ee Merge topic 'fix-UnitTestAbort-warning'
a51cc2e15 Fix unreferenced local variable warning

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: Kenneth Moreland <morelandkd@ornl.gov>
Merge-request: !2984
2023-02-14 10:51:41 -05:00
Kenneth Moreland
5a141349a9 Fix the passing of fields in filters
While updating the user's guide, I noticed a couple of minor problems
with how filters map fields. First, if a filter was using
`CreateResultCoordinateSystem`, it did not respect the
`PassCoordinateSystems` flag. Second, if both an `initializer_list` and
a mode was given to `SetFieldsToPass`, the mode was captured
incorrectly. Both problems are corrected.
2023-02-13 14:06:43 -07:00
Sujin Philip
a51cc2e153 Fix unreferenced local variable warning 2023-02-13 13:29:26 -05:00
Sujin Philip
48059d0de3 Merge topic 'vtkm-abort' into release-2.0
42c6959be Add Abort execution feature

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !2974
2023-02-13 12:41:06 -05:00
Sujin Philip
d05afa72f5 Merge topic 'vtkm-abort'
42c6959be Add Abort execution feature

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !2974
2023-02-13 12:41:06 -05:00
Kenneth Moreland
a80de8019a Add support for getting vec sizes of unknown arrays when runtime selected
The `GetNumberOfComponents` and `GetNumberOfComponentsFlat` methods in
`UnknownArrayHandle` have been updated to correctly report the number of
components in special `ArrayHandle`s where the `Vec` sizes of the values
are not selected until runtime.

Previously, these methods always reported 0 because the value type could
not report the size of the `Vec`. The lookup has been modified to query the
`ArrayHandle`'s `Storage` for the number of components where supported.
Note that this only works on `Storage` that provides a method to get the
runtime `Vec` size. If that is not provided, as will be the case if the
number of components can vary from one value to the next, it will still
report 0.

This feature is implemented by looking for a method named
`GetNumberOfComponents` is the `Storage` class for the `ArrayHandle`. If
this method is found, it is used to query the size at runtime.
2023-02-09 11:53:52 -07:00
Kenneth Moreland
8befbc47c7 Fix dot product type promotion
Update the dot product functions to use auto returns to capture proper
type promotion.
2023-02-08 07:04:07 -07:00
Kenneth Moreland
d5ba7f4d59 Change VectorMagnitude to work with any type of field
Previously, `VectorMagnitude` only worked with `Vec`s of size 2, 3, or
4. It now works with `Vec`s of any size. It also avoids a memory copy of
non-float types (although it does add a little arithmetic in the
computation).
2023-02-06 15:00:52 -07:00
Sujin Philip
42c6959be3 Add Abort execution feature
Initial changes to add support for aborting execution.
2023-02-06 14:29:58 -05:00
Sujin Philip
4c45598d35 Fix compile issues when using cuda 12
CUDA 12 adds a `cub::Swap` function that creates ambiguity with `vtkm::Swap`.
This happens when a function from the `cub` namespace is called with an object
of a class defined in the `vtkm` namespace as an argument. If that function
has an unqualified call to `Swap`, it results in ADL being used, causing the
templated functions `cub::Swap` and `vtkm::Swap` to conflict.
2023-02-06 12:26:55 -05:00
Kenneth Moreland
eddf6df384 Update probe filter to interpolate any field type
Previously, the probe filter only worked on certain `Vec` sizes and
converted many types to floating point.

This change uses the extract component feature to pull data from any
array at its natural component type.

The bad part of this change is that it has to call the worklet
separately for each component in the field. That adds overhead and
probably lowers the cache efficiency. It was implemented this way
because the cell interpolation function does not work with the
recombined vecs returned from extract array.
2023-02-06 06:54:42 -07:00
Kenneth Moreland
0ba818e907 Enable any scalar field in ParticleDensity filters
This is done using the `CastAndCallScalarField` from `FilterField`,
which uses a cast-and-call with a float fallback.
2023-02-04 09:24:25 -05:00
Kenneth Moreland
d38efa87f2 Allow fields of any type in NDHistogram
Use the ability to extract array components to compute bins of
dimensions.
2023-02-04 09:24:23 -05:00
Kenneth Moreland
d26d76deaf Fix construction issue for XGC arrays in topology map fetch
The `Fetch::Load` for an input array of a topology map for an XGC array
(that uses `ConnectivityExtrude`) was failing to compile because it
creates a return `Vec` and then fills it. That does not work if the
input array has values that cannot be default constructed. This is the
case for `ArrayHandleRecombineVec`, which creates values that lazily
pull data out of portals.

Change the code to careful construct the return `Vec` such that it does
not require the default constructor of the components.
2023-02-03 14:52:06 -05:00