Commit Graph

9910 Commits

Author SHA1 Message Date
Manish Mathai
f240a84e6d Merge topic 'enhance-glyphing-types' into release-1.8
814ec27f1 Add MapperGlyphScalar and MapperGlyphVector mappers

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: Vicente Bolea <vicente.bolea@kitware.com>
Merge-request: !2747
2022-06-15 20:17:53 -04:00
Manish Mathai
814ec27f1e Add MapperGlyphScalar and MapperGlyphVector mappers
These mappers can be used to render cell sets as glyphs. The following
glyph types are available for scalar fields:
 - Cube
 - Sphere
 - Axes
 - Quads

For vector fields:
 - Arrows
2022-06-15 15:19:53 -07:00
Kenneth Moreland
ffe294e462 Merge topic 'backport-at-bottom' into release-1.8
bd8f8f6da Fix documentation for backport release command

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: Ben Boeckel <ben.boeckel@kitware.com>
Merge-request: !2781
2022-05-25 11:27:33 -04:00
Kenneth Moreland
407fa93898 Merge topic 'break-circular-dependency' into release-1.8
7749b86b2 Move MakeTestDataSet.cxx to vtkm_cont

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !2780
2022-05-25 10:18:06 -04:00
Kenneth Moreland
bd8f8f6da8 Fix documentation for backport release command
For the `Backport: release` command to work on a MR, it needs to be at
the bottom of the description of the MR. However, `ReleaseHotFix.md`
claimed it could be anywhere in the description. Fix that.
2022-05-25 07:36:03 -06:00
Kenneth Moreland
7749b86b22 Move MakeTestDataSet.cxx to vtkm_cont
Originally `MakeTestDataSet.h` was header-only code. This was changed to
put its functionality into a library. The obvious library to put it in
was `vtkm_cont_testing`.

The problem is that there is some external code that is (unadvisably)
adding this header to their own code. This code ends up breaking because
it needed to include `vtkm_cont_testing`, which was not needed before.

As a workaround, there was a CMake interface link that caused external
code linking in `vtkm_cont` to also link in `vtkm_cont_testing`. This
works OK, but creates something of a circular dependency. CMake itself
has no problem with this, because `vtkm_cont` did not itself depend on
`vtkm_cont_testing`; only things that linked to `vtkm_cont` also had to
link to `vtkm_cont_testing`.

Unfortunately, some Ascent CMake script was trying to trace down
dependencies and ran into an infinite loop. So this solution was not so
great for them.

Get around the problem by just adding the `MakeTestDataSet` code
directly to `vtkm_cont` (for now).
2022-05-24 14:43:10 -06:00
Kenneth Moreland
d60bcd2536 Merge branch 'release-1.7' into release-1.8 2022-05-05 13:08:01 -04:00
Kenneth Moreland
9d4df90dfd Merge topic 'backport-2748' into release-1.8
d6353e1eb Fix StructuredPointGradient for Uniform Point Coordinates

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: Kenneth Moreland <morelandkd@ornl.gov>
Merge-request: !2765
2022-05-05 13:08:01 -04:00
Kenneth Moreland
d7a75bc02a Merge topic 'backport-2748' into release-1.7
d6353e1eb Fix StructuredPointGradient for Uniform Point Coordinates

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: Kenneth Moreland <morelandkd@ornl.gov>
Merge-request: !2765
2022-05-05 13:08:01 -04:00
Sujin Philip
d6353e1eb7 Fix StructuredPointGradient for Uniform Point Coordinates
The scalar field difference along x, y, and z should be divided by the
spacing not multiplied. This was causing some test failures in VTK and
ParaView when overriding the default contour filter with `vtkmContour`.
2022-05-04 12:55:33 -04:00
Kenneth Moreland
b3f28844e3 Merge topic 'pointtransform-symbols' into release-1.8
d3de36f47 Remove inline from PointTransform methods to be exported

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: Nicole Marsaglia <marsaglia1@llnl.gov>
Merge-request: !2763
2022-05-04 11:51:42 -04:00
Kenneth Moreland
d3de36f470 Remove inline from PointTransform methods to be exported
When `PointTransform` was converted to the new filter structure, some of
the methods that were moved from .hxx to .cxx (and therefore compiled in
a library) were still marked as `inline`. This caused the compiler to
not compile the function into the library if it was not used. Fix the
problem by removing the `inline` modifier to the method implementations.
2022-05-03 12:57:14 -06:00
Vicente Adolfo Bolea Sanchez
cc5771549a 1.8.0-rc1 is our 12th official release of VTK-m.
The major changes to VTK-m from (previous release) can be found in:
  docs/changelog/1.8.0/release-notes.md
