Commit Graph

2292 Commits

Author SHA1 Message Date
Gunther H. Weber
76dcacc090 Revert from Allocate to ResizeVector, but initialize with 0 instead of NO_SUCH_ELEMENT 2020-12-02 14:30:24 -08:00
Oliver Ruebel
774d8df370 Renamed ResizeIndexVector to ResizeVector and fixed bad resize call 2020-12-02 14:30:24 -08:00
Gunther H. Weber
94697e0e05 Fix unused variable warnings when logging is disabled 2020-12-02 14:30:24 -08:00
Gunther H. Weber
25bacf9281 Removed return statement that is never reached 2020-12-02 14:30:23 -08:00
Gunther H. Weber
635510de03 Make device tracker named variable 2020-12-02 14:30:23 -08:00
Oliver Ruebel
58515c2e21 Use ScopedRuntimeDeviceTracker to enforce the device rather than setting it explicitly 2020-12-02 14:30:23 -08:00
Oliver Ruebel
bda234c6ef Use CopySubRange to ensure arrays are not being shrunk 2020-12-02 14:30:23 -08:00
Gunther H. Weber
c603fe596a Fix filename of BoundaryTreeNodeComparator.h in CMakeLists.txt. 2020-12-02 14:30:22 -08:00
Oliver Ruebel
a88b2ed4a8 Renamed Bract to BoundaryTree throughout 2020-12-02 14:29:18 -08:00
Oliver Ruebel
a5d541a341 Rename BoundaryTreeMaker.Bract to BoundaryTreeData 2020-12-02 14:29:18 -08:00
Oliver Ruebel
e77f924ecf Remove bad inheritance from vtkm::worklet::WorkletMapField 2020-12-02 14:29:17 -08:00
Oliver Ruebel
b630919c3b Avoid use of values as both input and retun valye in worklet 2020-12-02 14:29:17 -08:00
Oliver Ruebel
cb98eea5e3 Renamed and updated ResizeIndexVector to use new ArrayHandle resize support in VTKm 2020-12-02 14:29:17 -08:00
Oliver Ruebel
de7da7423e Add DIY-related comments to DistributedContourTreeBlockData 2020-12-02 14:29:17 -08:00
Oliver Ruebel
8e58f50b23 Removed commented ContourTreeBlockData.SortOrder 2020-12-02 14:29:17 -08:00
Oliver Ruebel
eec59a6fd0 Add mssing namespace declaration for use of IsThis in worklets 2020-12-02 14:29:17 -08:00
Oliver Ruebel
41006405b3 Remove CombinedVector. Update ContourTreeMesh::MergeWith accordingly. 2020-12-02 14:29:17 -08:00
Gunther H. Weber
2fa6855222 Fix another warning about types. 2020-12-02 14:29:17 -08:00
Gunther H. Weber
91355fcae7 Avoid 'unitialized variable' compiler warning. 2020-12-02 14:29:17 -08:00
Gunther H. Weber
c8b11f4dcc Remove FIXME 2020-12-02 14:29:17 -08:00
Oliver Ruebel
b7e2a680e3 Fix unused varibale bug 2020-12-02 14:29:16 -08:00
oruebel
7e9f57f755 Cast constexpr on device to fix CUDA access problems 2020-12-02 14:29:16 -08:00
oruebel
65f8c8cf2c Remove bad std::abort call on device 2020-12-02 14:29:16 -08:00
Oliver Ruebel
08447c24b1 Add support for using only necessary boundary vertices 2020-12-02 14:29:16 -08:00
Oliver Ruebel
e734c6358c Port bugfix for ListNewNodesCopyIdsWorklet. 2020-12-02 14:29:16 -08:00
Oliver Ruebel
75afb77d20 Refine recording of timings in Fan In functor 2020-12-02 14:29:16 -08:00
Gunther H. Weber
d18aacc5d6 Cleanup of debug output etc. 2020-12-02 14:29:16 -08:00
Gunther H. Weber
8652ea1abb Update CMakeList.txt for updates in worklet/contourtree_distributed/boundary_tree_maker. 2020-12-02 14:29:16 -08:00
Gunther H. Weber
f0213d065e Replace implicit array handles to adapt to vtk-m changes. 2020-12-02 14:29:16 -08:00
Oliver Ruebel
18e2938cdf Fix comments in BoundaryTree class 2020-12-02 14:29:15 -08:00
Oliver Ruebel
10910d6b4a Fix bug to output the correct arrays i HierarchicalContourTree<FieldType>::PrintTreeStats 2020-12-02 14:29:15 -08:00
Oliver Ruebel
07b6744f31 Partial add dot output in ComputeDistributedContourTreeFunctor 2020-12-02 14:29:15 -08:00
Oliver Ruebel
17f2f845e7 Minor fixed for performane logging 2020-12-02 14:29:15 -08:00
Oliver Ruebel
ac1818d357 Add logging for Fan in and Fan Out 2020-12-02 14:29:15 -08:00
Oliver Ruebel
3355be235e Make logging customizable for ContourTreeUniformAugmented 2020-12-02 14:29:15 -08:00
Oliver Ruebel
0fa2b57ac6 Save NumBoundary and NumBounaryUsed in BoundaryTree for logging 2020-12-02 14:29:15 -08:00
Oliver Ruebel
ea2803735a Add function for printing hierarchical tree statistics 2020-12-02 14:29:15 -08:00
Oliver Ruebel
f1b2a2b47c Make log level configurable for ContourTreeUniformAugmented 2020-12-02 14:29:15 -08:00
Oliver Ruebel
d71259fdb7 Add contour tree, boundary tree, and interior forest array stat print 2020-12-02 14:29:15 -08:00
Gunther H. Weber
d42916ba39 Fix OpenMP backend crashes by avoiding unnecessary computations and zero-length copying. 2020-12-02 14:29:15 -08:00
Gunther H. Weber
4594c1e4c6 Fix unit tests to handle vtk-m with compuled with double precision. 2020-12-02 14:29:15 -08:00
Gunther H. Weber
eb776059ca Fix unused return value warning in TreeCompiler.h 2020-12-02 14:29:14 -08:00
oruebel
dc1d577140 Fix VTKM_EXEC lables for hact exec objects 2020-12-02 14:29:14 -08:00
Oliver Ruebel
fcda9adde2 Attempt to fix host device function call issue 2020-12-02 14:29:14 -08:00
Oliver Ruebel
9179f5b7b3 Add (vtkm::Id) cast for contour tree constexpr variable for CUDA build 2020-12-02 14:29:14 -08:00
Oliver Ruebel
15baa0f591 Remove ArrayHandleVirtual import in BRACTNodeComperator.h 2020-12-02 14:29:14 -08:00
Oliver Ruebel
569d0ed413 Revert change to Types.h 2020-12-02 14:29:14 -08:00
Oliver Ruebel
05c81cbb76 Fix bad array look-up in dot print 2020-12-02 14:29:14 -08:00
Oliver Ruebel
21cf5a057d Fix build errors in unused print dot of HierarchicalContourTree.h 2020-12-02 14:29:14 -08:00
Oliver Ruebel
e53f63c42f Attempt to fix CUDA visibilty of types 2020-12-02 14:29:14 -08:00
Oliver Ruebel
78a2a285d1 Fix build errors in unused print dot function in HierarchicalContourTree.h 2020-12-02 14:29:14 -08:00
Oliver Ruebel
3cefc1e20a Remove tabs in PrintGraph 2020-12-02 14:29:14 -08:00
Oliver Ruebel
5353a1c3b2 Remove trailing whitespaces 2020-12-02 14:29:13 -08:00
Oliver Ruebel
4d179556e0 Remove unused variable in FindBractSuperarcsSuperarcToWorklet 2020-12-02 14:29:13 -08:00
Oliver Ruebel
91b9832f99 Fix ReadPortal access in HierarchicalContourTree 2020-12-02 14:29:13 -08:00
Oliver Ruebel
d24f7b786b Fix ReadPortal access in HierarchicalContourTree::SuperString part 2 2020-12-02 14:29:13 -08:00
Oliver Ruebel
da4b56d8e5 Fix ReadPortal access in HierarchicalContourTree::SuperString 2020-12-02 14:29:13 -08:00
Oliver Ruebel
cf333de8d8 Move VTKM_CONT labels for HierarchicalContourTree CUDA built 2020-12-02 14:29:13 -08:00
Gunther H. Weber
e47ef57111 Added missing include needed due to DO: reformat 2020-12-02 14:29:13 -08:00
Gunther H. Weber
5dc26391c0 Eliminted TABs 2020-12-02 14:29:13 -08:00
Gunther H. Weber
9335be8efc Fix header list in contourtree_distributed/CMakeLists.txt to pass install test 2020-12-02 14:29:12 -08:00
Gunther H. Weber
8b21a8e07d Add test scripts to run tests via example application. 2020-12-02 14:29:12 -08:00
Gunther H. Weber
7a77b1ad89 Added serial (via DIY) unit test for distributed contour tree filter. 2020-12-02 14:29:12 -08:00
Gunther H. Weber
9b7fae29b7 Use ArrayHandleMultiplexer instead of deprecated ArrayHandleVirtual 2020-12-02 14:29:12 -08:00
Gunther H. Weber
7e4c8f8c48 Commented out lines to fix unused variable compiler warnings 2020-12-02 14:29:12 -08:00
Gunther H. Weber
eed7487e59 Added missing inline declarations 2020-12-02 14:29:12 -08:00
Gunther H. Weber
7661b17e5b Return fields required by TreeCompiler as vtk-m data set from filter. 2020-12-02 14:29:12 -08:00
Oliver Ruebel
c4de6ba6e0 Fix copy predictate for compressing arcs and fix init of arrays for FindCriticalPoints 2020-12-02 14:29:12 -08:00
Oliver Ruebel
5cebd3b0dc Update print of edge arrays 2020-12-02 14:29:12 -08:00
Oliver Ruebel
7d1d9aa99f Remove extra build guards for DebugPrint 2020-12-02 14:29:12 -08:00
Oliver Ruebel
d78aa95c4a Change FieldIn to FieldInOut to prevent overwrite of preinit values 2020-12-02 14:29:12 -08:00
Oliver Ruebel
eb616dbbab Use FieldInOut instead of FieldIn to prevent overwrite of pre-initalized values 2020-12-02 14:29:11 -08:00
Gunther H. Weber
f433790a17 Ported distributed contour tree prototype to vtk-m 2020-12-02 14:29:11 -08:00
nadavi
8b7fd61753 Implement and test Image Comparison Filters and Worklets 2020-12-02 16:24:06 +00:00
Nick Thompson
4b3ca3f54e Make ZFP tests less verbose. 2020-11-25 15:50:10 -05:00
Dave Pugmire
3c50a7ea46 Fix assert for pathlines. Add example from manual that was failing. 2020-11-25 12:43:00 -05:00
Dave Pugmire
967fb9fadf Remove unneeded cast in worklet, clarify the code in threaded algo. 2020-11-24 15:06:36 -05:00
Kenneth Moreland
07d6c06c73 Convert ArrayHandleCartesianProduct to new buffer-style array 2020-11-17 12:17:28 -07:00
Kenneth Moreland
7d681fb585 Deprecate templated versions of Field::GetRange
Instead, always use precompiled versions of range computing. This means
you won't be able to specify the type. Currently, types are limited to
scalars vecs up to size 4.

