Commit Graph

191 Commits

Author SHA1 Message Date
Kenneth Moreland
4c392f9b58 Split the contour benchmark into structured/unstructured
We've been having problems with PerformanceTestBenchContour. In the last
few iteration, the runtime goes way up. We cannot find any reason for
this in the source code. There don't appear to be any particular
problems with memory or tables. The best we can figure is an issue with
the device hardware in the container.

The easy solution should be to break the benchmark into smaller peices
to avoid the problem.
2024-06-21 14:48:17 -04:00
Kenneth Moreland
c72256e555 Fix deprecation warning from Google benchmark
The warning is that asking not to optimize a const variable does not
always work. Fix by simply not declaring the variable as const.
2024-05-13 08:20:44 -06:00
Dave Pugmire
73b0abd5a8 Verbose function names. 2023-12-12 15:55:00 -05:00
Dave Pugmire
bbb5385b4f Cleanup, enable more tests. 2023-12-11 22:06:37 -05:00
Dave Pugmire
fbcdbc6504 Merge branch 'master' of https://gitlab.kitware.com/vtk/vtk-m into locatorBenchmark 2023-12-07 07:57:08 -05:00
Dave Pugmire
a956d18e4c Add iteration benchmark. 2023-12-07 07:44:19 -05:00
Dave Pugmire
a7434a297f Enable uniformgrid, copy data to arrayhandle 2023-12-05 09:59:21 -05:00
Dave Pugmire
14369509a9 Add benchmark for 2D explicit grids. 2023-12-05 09:39:08 -05:00
Nrushad Joshi
55a08d51b7 Isosurface Uncertainty Visualization Filter 2023-11-15 21:04:37 -05:00
Kenneth Moreland
1f07b0ecf6 Consolidate WarpScalar and WarpVector filter
In reflection, the `WarpScalar` filter is surprisingly a superset of the
`WarpVector` features. `WarpScalar` has the ability to displace in the
directions of the mesh normals. In VTK, there is a distinction of normals
to vectors, but in VTK-m it is a matter of selecting the correct one. As
such, it makes little sense to have two separate implementations for the
same operation. The filters have been combined and the interface names have
been generalized for general warping (e.g., "normal" or "vector" becomes
"direction").

In addition to consolidating the implementation, the `Warp` filter
implementation has been updated to use the modern features of VTK-m's
filter base classes. In particular, when the `Warp` filters were originally
implemented, the filter base classes did not support more than one active
scalar field, so filters like `Warp` had to manage multiple fields
themselves. The `FilterField` base class now allows specifying multiple,
indexed active fields, and the updated implementation uses this to manage
the input vectors and scalars.

The `Warp` filters have also been updated to directly support constant
vectors and scalars, which is common for `WarpScalar` and `WarpVector`,
respectively. Previously, to implement a constant field, you had to add a
field containing an `ArrayHandleConstant`. This is still supported, but an
easier method of just selecting constant vectors or scalars makes this
easier.