v1.8.0-rc1
2022-04-21 16:44:01 -04:00
Vicente Adolfo Bolea Sanchez
31f5a66c7d Add release notes for 1.8.0-rc1 2022-04-21 16:44:01 -04:00
Vicente Adolfo Bolea Sanchez
2c96006349 Merge remote-tracking branch 'origin/master' into update-to-v1.8.0
* origin/master: (426 commits)
  smoke_test: Remove version condition
  Fix deprecated method export
  cuda: Fix new cuda version warnings
  docker: update cuda images to 11.6
  use kokkos allocate whn oldSize is zero
  Fix filter benchmark
  Replace static datasets with dynamically allocated versions.
  CMAKE: add CMAKE_CUDA_ARCHITECTURE support
  Turn off inlining of Variant::CastAndCall for HIP
  Modify Variant CastAndCall to have fewer cases in its switch
  Add a unique symbol to InstantiationTemplate.cxx.in
  README: Add doxygen links for nightly
  Update vtkm_add_instantiations documentation
  Declare methods for instances out of line
  Protect gradient instantiations from ambiguity
  Compile instantiations of the gradient filter
  Add generalized instantiation
  Fix point merge for Marching Cubes with multiple isosurfaces
  Remove deprecated use of old unscoped enums in FieldSelection
  Use scoped enum for FieldSelection mode
  ...
2022-04-21 16:43:23 -04:00
Vicente Bolea
6374b35837 Merge topic 'remove-vtkm-version-smoke-test'
53e22ab1d smoke_test: Remove version condition

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: Kenneth Moreland <morelandkd@ornl.gov>
Merge-request: !2761
2022-04-21 16:41:37 -04:00
Vicente Adolfo Bolea Sanchez
53e22ab1d3 smoke_test: Remove version condition 2022-04-21 15:20:36 -04:00
Manish Mathai
09fc8155af Merge topic 'fix-mapper-quad'
27825778e Fix color rendering when using MapperQuad

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !2729
2022-04-20 12:04:35 -04:00
Kenneth Moreland
ca5b5ff9bb Merge topic 'deprecated-method-export'
60e6b3ec8 Fix deprecated method export

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: Vicente Bolea <vicente.bolea@kitware.com>
Merge-request: !2756
2022-04-19 10:14:58 -04:00
Kenneth Moreland
60e6b3ec84 Fix deprecated method export
The deprecated class `vtkm::filter::MeshQuality` contained a private
method that was referenced in its inlined constructor. The problem was
that this private method was compiled in the `vtkm_filter_mesh_info`
library but not properly exported. Fix this by adding an export to the
class.
2022-04-12 10:26:54 -06:00
Kenneth Moreland
a9d49b35b2 Merge topic 'scoped-enum-field-to-colors'
e6b37f7a4 Remove deprecated use of old unscoped enums in FieldToColors
f37cc7657 Use scoped enum for FieldToColors modes

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: Dave Pugmire <dpugmire@gmail.com>
Merge-request: !2734
2022-04-11 10:54:43 -04:00
Vicente Bolea
c123addeac Merge topic 'update-cuda-dockerfiles'
86bf87617 cuda: Fix new cuda version warnings

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: Kenneth Moreland <morelandkd@ornl.gov>
Merge-request: !2752
2022-04-07 18:14:34 -04:00
Vicente Adolfo Bolea Sanchez
86bf876178 cuda: Fix new cuda version warnings 2022-04-07 17:50:37 -04:00
Vicente Bolea
97d860b3f9 Merge topic 'update-cuda-dockerfiles'
620d1a1be docker: update cuda images to 11.6

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: Dave Pugmire <dpugmire@gmail.com>
Merge-request: !2751
2022-04-07 15:25:23 -04:00
Vicente Adolfo Bolea Sanchez
620d1a1bee docker: update cuda images to 11.6 2022-04-07 16:35:45 +00:00
Gunther Weber
5ad164f98f Merge topic 'fix-memory-reallocation-kokkos'
291dafb17 use kokkos allocate whn oldSize is zero

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: Kenneth Moreland <morelandkd@ornl.gov>
Merge-request: !2746
2022-04-05 13:17:39 -04:00
Kenneth Moreland
a96f2a32b4 Merge topic 'gradient-test'
3b0cdcec2 Add tests for divergence, vorticity, and q criterion

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: Sujin Philip <sujin.philip@kitware.com>
Merge-request: !2739
2022-04-01 10:11:43 -04:00
Abdelilah Essiari
291dafb173 use kokkos allocate whn oldSize is zero 2022-03-31 14:38:03 -04:00
Mark Bolstad
12acf31097 Merge topic 'benchmark_dataset_deletion_order'
6222baa75 Fix filter benchmark
19f90b96e Replace static datasets with dynamically allocated versions.

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: Kenneth Moreland <morelandkd@ornl.gov>
Merge-request: !2720
2022-03-30 13:33:28 -04:00
Vicente Bolea
b40d7105cf Merge topic 'add-cuda-arch'
af129132c CMAKE: add CMAKE_CUDA_ARCHITECTURE support

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !2724
2022-03-30 11:49:44 -04:00
Mark Bolstad
6222baa758 Fix filter benchmark
After the rebase, the filter benchmark was in a weird half state with some of the old code, and some of the updated code.
2022-03-30 09:18:00 -06:00
Mark Bolstad
19f90b96e0 Replace static datasets with dynamically allocated versions.
The static datasets were wreaking havoc on order of destructors at exit and causing kokkos to throw an exception. This change dynamically allocates a dataset, copies the read/sourced data into it, and explicitly frees the data.
2022-03-30 09:18:00 -06:00
Vicente Adolfo Bolea Sanchez
af129132cc CMAKE: add CMAKE_CUDA_ARCHITECTURE support 2022-03-29 19:56:43 -04:00
Kenneth Moreland
16cdb00c6a Merge topic 'variant-fewer-cases'
62e509c0a Turn off inlining of Variant::CastAndCall for HIP
6afff7550 Modify Variant CastAndCall to have fewer cases in its switch

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !2744
2022-03-29 13:11:18 -04:00
Kenneth Moreland
62e509c0a2 Turn off inlining of Variant::CastAndCall for HIP
The current implementation of the AMD HIP compiler adds default compiler
flags to attempt to inline everything possible. This is wrecking havoc
with the `Variant::CastAndCall` function, whose implementation has one
or more large switch statements with each case calling a different
potentially inline function. In some parts of the VTK-m code, this is
dragging the compilation on for days as it tries to resolve a
`Variant::CastAndCall` within a `Variant::CastAndCall`. This will
probably need to be addressed in the compiler, but meanwhile we will
force the inlining to be turned off for the function called by
`Variant::CastAndCall`. It is unclear if this will result in some extra
runtime overhead, but the change is worth it to get reasonable compile
times.