The main motivation for this change is to allow you to include Field.h
with a non-device compiler. This is an important feature for our
customers.

I plan in the future to implement a mechanism to pull out a component of
most ArrayHandle's as a single array. This would enable us to support a
precompiled version that can compute the range of arbitrarily sized
Vecs.
2020-11-09 12:28:29 -07:00
Dave Pugmire
a7f049ac1a Merge branch 'master' of https://gitlab.kitware.com/vtk/vtk-m into ghost_streamlines 2020-11-02 16:28:57 -05:00
Dave Pugmire
467ad88d06 Move PA tests into Streamline 2020-11-02 16:25:38 -05:00
Dave Pugmire
722479ea10 Add different dataset types to MPI test. 2020-10-27 22:12:45 -04:00
Dave Pugmire
047bd93d5a Fix compile error 2020-10-27 14:27:34 -04:00
Dave Pugmire
e8dc7e0eee Add more dataset types for testing. 2020-10-26 15:49:58 -04:00
Dave Pugmire
46a82c6985 add data generation functions. 2020-10-26 14:37:20 -04:00
Dave Pugmire
eb76dff8d2 Support for ghost cells in P.A. filter 2020-10-26 12:39:31 -04:00
Dave Pugmire
0dccfdc61e Code cleanup and more tests for ghostcells 2020-10-23 14:37:28 -04:00
Dave Pugmire
a9232904d9 code cleanup and remove compile warning. 2020-10-22 09:57:57 -04:00
Vicente Adolfo Bolea Sanchez
b22823a547 Contour: Zero-init arrays in Flying Edges
- It fixes a lingering error triggered with BenchContour
- It reenables BenchContour