Internally, the implementation now uses tricks with extracting array
components to support many different array types (including
`ArrayHandleConstant`. This allows it to simultaneously interact with
coordinates, directions, and scalars without creating too many template
instances.
2023-09-26 07:20:09 -04:00
Li-Ta Lo
c39ff5f86e add include CanvasRayTracer.h 2023-05-30 13:01:02 -06:00
Louis Gombert
dcdda3065a Split flying edges and marching cells into separate filters
In order to compile the contour filter more efficiently, we split the contour filter into two separate translation units, corresponding to the new filters ContourFlyingEdges and ContourMarchingCells. The API for Contour filter is left totally unchanged, and tries to use flying edges if the dataset is structured and uniform.
All three contour filters inherit from the `AbstractContour` class, providing utility methods used in the implementations.
2023-05-04 15:20:20 +02:00
Kenneth Moreland
ff68e44d63 Make array component checking safer
One of the checks for `BenchmarkFilters` is to test the number of
components in field arrays. It did this by using a `CastAndCall` to get
the base `ArrayHandle` and check the type. This is unnecessarily
complicated and fragile in the case where the base array type cannot be
resolved by `CastAndCall`. Instead, just query the `UnknownArrayHandle`
for the number of components.
2023-03-21 14:11:15 -06:00
Kenneth Moreland
2ba051e604 Merge topic 'fix_insitu_arg_processing'
b4a6c2b54 Restore argument processing to InSitu benchmark

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !3010
2023-03-09 17:52:44 -05:00
Mark Bolstad
b4a6c2b546 Restore argument processing to InSitu benchmark
GBench barfs on arguments such as --size without this patch that restores removing vtkm specific arguments from the command-line.
2023-03-09 08:40:00 -07:00
Kenneth Moreland
7742df7556 Split up the filters benchmark tests
This should help catch regressions that only affect a single filter. It
also allows us to set up a partitioned test that has many small blocks.
It also fixes an issue we were seeing on the dashboard where the
contour benchmark was apparently running out of resources.
2022-12-05 13:20:22 -07:00
Kenneth Moreland
1f34e0eaa6 Add performance configuration options
Added a name option that allows the same benchmark executable to be used
in multiple benchmark tests. This allows the benchmarks to be separated.
Also added an option to pass customized arguments to the benchmark
executable to overwrite the default values.
2022-12-05 13:20:18 -07:00
Kenneth Moreland
84bc723121 Make source parameters more clear
Originally, most of the sources used constructor parameters to set the
various options of the source. Although convenient, it was difficult to
keep track of what each parameter meant. To make the code more clear,
source parameters are now set with accessor functions (e.g.
`SetPointDimensions`). Although this makes code more verbose, it helps
prevent mistakes and makes the changes more resilient to future changes.
2022-12-01 08:13:58 -07:00
Dave Pugmire
a4435a6b20 Change wavelet dim to 256 and numPart to 1. 2022-11-29 13:42:53 -05:00
Dave Pugmire
fecc703a01 Add header for vtkm::cont::PartitionedDataSet 2022-11-28 20:52:04 -05:00
Dave Pugmire
90586d36df Change default waveletdim back to 256. 2022-11-28 16:37:17 -05:00
Dave Pugmire
b7605689ac Add multiblock benchmarks for filters. 2022-11-28 16:35:28 -05:00
Kenneth Moreland
ef3c4c65c9 Merge topic 'no-execution-whole-array'
294581375 Removed ExecutionWholeArray class

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: Li-Ta Lo <ollie@lanl.gov>
Merge-request: !2905
2022-10-31 14:41:54 -04:00
Kenneth Moreland
f4b972afaa Merge topic 'no-deprecated-virtual'
ea560e948 Remove deprecated virtual methods

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !2903
2022-10-31 14:38:32 -04:00
Kenneth Moreland
076e0a75b0 Merge topic 'fix-filter-tests'
96b447e69 Fix some deprecated hacks in modules

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: Vicente Bolea <vicente.bolea@kitware.com>
Merge-request: !2904
2022-10-31 09:58:13 -04:00
Kenneth Moreland
ea560e9486 Remove deprecated virtual methods
Several revisions ago, the ability to use virtual methods in the
execution environment was deprecated. Completely remove this
functionality for the VTK-m 2.0 release.
2022-10-28 10:56:52 -06:00
Kenneth Moreland
2945813755 Removed ExecutionWholeArray class
`ExecutionWholeArray` is an archaic class in VTK-m that is a thin wrapper
around an array portal. In the early days of VTK-m, this class was used to
transfer whole arrays to the execution environment. However, now the
supported method is to use `WholeArray*` tags in the `ControlSignature` of
a worklet.

Nevertheless, the `WholeArray*` tags caused the array portal transferred to
the worklet to be wrapped inside of an `ExecutionWholeArray` class. This
is unnecessary and can cause confusion about the types of data being used.

Most code is unaffected by this change. Some code that had to work around
the issue of the portal wrapped in another class used the `GetPortal`
method which is no longer needed (for obvious reasons). One extra feature
that `ExecutionWholeArray` had was that it provided an subscript operator
(somewhat incorrectly). Thus, any use of '[..]' to index the array portal
have to be changed to use the `Get` method.
2022-10-27 15:07:41 -06:00
Kenneth Moreland
96b447e69a Fix some deprecated hacks in modules
When the configure modules were first created, there were some hacks
around filters that had not yet moved to the new filter mechanism. These
can (and should) be removed.
2022-10-27 10:24:28 -06:00
Kenneth Moreland
dafa01e9e9 Add benchmark arguments without leaking memory
The previous version of BenchmarkInSitu added arguments to its argv list
by using `strdup`. However, this method will leak memory, which is not
great. Replace this with a safer mechanism that will properly delete
memory at the end of the program (and satisfy any memory analyzers).

This also fixes a warning from MS about `strdup` being deprecated.
2022-10-26 15:16:15 -06:00
Kenneth Moreland
ad1e7b5bdb Add module mechanism
This mechanism sets up CMake variables that allow a user to select which
modules/libraries to create. Dependencies will be tracked down to ensure
that all of a module's dependencies are also enabled.

The modules are also arranged into groups.
Groups allow you to set the enable flag for a group of modules at once.
Thus, if you have several modules that are likely to be used together,
you can create a group for them.

This can be handy in converting user-friendly CMake options (such as
`VTKm_ENABLE_RENDERING`) to the modules that enable that by pointing to
the appropriate group.
2022-10-26 12:51:05 -06:00
Vicente Adolfo Bolea Sanchez
7e99e256bb perftest: add perf regression test 2022-10-07 17:42:12 -04:00
Kenneth Moreland
de2f2b59ba Deprecate old filter base classes and supporting classes 2022-09-27 06:52:44 -06:00
Mark Bolstad
613b4d44b7 Switch how InSitu benchmark iterates
Previous version had a hard-coded loop for updating the dataset. This change relenquishes control over to google benchmarks. Running it from the command-line will iterate each sub-benchmark a different number of iterations depending on how long each individual test takes. The number of iterations can be increased (but not controlled) by increasing the minimum time for each test. Alternatively, using the "repetitions" argument, you can control exactly how many times the benchamrks are run.

See the README for InSitu that throughly documents the arguments.
2022-09-12 09:24:47 -06:00
Dave Pugmire
e1fbfea305 Remove device compiler dependencies. 2022-08-01 08:00:46 -04:00
Dave Pugmire
6a200c62d9 Cuda fixes: device in headers.. 2022-07-29 13:39:38 -04:00
Dave Pugmire
f963f51907 Fix the benchmarks...... 2022-07-29 10:16:14 -04:00
Dave Pugmire
767b6c0048 CUDA fixes move device copy into .cxx file. 2022-07-28 13:28:09 -04:00
Dave Pugmire
cdcc083d4c Fix benchmarks, windows builds? 2022-07-25 10:16:05 -04:00
Kenneth Moreland
3ba13c5cc4 Re-enable hip builds
There were several tests that were disabled for hip because they either
took too long to compile or were failing. We are getting closer to
making everything work, so re-enable this part of the build.
2022-05-12 16:00:30 -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
Kenneth Moreland
08e6826017 Remove deprecated use of old unscoped enums in FieldSelection 2022-03-18 13:16:55 -06:00
Kenneth Moreland
f8f41e0ef5 Update use of field association enumerations
The enumerations in `vtkm::cont::Field::Association` were renamed in the
previous commit. The old names still exist, but are deprecated. Change
the rest of the code to use the new names.
2022-03-17 11:02:37 -06:00
Kenneth Moreland
920392b6d8 Remove brigand from Benchmarker.h
Instead, consistently use `vtkm::List`. (All the actual benchmark code
already uses `vtkm::List` instead of `brigand::list`.)
2022-03-08 07:25:08 -07:00
Li-Ta Lo
f09032aaaf migrate geometry refinement filters 2022-02-11 20:52:43 -07:00
Li-Ta Lo
455c204373 Migrate field_transform 2022-02-01 11:51:01 -07:00
Li-Ta Lo
8113d15ef7 Merge branch 'master' into field_conversion
# Conflicts:
#	benchmarking/BenchmarkFilters.cxx
#	vtkm/filter/CMakeLists.txt
#	vtkm/filter/testing/UnitTestSplitSharpEdgesFilter.cxx
2022-01-31 14:08:02 -07:00
Li-Ta Lo
cdc4c29c5f renamve vector_calculus -> vector_analysis 2022-01-31 08:58:38 -07:00
Li-Ta Lo
c60d9e64dd migrate SurfaceNormal, VectorMagnitude 2022-01-30 14:31:52 -07:00
Li-Ta Lo
59cc8cbaeb Migrate Gradient filter 2022-01-30 12:18:22 -07:00