Thanks to Nick Curtis for tracking this down and providing the solution.
2022-03-28 14:14:06 -06:00
Kenneth Moreland
6afff75501 Modify Variant CastAndCall to have fewer cases in its switch
The previous implementation of `Variant`'s `CastAndCall` generated a
switch statement with 20 cases (plus a default) regardless of how many
types were handled by the `Variant` (with the excess doing nothing
useful). This reduced the amount of code, but caused the compiler to
have to build many more instructions (and optimize for them). This in
turn lead to large compile times and unnecessary large libraries/
executables.

This change makes a different function to use for `CastAndCall` so that
the number of cases in the switch matches exactly the number of types in
the `Variant`'s union.

Because the size of VariantImplDetail.h was getting large, I also
reduced the maximum expansions for the code. This does not seem to
negatively affect compile time, and I doubt it will have an noticible
difference in running time (when in release mode).

I also modified some other parts of this code to match the expansion
without making unnecessary defaults.
2022-03-28 14:14:06 -06:00
Kenneth Moreland
e0924b6546 Merge topic 'gradient-instantiations'
18461d676 Add a unique symbol to InstantiationTemplate.cxx.in
61a44887f Update vtkm_add_instantiations documentation
1c1881d53 Declare methods for instances out of line
13de2b730 Protect gradient instantiations from ambiguity
f4de1d8ee Compile instantiations of the gradient filter
6eb9c9876 Add generalized instantiation

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: Vicente Bolea <vicente.bolea@kitware.com>
Merge-request: !2742
2022-03-28 15:31:38 -04:00
Vicente Bolea
129e51289e Merge topic 'add-readme-link-doxygen'
978789e6e README: Add doxygen links for nightly

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: Kenneth Moreland <morelandkd@ornl.gov>
Merge-request: !2745
2022-03-28 11:39:06 -04:00
Kenneth Moreland
18461d676f Add a unique symbol to InstantiationTemplate.cxx.in
A compiler or linker may give an error if a .cxx file is empty (that is,
declares no symbols). This can happen if an instantiation declaration
gets removed during the compile either through preprocessor macros or
SFINAE.