Signed-off-by: Vicente Adolfo Bolea Sanchez <vicente.bolea@kitware.com>
2020-10-21 19:12:51 -04:00
Dave Pugmire
6e4d4932d7 debug kokkos compile errors. 2020-10-21 17:14:56 -04:00
Dave Pugmire
64601619c3 Trying to find kokkos compile error 2020-10-21 17:08:10 -04:00
Dave Pugmire
0f0797f0e1 Fix compiler warnings. 2020-10-21 16:00:54 -04:00
Dave Pugmire
ec37279b01 Merge branch 'master' of https://gitlab.kitware.com/vtk/vtk-m into ghost_streamlines 2020-10-21 12:01:31 -04:00
Kenneth Moreland
28ecf3636d Change interface of atomic compare and swap
The old atomic compare and swap operations (`vtkm::AtomicCompareAndSwap`
and `vtkm::exec::AtomicArrayExecutionObject::CompareAndSwap`) had an
order of arguments that was confusing. The order of the arguments was
shared pointer (or index), desired value, expected value. Most people
probably assume expected value comes before desired value. And this
order conflicts with the order in the `std` methods, GCC atomics, and
Kokkos.

Change the interface of atomic operations to be patterned off the
`std::atomic_compare_exchange` and `std::atomic<T>::compare_exchange`
methods. First, these methods have a more intuitive order of parameters
(shared pointer, expected, desired). Second, rather than take a value
for the expected and return the actual old value, they take a pointer to
the expected value (or reference in `AtomicArrayExecutionObject`) and
modify this value in the case that it does not match the actual value.
This makes it harder to mix up the expected and desired parameters.
Also, because the methods return a bool indicating whether the value was
changed, there is an additional benefit that compare-exchange loops are
implemented easier.

For example, consider you want to apply the function `MyOp` on a
`sharedValue` atomically. With the old interface, you would have to do
something like this.

```cpp
T oldValue;
T newValue;
do
{
  oldValue = *sharedValue;
  newValue = MyOp(oldValue);
} while (vtkm::AtomicCompareAndSwap(sharedValue, newValue, oldValue) != oldValue);
```

With the new interface, this is simplfied to this.

```cpp
T oldValue = *sharedValue;
while (!vtkm::AtomicCompareExchange(sharedValue, &oldValue, MyOp(oldValue));
```
2020-10-20 08:39:22 -06:00
Dave Pugmire
381886c947 Fix compiler warnings... 2020-10-20 09:53:05 -04:00
Dave Pugmire
ee24cdd4d4 fix compile error... 2020-10-19 22:21:24 -04:00
Dave Pugmire
35627b287e Add support for ghost cells in particle advection. 2020-10-19 16:46:48 -04:00
Kenneth Moreland
19944653bc Add scope log for functions that help map fields in filters 2020-10-13 16:35:25 -06:00
Kenneth Moreland
420b9d3979 Log the building of arrays for scatters and masks 2020-10-12 13:19:43 -06:00
Kenneth Moreland
7933c70ca5 Add dispatcher type when logging worklet invocation
When you invoke a worklet, a scoped performance log is automatically
generated. The previous version gave the name of the worklet, which is
technically everything you need to know. However, it is also convenient
to know what type of worklet it is (e.g. a field map worklet or a
topology map worklet). This can be determined by looking at the
definition of the worklet in the source code, but that is not practical
if, for example, you want to perform automated analysis.

This change prints out the type of the dispatcher instead of the
worklet. The full type of the dispatcher includes the worklet as a
template parameter, so you get both the dispatcher/worklet type and the
worklet itself. So previously you would get log lines like

```
Invoking Worklet: 'vtkm::worklet::vtkm::worklet::ExternalFaces::NumFacesPerCell'
```

They now look like this:

```
Invoking Worklet: 'vtkm::worklet::DispatcherMapTopology<vtkm::worklet::ExternalFaces::NumFacesPerCell>'
```
2020-10-08 16:10:00 -06:00
Li-Ta Lo
268a07bb06 remove test on large graph and sample data 2020-10-08 13:26:46 -06:00
Li-Ta Lo
eaff271950 minor changes on comments on findRoot() 2020-10-07 15:09:12 -06:00
Li-Ta Lo
a036b0f980 Minor change based on code review. 2020-10-07 14:23:40 -06:00
Li-Ta Lo
1185f70bc9 Data Race Resolution
Finished the comments on data races and their resolution.
2020-10-07 11:56:02 -06:00
Li-Ta Lo
3c7aa34267 Remove duplicate code in ImageConnectivity.h and GraphConnectivity.h 2020-10-06 13:38:59 -06:00
Li-Ta Lo
43aa21df40 Merge branch 'master' into concurrent_union_find 2020-10-05 09:28:31 -06:00
Kenneth Moreland
a653fb93ed Merge topic 'rename-2-level-locators'
b012c42be Rename CellLocatorUniformBins to CellLocatorTwoLevel
c9b763aca Rename PointLocatorUniformGrid to PointLocatorSparseGrid

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !2264
2020-09-25 18:03:28 -04:00
Kenneth Moreland
b012c42beb Rename CellLocatorUniformBins to CellLocatorTwoLevel
The new name is more descriptive and prevents confusion with
CellLocatorUniformGrid.
2020-09-21 15:42:47 -06:00
Gunther H. Weber
edd71539c9 Fix compile error due to renamed includes 2020-09-17 05:39:14 -07:00
Gunther H. Weber
33a7f5610d Added missing this-> for data members 2020-09-16 12:42:30 -07:00
Gunther H. Weber
b443fb500e Added note for future reference during API refactoring 2020-09-16 12:36:14 -07:00
Gunther H. Weber
b6343c049c Applied Ken Moreland's suggested fix to avoid copy 2020-09-16 12:36:08 -07:00
Gunther H. Weber
8489a69c39 Fixed missing invoker compile error 2020-09-15 12:55:24 -07:00
Gunther H. Weber
991f7a85ad Refactor mesh classes: switch from row/col/slice to vtkm::Id2/Id3 2020-09-15 11:15:27 -07:00
Kenneth Moreland
9465d26110 Adjust TransferFunction worklet to get color table as ExecObj argument
Previously, the `TransferFunction` worklet required you to call
`PrepareForExecution` on the `ColorTable` and give that to the
constructor. Bad things can happen if the `ColorTable` used in the
constructor does not match the device the worklet actually gets invoked
on. Change this to make the `ColorTable` a worklet argument of type
`ExecObj`. The dispatcher will automatically call
`ColorTable::PrepareForInput` and guarantee that the devices match.
2020-09-14 13:38:25 -06:00
Kenneth Moreland
11996f133f Remove virtual methods from ColorTable
Virtual methods are being deprecated, so remove their use from the
ColorTable classes. Instead of using a virtual method to look up a value
in the ColorTable, we essentially use a switch statement. This change
also simplified the code quite a bit.

The execution object used to use pointers to handle the virtual objects.
That is no longer necessary, so a simple `vtkm::exec::ColorTable` is
returned for execution objects. (Note that this `ColorTable` contains
pointers that are specific for the particular device.) This is a non-
backward compabible change. However, the only place (outside of the
`ColorTable` implementation itself) was a single worklet for converting
scalars to colors (`vtkm::worklet::colorconversion::TransferFunction`).
This is unlikely to affect anyone.

I also "fixed" some names in enum structs. There has been some
inconsistencies in VTK-m on whether items in an enum struct are
capitolized or camel case. We seem to moving toward camel case, so
deprecate some old names.
2020-09-14 13:26:16 -06:00
Kenneth Moreland
fbb69b7655 Merge topic 'deprecate-arrayhandlevirtual'
e706880d7 Fix unnecessary deprecation warnings in visual studio
f7cc03107 Fix deprecated warnings
b27e4c7ea Ignore files for deprecated virtual classes for SourceInInstall test
284774cf4 Turn on "no virtual" option on some CI builds
cd08fd499 Add changelog for removing virtual methods
63ef84ed7 Optionally remove all use of ArrayHandleVirtual
e11f612ad Deprecate ArrayHandleVirtual

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: Robert Maynard <robert.maynard@kitware.com>
Merge-request: !2256
2020-09-10 14:32:40 -04:00
Kenneth Moreland
6c383b0a73 Merge topic 'unknown-array-dynamic-transfer'
78c7909c8 Enable automatic transformation of Unknown/UncertainArrayHandle

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: Robert Maynard <robert.maynard@kitware.com>
Merge-request: !2258
2020-09-10 12:41:50 -04:00
Kenneth Moreland
78c7909c84 Enable automatic transformation of Unknown/UncertainArrayHandle 2020-09-09 07:03:34 -06:00
nadavi
843307bcf7 fix floating point casting warning in worklet test 2020-09-08 17:47:53 +00:00
nadavi
18263a37ac update float casting to not have warnings on iris 2020-09-08 17:47:53 +00:00
Subhashis Hazarika
93b8ee97dd Pasing range explicitly to NDHistogram worklet for ALPINE 2D sampling milestone 2020-09-05 00:45:19 -06:00
Kenneth Moreland
63ef84ed78 Optionally remove all use of ArrayHandleVirtual
As we remove more and more virtual methods from VTK-m, I expect several
users will be interested in completely removing them from the build for
several reasons.

1. They may be compiling for hardware that does not support virtual
methods.
2. They may need to compile for CUDA but need shared libraries.
3. It should go a bit faster.

To enable this, a CMake option named `VTKm_NO_DEPRECATED_VIRTUAL` is
added. It defaults to `OFF`. But when it is `ON`, none of the code that
both uses virtuals and is deprecated will be built.

Currently, only `ArrayHandleVirtual` is deprecated, so the rest of the
virtual classes will still be built. As we move forward, more will be
removed until all virtual method functionality is removed.
2020-09-04 22:52:45 -06:00
Kenneth Moreland
e11f612add Deprecate ArrayHandleVirtual
Virtual methods in the execution environment are going away the next
major release of VTK-m, so deprecate their use in preparation for that.
2020-09-04 22:52:45 -06:00
Li-Ta Lo
e17345a81f Merge branch 'master' into concurrent_union_find 2020-08-31 14:34:29 -06:00
Li-Ta Lo
945e9cf328 some more comments 2020-08-31 09:23:03 -06:00
Li-Ta Lo
7533538e17 restore CI config files, minor clean up for UnionFind 2020-08-28 10:48:14 -06:00
Li-Ta Lo
31322cd2e1 use CompareAndSwap for setting root 2020-08-28 10:33:24 -06:00
Li-Ta Lo
4cd320c284 put finding and setting root in a loop 2020-08-28 08:53:56 -06:00
Li-Ta Lo
f91fb35d7f added more data race analysis, change GraphGraft to use AtomicArray 2020-08-28 00:04:50 -06:00
Li-Ta Lo
e5f8219477 try fixing CUDA compiler error 2020-08-27 22:35:27 -06:00
Li-Ta Lo
fc754b329f deduplicate UnionFind 2020-08-27 20:07:32 -06:00
Li-Ta Lo
af53fb736f Add unit test for graph connectivity with data from the ECL_CC paper 2020-08-27 17:37:08 -06:00
Kenneth Moreland
d938226cd3 Fix tests that relied on stable sort
The parallel sorts in the device adapter are documented to not be
stable. Up until recently, the sorts for all the supported devices
happened to be stable (or at least provided a stable sort where needed).
However, the recent Kokkos adapter provides a sort that is no stable.
This broke some tests that relied on stable sorts when they should not
have.