To protect against this, declare a simple integer with a unique symbol
in each instantiation file. The overhead is very small and will prevent
compile/link errors.
2022-03-28 09:18:23 -06:00
Vicente Adolfo Bolea Sanchez
978789e6e9 README: Add doxygen links for nightly 2022-03-23 17:21:34 -04:00
Kenneth Moreland
61a44887fd Update vtkm_add_instantiations documentation 2022-03-23 06:34:05 -06:00
Kenneth Moreland
1c1881d53e Declare methods for instances out of line
For the templated methods that we are precompiling instances for, do not
put their implementation inside of the class declaration. The problem is
that if you define a method inside of a class, it is implicitly inline.
If it is inline, a compiler might choose to compile it even if an
external symbol exists.
2022-03-23 06:33:45 -06:00
Kenneth Moreland
13de2b7303 Protect gradient instantiations from ambiguity
It appears that some compilers treat template instances different than
calling a template. For example, if you have

```cpp
template <typename T, typename U>
void Foo(T t, U u);

template <typename T>
void Foo(T t, int u);

template void Foo(int t, int u);
```

that some compilers will complain that the instance is ambiguous because
it matches both versions of Foo even though the second one is the one
that is called (unless you specifically declare template parameters).

This is what happend with the gradient instances. Fix the problem by
wrapping the "ambiguous" cases to be called by a simple, single
templated function.
2022-03-23 06:33:41 -06:00
Kenneth Moreland
f4de1d8ee2 Compile instantiations of the gradient filter
When the gradient filter was moved over to the new filter structure, it
lost its instantiations. This is a problem because the gradient filter,
which compresses a lot of the code into single worklet calls for
efficiency, is one of the longest to compile filters.

This commit restores the instantiations with the updated instantiation
functionality. This breaks up the code into many translation units that
can be compiled simultaneously and thus not hold up the entire compile
on one process.
2022-03-23 06:33:41 -06:00
Kenneth Moreland
6eb9c9876c Add generalized instantiation
Recently, an instantiation method was added to the VTK-m configuration
files to set up a set of source files that compile instances of a template.
This allows the template instances to be compiled exactly once in separate
build files.

However, the implementation made the assumption that the instantiations
were happening for VTK-m filters. Now that the VTK-m filters are being
redesigned, this assumption is broken.

Thus, the instantiation code has been redesigned to be more general. It can
now be applied to code within the new filter structure. It can also be
applied anywhere else in the VTK-m source code.
2022-03-23 06:33:36 -06:00
Kenneth Moreland
626c806772 Merge topic 'fix-mc-merge'
b544b8e09 Fix point merge for Marching Cubes with multiple isosurfaces

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: Mark Bolstad <mbolsta@sandia.gov>
Merge-request: !2741
2022-03-21 16:08:06 -04:00
Kenneth Moreland
b544b8e09f Fix point merge for Marching Cubes with multiple isosurfaces
When the Marching Cubes algorithm merges points together for multiple
isosurfaces, it uses an ArrayHandleZip to combine the isosurface id and
the edge identification. This is to prevent merging points from
different isosurfaces. However, internally this has to do an array copy.

It was doing this copy with `ArrayCopy`. A recent change to that method
made the copy fail for `ArrayHandleZip`. The fix is to change to
`ArrayCopyDevice`.

The reason why this bug was introduced was because there was no test
case for this specific use. A regression test has been updated to test
for this case.
2022-03-21 11:44:36 -06:00
Kenneth Moreland
e1e3d4af2f Merge topic 'scoped-enum-cell-classification'
5d90102f1 Remove deprecated use of vtkm::CellClassification
ccef4d2db Fix scoping of vtkm::CellClassification

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !2737
2022-03-21 12:40:05 -04:00
Kenneth Moreland
86f238753b Merge topic 'scoped-enum-field-selection'
08e682601 Remove deprecated use of old unscoped enums in FieldSelection
28aa9b570 Use scoped enum for FieldSelection mode

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: Sujin Philip <sujin.philip@kitware.com>
Merge-request: !2735
2022-03-21 08:43:24 -04:00
Kenneth Moreland
1053b40bde Merge topic 'scoped-enum-rendering'
2fd8a9b9a Remove deprecated use of old unscoped enums in rendering
e051565d9 Use scoped enums in rendering classes

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !2736
2022-03-21 08:36:35 -04:00