Fix the tests that relied on stable sort to check the results.
2020-08-27 14:50:51 -06:00
Li-Ta Lo
17047f456d more comments on things to do 2020-08-27 11:46:31 -06:00
Li-Ta Lo
727e0cb268 single pass algorithm for both Image and Graph connectivity 2020-08-27 11:22:48 -06:00
Li-Ta Lo
19be36ee7a implemented single pass algorithm for image connectivity 2020-08-27 11:03:45 -06:00
Li-Ta Lo
0902cbbad3 save before change to single pass algorithm 2020-08-27 10:17:02 -06:00
Robert Maynard
faa845d56e Merge topic 'reenable_tests_mistakenly_disabled'
769d6468f Correct a mistake where the kokkos MR merged disabled worklet tests

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !2243
2020-08-27 07:56:37 -04:00
Robert Maynard
769d6468fd Correct a mistake where the kokkos MR merged disabled worklet tests 2020-08-26 13:19:49 -04:00
Dave Pugmire
855e973a20 Rename the Particle classes. 2020-08-26 08:59:51 -04:00
Li-Ta Lo
69de6afa2a add more comments on data race 2020-08-25 13:30:37 -06:00
Kenneth Moreland
571aa9f3d7 Simplify getting test file names
The testing helper class provided a method named `GetTestDataBasePath`
that returned the base path to all the data files stored in the VTK-m
repo. This is fine, but it was a little cumbersome to build filenames.

To make things easier, there is now a new method named `DataPath` that
takes a string of the filename (or, rather, subpath) to the file in that
directory and automatically builds the path to it.
2020-08-25 06:17:59 -06:00
Kitware Robot
cf0cdcf7d1 clang-format: reformat the repository with clang-format-9 2020-08-24 14:01:08 -04:00
Li-Ta Lo
ea2dad5154 extract Unite 2020-08-22 06:15:11 -06:00
Li-Ta Lo
ac6fe7a295 remove unnecessary joining my friend operation 2020-08-21 07:17:13 -06:00
Li-Ta Lo
45fed319ac add more comments on data race during union 2020-08-21 07:15:43 -06:00
Li-Ta Lo
2492d7d1d1 add test case from Valentine, more comments in ImageGraft 2020-08-20 15:08:55 -06:00
Li-Ta Lo
83b90f9fce time to test on GPU 2020-08-20 10:49:00 -06:00
dpugmire
d13a08b6ae Merge branch 'master' of https://gitlab.kitware.com/vtk/vtk-m into mpiStreamlines2 2020-08-18 16:06:41 -04:00
Nick
8124fe81fd Add missing #include. 2020-08-18 15:32:39 -04:00
Nick
024ab1cff8 Put each ODE integrator in it's own file. 2020-08-18 15:32:39 -04:00
dpugmire
9bf49101ca Merge branch 'master' of https://gitlab.kitware.com/vtk/vtk-m into mpiStreamlines2 2020-08-17 16:35:40 -04:00
dpugmire
c806403e2a distributed memory support for streamline and particleadvect filters. 2020-08-13 09:53:57 -04:00
Sujin Philip
452f61e290 Add Kokkos backend 2020-08-12 13:55:24 -04:00
Petar Hristov
c40b98e990 Fix to read the scan inclusive output value directly. 2020-08-06 16:55:04 +01:00
Petar Hristov
ce30e7c62f Refatored writePortal antipattern. 2020-08-05 19:20:24 +01:00
Petar Hristov
332532b290 Removed unused Euler Tour header files. 2020-07-28 08:09:04 +01:00
Petar Hristov
ad497e2619 Merged with master. 2020-07-27 16:27:14 +01:00
Petar Hristov
cd43328ef7 Fixed signed conversion build warning. 2020-07-27 10:43:20 +01:00
Petar Hristov
6b82c1ab77 Fixed CUDA build errors. 2020-07-27 10:00:11 +01:00
Petar Hristov
ce653c78f1 Fixed contour tree example app. 2020-07-24 14:17:36 +01:00
Petar Hristov
4707e5997e Fixed code review issues. 2020-07-24 13:50:12 +01:00
Kenneth Moreland
2163077441 Fix errors with memory access 2020-07-23 11:02:40 -06:00
Kenneth Moreland
d1a4aecc59 Improvements to moving data into ArrayHandle
We have made several improvements to adding data into an `ArrayHandle`.

## Moving data from an `std::vector`

For numerous reasons, it is convenient to define data in a `std::vector`
and then wrap that into an `ArrayHandle`. It is often the case that an
`std::vector` is filled and then becomes unused once it is converted to an
`ArrayHandle`. In this case, what we really want is to pass the data off to
the `ArrayHandle` so that the `ArrayHandle` is now managing the data and
not the `std::vector`.

C++11 has a mechanism to do this: move semantics. You can now pass
variables to functions as an "rvalue" (right-hand value). When something is
passed as an rvalue, it can pull state out of that variable and move it
somewhere else. `std::vector` implements this movement so that an rvalue
can be moved to another `std::vector` without actually copying the data.
`make_ArrayHandle` now also takes advantage of this feature to move rvalue
`std::vector`s.

There is a special form of `make_ArrayHandle` named `make_ArrayHandleMove`
that takes an rvalue. There is also a special overload of
`make_ArrayHandle` itself that handles an rvalue `vector`. (However, using
the explicit move version is better if you want to make sure the data is
actually moved.)

## Make `ArrayHandle` from initalizer list

A common use case for using `std::vector` (particularly in our unit tests)
is to quickly add an initalizer list into an `ArrayHandle`. Now you can
by simply passing an initializer list to `make_ArrayHandle`.

## Deprecated `make_ArrayHandle` with default shallow copy

For historical reasons, passing an `std::vector` or a pointer to
`make_ArrayHandle` does a shallow copy (i.e. `CopyFlag` defaults to `Off`).
Although more efficient, this mode is inherintly unsafe, and making it the
default is asking for trouble.

To combat this, calling `make_ArrayHandle` without a copy flag is
deprecated. In this way, if you wish to do the faster but more unsafe
creation of an `ArrayHandle` you should explicitly express that.

This requried quite a few changes through the VTK-m source (particularly in
the tests).

## Similar changes to `Field`

`vtkm::cont::Field` has a `make_Field` helper function that is similar to
`make_ArrayHandle`. It also features the ability to create fields from
`std::vector`s and C arrays. It also likewise had the same unsafe behavior
by default of not copying from the source of the arrays.

That behavior has similarly been depreciated. You now have to specify a
copy flag.

The ability to construct a `Field` from an initializer list of values has
also been added.
2020-07-23 10:53:38 -06:00
Li-Ta Lo
537557ef91 Merge topic 'worket_invoker_dispatcher2'
0dcc6cc16 reverse #include on CellNeighborhood
2489da125 restore comment, add needed #include
f33318247 Reverse Invoker, Dispatcher and Worklet dependency

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: Kenneth Moreland <kmorel@sandia.gov>
Merge-request: !2192
2020-07-22 14:20:35 -04:00
dpugmire
e60d899536 Use the ResetTypes spell to fix the ArrayCopy issue. 2020-07-22 12:03:11 -04:00
dpugmire
0a4d184205 fix compile error in array copy 2020-07-22 09:59:20 -04:00
Li-Ta Lo
0dcc6cc160 reverse #include on CellNeighborhood 2020-07-21 18:49:57 -06:00
Li-Ta Lo
f333182476 Reverse Invoker, Dispatcher and Worklet dependency 2020-07-21 17:25:43 -06:00
dpugmire
246be1b7f0 Merge branch 'master' of https://gitlab.kitware.com/vtk/vtk-m into generalizeField 2020-07-21 15:03:08 -04:00
dpugmire
415e2a5ac8 Fix to deal with float data when double enabled. 2020-07-21 15:00:47 -04:00
Li-Ta Lo
567b1fedd2 Merge topic 'cell_neighbor'
9cd70a7dc Install WorkletNeighborhood.h
f66c782b1 Extract WorkletNeighborhood base class
760c51ed6 install ThreadIndicesNeighborhood.h
e52b8fa88 Add CellNeighborhood

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: Kenneth Moreland <kmorel@sandia.gov>
Merge-request: !2181
2020-07-21 13:45:40 -04:00
dpugmire
5ad32f4860 enable reading data files. 2020-07-21 11:23:58 -04:00
Li-Ta Lo
9cd70a7dc5 Install WorkletNeighborhood.h 2020-07-21 08:48:49 -06:00
dpugmire
31c97bed89 Generalize fields for particle advection 2020-07-20 21:15:46 -04:00
Li-Ta Lo
f66c782b14 Extract WorkletNeighborhood base class 2020-07-20 17:50:14 -06:00
Li-Ta Lo
e52b8fa88a Add CellNeighborhood 2020-07-15 14:41:32 -06:00
Kenneth Moreland
f6b13df513 Support coordinates of both float32 and float64
Previously there were issues if the coordinate system was using floating
point values that were not FloatDefault. This remedies that issue.
2020-07-14 08:53:01 -06:00
Kenneth Moreland
be7f06bbe7 CoordinateSystem data is VariantArrayHandle
`CoordinateSystem` differed from `Field` in that its `GetData`
method returned an `ArrayHandleVirtualCoordinates` instead of
a `VariantArrayHandle`. This is probably confusing since
`CoordianteSystem` inherits `Field` and has a pretty dramatic
difference in this behavior.

In preparation to deprecate `ArrayHandleVirtualCoordinates`, this
changes `CoordiantSystem` to be much more like `Field`. (In the
future, we may change the `CoordinateSystem` to point to a `Field`
rather than be a special `Field`.)

A method named `GetDataAsMultiplexer` has been added to
`CoordinateSystem`. This method allows you to get data from
`CoordinateSystem` as a single array type without worrying
about creating functors to handle different types and without
needing virtual methods.
2020-07-14 08:50:39 -06:00
Petar Hristov
97b6e727f3 Fixing osx build warnings. 2020-07-14 14:00:02 +01:00
Petar Hristov
c6433140da Removed unused worklet. 2020-07-09 12:45:59 +01:00
Petar Hristov
98d0d69947 Removed unused library. 2020-07-09 10:49:51 +01:00
Petar Hristov
8fc73ebd23 Removed uint variables. 2020-07-09 10:20:37 +01:00
Petar Hritov
c20608288c Removed unused worklet. 2020-07-08 14:26:25 +01:00
Petar Hritov
9e8784a780 Refactoring. 2020-07-03 18:28:21 +01:00
Petar Hritov
edd2585752 Merge branch 'master' into working-branch 2020-07-03 13:55:21 +01:00
Petar Hritov
cdc0fa9e42 Added some additional comments. 2020-07-03 13:53:49 +01:00
Petar Hritov
1ed02d151f Working volume parallel BD version. 2020-07-03 11:40:47 +01:00
Kenneth Moreland
56bec1dd7b Replace basic ArrayHandle implementation to use Buffers
This encapsulates a lot of the required memory management into the
Buffer object and related code.

Many now unneeded classes were deleted.
2020-06-25 14:02:26 -06:00
Kenneth Moreland
c84588caf7 Re-add assert to fix deadlock
For some reason, `UnitTestContourTreeUniformAugmentedFilterCUDA` was
deadlocking on some of the dashboards when `VTKM_ASSERT` was changed to
be empty when compiling CUDA kernels (for compiler performance reasons).
Fix this by calling `assert` directly in this case.

For the life of me, I cannot figure out why this would be an issue.
Clearly the `assert` is never actually called or else the test would
error out (unless a special condition in CUDA is causing it to be
hidden). But if you take out the code, something changes to lock up the
kernel.
2020-06-22 17:10:33 -06:00
Kenneth Moreland
31feaed0f8 Merge topic 'fix-warnings'
0a4317709 Fix issues of calling __host__ from __device__
dd4d88cd5 Fix warnings about comparing floating point values
cd4b59059 Fix warnings about data type conversion

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: Robert Maynard <robert.maynard@kitware.com>
Merge-request: !2146
2020-06-17 17:23:07 -04:00
Kenneth Moreland
0a4317709e Fix issues of calling __host__ from __device__
Some methods were marked as `VTKM_CONT` when they should have been
marked `VTKM_EXEC_CONT`.
2020-06-17 14:55:43 -06:00
Kenneth Moreland
dd4d88cd5e Fix warnings about comparing floating point values 2020-06-17 11:58:45 -06:00
Kenneth Moreland
cd4b59059e Fix warnings about data type conversion 2020-06-17 10:29:08 -06:00
dpugmire
4744730630 Merge branch 'master' of https://gitlab.kitware.com/vtk/vtk-m into betterParticleAdvectionDiffs2 2020-06-17 11:12:11 -04:00
Li-Ta Lo
55f85f0674 Merge topic 'stats_by_key'
df0881631 minor coding style improvment
68c18f154 remove redundant #include
ba35520b1 use condition number for error tolerance
ee422b7f2 move data member initialization to constructors
e0c4db209 add VTKM_EXEC_CONT to constructor
c25f0b4bb Rename StatisticalMoments. more unit tests
5eeeb4791 Change StatState's API to better conform to VTKm's coding standard
794db28ad Merge branch 'master' into stats_by_key
...

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !2128
2020-06-16 16:06:21 -04:00
Li-Ta Lo
df08816317 minor coding style improvment 2020-06-16 13:01:08 -06:00
Li-Ta Lo
68c18f1546 remove redundant #include 2020-06-16 12:25:58 -06:00
Li-Ta Lo
ba35520b1c use condition number for error tolerance 2020-06-16 10:56:17 -06:00
Li-Ta Lo
ee422b7f27 move data member initialization to constructors 2020-06-16 10:25:16 -06:00
Li-Ta Lo
e0c4db2095 add VTKM_EXEC_CONT to constructor 2020-06-15 15:15:43 -06:00
Li-Ta Lo
c25f0b4bb8 Rename StatisticalMoments. more unit tests
Change StatisticalMoments to the more descriptive DescriptiveStatistics,
add some more property based tests.
2020-06-15 14:24:00 -06:00
dpugmire
cff830fb4c Remove some debugging code. 2020-06-15 14:23:52 -04:00
dpugmire
ee41466673 Accidently added some garbage numbers to line 35. Removed it. 2020-06-15 14:01:12 -04:00
dpugmire
bece39ec44 Fix compiler warnings. 2020-06-15 13:27:01 -04:00
NAThompson
755137a822 Particle advection tests with file. 2020-06-13 10:58:45 -04:00
Li-Ta Lo
5eeeb47914 Change StatState's API to better conform to VTKm's coding standard 2020-06-12 21:41:31 -06:00
Oliver Ruebel
66c96a983f Add BRACT for distributed contour tree computation
This merge request is Phase 1 of several to implement the distributed parallel
contour tree in VTKm. This merge requests adds the base outline for the
algorithm. The implementation of the details of the algorithm in the
BoundaryRestrictedAugmentedContourTree.h is currently still missing.
However, these will require a substantial (~3000) lines of additional code.
The goal is to stage the integration process across merge requests to make
the review process simpler.
2020-06-12 11:50:01 -06:00
Li-Ta Lo
794db28ad6 Merge branch 'master' into stats_by_key 2020-06-11 23:12:07 -06:00
Li-Ta Lo
964c1a778b Reversion to the Mean
Change the formula for calculating Mean to be exactly as is in the
literature. My own invention actually causes more numeric error.
2020-06-11 22:47:24 -06:00
Robert Maynard
16e04db157 FlyingEdges: Handle when pass 1 generates no intersections
Previously if pass 1 generated no intersections, pass 2 would
incorrectly generate no intersections resulting in an empty
dataset.
2020-06-11 08:32:28 -04:00
Li-Ta Lo
8e6fb01d02 Merge branch 'stats_by_key' of gitlab.kitware.com:ollielo/vtk-m into stats_by_key 2020-06-10 13:40:55 -06:00
Robert Maynard
8ebea33c7e FlyingEdges: Handle when a dimensions size is <= 3
Previously if any axis <= 3, we would incorrectly generate
triangles on the boundary.
2020-06-10 12:33:03 -04:00
Li-Ta Lo
6bc6a7ef50 widen error tolerance for variance test 2020-06-10 08:30:41 -06:00
Li-Ta Lo
72e21f398e remove auto return type 2020-06-09 18:17:13 -06:00
Li-Ta Lo
8a1a7c1b10 Refactor AverageByKye to use StatisticalMoments 2020-06-09 16:14:21 -06:00
Li-Ta Lo
0cf611e3b7 Add ByKey version 2020-06-09 14:13:07 -06:00
Petar Hritov
40090351a7 Checkpoint. 2020-06-09 14:11:12 +01:00
Li-Ta Lo
c9da2a9c06 add unit test on the property of variance 2020-06-08 10:22:24 -06:00
Li-Ta Lo
63232e0eed add reference to the algorithm and a unit test on normal RN 2020-06-08 09:20:25 -06:00
Robert Maynard
748f8f8c30 Correct flying edge cell-id mapping 2020-06-08 10:01:04 -04:00
Li-Ta Lo
807a0a9dea add newline 2020-06-05 16:18:19 -06:00
Li-Ta Lo
991e7eac2a United We Stand
Implemented a one-pass, Divide and Conqur algorithm to calculate various statistical
moments. Only one call to Reduce is needed.
2020-06-05 16:09:10 -06:00
Kenneth Moreland
7be44c847f Enable setting invalid value in probe filter
Initially, the probe filter would simply not set a value if a sample was
outside the input `DataSet`. This is not great as the memory could be
left uninitalized and lead to unpredictable results. The testing
compared these invalid results to 0, which seemed to work but is
probably unstable.

This was partially fixed by a previous change that consolidated to
mapping of cell data with a general routine that permuted data. However,
the fix did not extend to point data in the input, and it was not
possible to specify a particular invalid value.

This change specifically updates the probe filter so that invalid values
are set to a user-specified value.
2020-06-03 15:29:37 -06:00
Robert Maynard
14338a559c Merge topic 'gitlab_ci_doxygen'
930c3d2fb reproduce_ci_env better detects which stage a job is for
71d9d4311 Doxygen is now generated by gitlab and done on each master merge
a652f7fe1 Update vtk-m doxygen to generate less warnings
97a2408fc Correct warnings for using TBB 2020 deprecated functions

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !2117
2020-06-03 10:01:07 -04:00
Kenneth Moreland
8239eb467f Fix an issue with structured (non-uniform) gradients
This fixes a bug introduced in commit
93d87e06fd7a0ef479a324e5cd2453c1c7ece0ee

Part of the commit moved fromusing a `BoundaryState` object to keeping
boundary flags in a `vtkm::Vec<bool,3>`. However, the meaning of the
flag got inverted. The `BoundaryState::IsRadiusIn?Boundary` methods
returned true if the current location was inside the bounds (i.e. _not_
on the boundary), but the new flags are true if the current location is
on the boundary (the inverse).

The updating of the code for the `StructuredPointGradient::Jacobian`
method got the flag somewhat wrong and scaled the wrong case.
2020-06-02 17:44:06 -06:00
Abhishek Yenpure
8260be6fc6 Merge topic 'euler_integrator_fix'
e9fd545b0 Merge branch 'master' of gitlab.kitware.com:vtk/vtk-m into euler_integrator_fix
23126bbec Integrator status fix for consistant behavior
3e18f105e Fixing Integrator Status Behavior
ff112e424 Integrator status behavior check
343f2d577 Merge branch 'master' of gitlab.kitware.com:vtk/vtk-m into euler_integrator_fix
82cfba27c Rectify testing code
8ddecbb43 Fixing test issues
6274b1657 Updating Euler Integrator to work

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !2023
2020-06-01 17:20:16 -04:00
Robert Maynard
a652f7fe1e Update vtk-m doxygen to generate less warnings 2020-06-01 16:58:32 -04:00
Oliver Ruebel
eef30c2325 Merge branch 'master' into add/hyperstructstats 2020-05-28 09:32:30 -07:00
Oliver Ruebel
8a27ff5109 Merge branch 'master' into add/hyperstructstats 2020-05-28 00:38:29 -07:00
NAThompson
fe4f71ab92 Deprecate DataSetFieldAdd. 2020-05-27 15:27:47 -04:00
Abhishek Yenpure
e9fd545b06 Merge branch 'master' of gitlab.kitware.com:vtk/vtk-m into euler_integrator_fix 2020-05-27 10:55:49 -07:00
Abhishek Yenpure
23126bbec5 Integrator status fix for consistant behavior
- Return OK and spatial bits set when particle is out of bounds
- Changes done after discussion w/ Dave
2020-05-23 21:37:25 -07:00
Robert Maynard
251bd82b80 Significantly improve FlyingEdges performance across all devices
We now use SumYAxis when executing with CUDA for better memory patterns.
Instead of using the heavy Pass4/Pass4WithNormals, CUDA now uses a
2 pass approach with the second pass outputting the normals and
coordinates using with significantly less warp divergence
2020-05-22 15:53:49 -04:00
Robert Maynard
fa93738010 Rework FlyingEdges::Pass1 to handle NUMA and CUDA requirements.
First the Pass1 now uses WorkletVisitPointsWithCells as it is
faster since it doesn't compute some implicit boundary / neighborhood
info.

Second we reworked the logic around using `Fill` and a conditional
write of the edge case. The requirements of SMP when on a NUMA
machine is the complete opposite of what works great with CUDA.
2020-05-22 14:58:38 -04:00
Robert Maynard
769a10b47b FlyingEdge Normal and Point generation occurs in Pass4
By doing this in pass 4 we can remove numerous boundary condition
checks, improving the algorithm performance
2020-05-22 14:58:38 -04:00
Robert Maynard
93d87e06fd Optimize StructuredPointGradient for non boundary points.
We can remove lots of clamp calls by checking if we are on
a boundary and using a non-clamped API.
2020-05-22 14:58:38 -04:00
Kenneth Moreland
3c4e8a2ea5 Convert filters to use precompiled field map functions where applicable 2020-05-21 08:34:32 -06:00
Kenneth Moreland
4a5dbb65db Convert CleanGrid (and dependents) to use precompiled field map 2020-05-21 08:34:29 -06:00
Kenneth Moreland
b1f288aaea Add non-templated base class to Keys class.
The only reason Keys has a template is so that it can hold a UniqueKeys
array and provide the key for each group. If that is not needed and you
want to implement a library function that takes a keys object, you can
now grab the Keys superclass KeysBase. KeysBase is not templated, so you
can pass it to a standard method in a library.
2020-05-21 08:34:07 -06:00
Abhishek Yenpure
3e18f105e9 Fixing Integrator Status Behavior
-- Setting the Spatial and OK bit both to 1 for Euler integrator
   similar to RK4

-- After discussion w/ Dave, the Spatial/Temporal bit will be the
   status of the particle and not the OK bit.
2020-05-20 16:27:57 -07:00
Kenneth Moreland
72cd0107ee Deprecate Execute with policy
The version of `Filter::Execute` that takes a policy as an argument is now
deprecated. Filters are now able to specify their own fields and types,
which is often why you want to customize the policy for an execution. The
other reason is that you are compiling VTK-m into some other source that
uses a particular types of storage. However, there is now a mechanism in
the CMake configuration to allow you to provide a header that customizes
the "default" types used in filters. This is a much more convenient way to
compile filters for specific types.

One thing that filters were not able to do was to customize what cell sets
they allowed using. This allows filters to self-select what types of cell
sets they support (beyond simply just structured or unstructured). To
support this, the lists `SupportedCellSets`, `SupportedStructuredCellSets`,
and `SupportedUnstructuredCellSets` have been added to `Filter`. When you
apply a policy to a cell set, you now have to also provide the filter.
2020-05-18 12:38:41 -06:00
Nick
9471041484 Merge branch 'master' into deprecate_read_portal_get 2020-05-14 14:04:44 -04:00
Abhishek Yenpure
ff112e4244 Integrator status behavior check 2020-05-12 17:00:52 -07:00
NAThompson
d961c185ac Deprecate ReadPortal().Get pattern. 2020-05-12 15:43:40 -04:00
Abhishek Yenpure
343f2d5773 Merge branch 'master' of gitlab.kitware.com:vtk/vtk-m into euler_integrator_fix 2020-05-12 11:35:53 -07:00
Vicente Adolfo Bolea Sanchez
d5906eccd9 add ThreadIndicesTopologyMap optimized specializations
This commit splits ThreadIndicesTopologyMap into two
different specializations which can be instanciated with the
tags: DefaultScatterAndMaskTag and CustomScatterAndMaskTag.

These specialization will allow ThreadIndicesTopologyMap
instances to avoid holding in memory InputIndex, OutputIndex and ThreadIndex
variables when Mask = MaskNone and Scatter = ScatterIdentity which in this case
are not needed since no transformation are done.

Signed-off-by: Vicente Adolfo Bolea Sanchez <vicente.bolea@kitware.com>
2020-05-12 13:45:43 -04:00
Robert Maynard
51e600e7e2 Remove no_discard warnings from unneeded calls of a rng 2020-05-12 09:38:18 -04:00
Nick
990ae4b9a6 Merge topic 'readportalget2'
afe9c2a2b Update UnitTestTimer.cxx
46faf574f ReadPortal().Get(idx) is slow in a loop.

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !2078
2020-05-08 18:25:14 -04:00