VTK-m merge requestshttps://gitlab.kitware.com/vtk/vtk-m/-/merge_requests2020-04-09T09:46:03-04:00https://gitlab.kitware.com/vtk/vtk-m/-/merge_requests/1665WIP: Cast VariantArrayHandle to ArrayHandle without knowing type2020-04-09T09:46:03-04:00Kenneth MorelandWIP: Cast VariantArrayHandle to ArrayHandle without knowing typePreviously, to get any ArrayHandle from a VariantArrayHandle,
even an ArrayHandleVirtual, you had to check some finite
number of types. This led us to have a pretty large set of
default types to check and even then we cannot catch everyt...Previously, to get any ArrayHandle from a VariantArrayHandle,
even an ArrayHandleVirtual, you had to check some finite
number of types. This led us to have a pretty large set of
default types to check and even then we cannot catch everything.
Change this so that we can get an ArrayHandleVirtual of "any"
type from VariantArrayHandle without having to know the type.
Any is in quotes above because this change necessitates a
limitation on ArrayHandleVirtual to only support a limited
set of value types. The types it supports must be castable
to void* array and then be cast back again to one of the
base C types.https://gitlab.kitware.com/vtk/vtk-m/-/merge_requests/1480WIP: Add ability to group keys by atomics2020-04-09T09:46:07-04:00Kenneth MorelandWIP: Add ability to group keys by atomicsThe previous implementation of vtkm::worklet::Keys used a parallel sort
to group common keys together. Some recent R&D has suggested that it is
faster to use atomics in a table of possible keys.The previous implementation of vtkm::worklet::Keys used a parallel sort
to group common keys together. Some recent R&D has suggested that it is
faster to use atomics in a table of possible keys.https://gitlab.kitware.com/vtk/vtk-m/-/merge_requests/1868WIP: Tangle transform2020-04-09T09:46:34-04:00Li-Ta LoWIP: Tangle transformThis MR uses ArrayHandleTransform instead of a Worklet to generate nodevar for the Tangle source.This MR uses ArrayHandleTransform instead of a Worklet to generate nodevar for the Tangle source.Robert MaynardRobert Maynardhttps://gitlab.kitware.com/vtk/vtk-m/-/merge_requests/2036WIP: Expose bug in FlyingEdges2020-04-14T09:41:23-04:00Kenneth MorelandWIP: Expose bug in FlyingEdgesThere appears to be some conditions where compute pass 4 of FlyingEdges
does not properly update all of the values in InterpolationEdgeIds,
which can cause failures when you later try to use these ids for edge
interpolation.
The error i...There appears to be some conditions where compute pass 4 of FlyingEdges
does not properly update all of the values in InterpolationEdgeIds,
which can cause failures when you later try to use these ids for edge
interpolation.
The error is most noticible on debug builds of Windows, which initialize
the bytes in allocated arrays with 0xCD. This is a negative number in
2's complement, which is an obviously invalid id. You should be able to
replicate this behavior by editing FlyingEdges.h around line 170 to
initialize sharedState.InterpolationEdgeIds to a bunch of negative
numbers.
I think the problem is related to defining 2 or more isovalues. That
seems to be when the error occurs. Maybe arrays are not getting windowed
correctly.https://gitlab.kitware.com/vtk/vtk-m/-/merge_requests/2111Update docker images to use cmake 3.17.3 when running VTK-m test script2020-06-01T15:00:19-04:00Robert MaynardUpdate docker images to use cmake 3.17.3 when running VTK-m test scriptThe 3.17.3 release fixes a regression in ctest where NOT_RUN
tests didn't get reported to ctest or cdashThe 3.17.3 release fixes a regression in ctest where NOT_RUN
tests didn't get reported to ctest or cdashhttps://gitlab.kitware.com/vtk/vtk-m/-/merge_requests/2113Add openmpi library path to LD_LIBRARY_PATH2020-06-01T16:38:07-04:00Sujin PhilipAdd openmpi library path to LD_LIBRARY_PATHFor the ubuntu1604 configurationFor the ubuntu1604 configurationSujin PhilipSujin Philiphttps://gitlab.kitware.com/vtk/vtk-m/-/merge_requests/2112WIP: Move Doxygen over to Gitlab CI2020-06-02T16:15:25-04:00Robert MaynardWIP: Move Doxygen over to Gitlab CIhttps://gitlab.kitware.com/vtk/vtk-m/-/merge_requests/2012Add BRACT for distributed contour tree computation2020-06-12T17:58:35-04:00Oliver RuebelAdd BRACT for distributed contour tree computationThis 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 BoundaryRestricte...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.https://gitlab.kitware.com/vtk/vtk-m/-/merge_requests/2141WIP: Check ubuntu1804_gcc7 build timeouts2020-06-15T20:34:01-04:00Kenneth MorelandWIP: Check ubuntu1804_gcc7 build timeoutsI've been having an issue with the `ubuntu1804_gcc7` build timing out on
a change that touches a lot of code. I'm adding a small comment deep in
the code to cause a recompile that should not take longer than what is
already on master. If...I've been having an issue with the `ubuntu1804_gcc7` build timing out on
a change that touches a lot of code. I'm adding a small comment deep in
the code to cause a recompile that should not take longer than what is
already on master. If this cannot succeed without timing out, then there
must be an issue with the existing code on master not compiling within
the timeout time.https://gitlab.kitware.com/vtk/vtk-m/-/merge_requests/2143WIP: Figure out build timeouts for ArrayHandleMultiplexer fixes2020-06-17T10:21:26-04:00Kenneth MorelandWIP: Figure out build timeouts for ArrayHandleMultiplexer fixesThe `ubuntu1804_gcc7` for !2133 keeps timing out. The code changes are not that much, but something seems to be running slowly. Use this fake MR to try to track down what the issue is.The `ubuntu1804_gcc7` for !2133 keeps timing out. The code changes are not that much, but something seems to be running slowly. Use this fake MR to try to track down what the issue is.https://gitlab.kitware.com/vtk/vtk-m/-/merge_requests/2040Buffer2020-06-22T09:44:53-04:00Kenneth MorelandBufferAdd the `Buffer` class. This class manages buffers of
memory of unknown type.Add the `Buffer` class. This class manages buffers of
memory of unknown type.https://gitlab.kitware.com/vtk/vtk-m/-/merge_requests/2190Worket invoker dispatcher2020-07-21T19:29:35-04:00Li-Ta LoWorket invoker dispatcherReverse the dependency between Invoker.h and *Worklet.h. This prevents a recompilation of a large number of file when any one of the Worklet.h is modified.Reverse the dependency between Invoker.h and *Worklet.h. This prevents a recompilation of a large number of file when any one of the Worklet.h is modified.Kenneth MorelandKenneth Morelandhttps://gitlab.kitware.com/vtk/vtk-m/-/merge_requests/2066WIP: splits instantiations of several classes accross multiple files2020-07-22T18:13:49-04:00Vicente Boleavicente.bolea@kitware.comWIP: splits instantiations of several classes accross multiple filesfixes: #474
fixes: #503
Similarly as many of you, I suffer long CUDA compilation times, here I try to implement the suggestion exposed in the issue #474.
This MR is more of an experiment of what could be done to decrease the com...fixes: #474
fixes: #503
Similarly as many of you, I suffer long CUDA compilation times, here I try to implement the suggestion exposed in the issue #474.
This MR is more of an experiment of what could be done to decrease the compilation times by spiting instantiation of templates across multiple files. This does it in its maximum extreme which is one instantiation per file. It might not be feasible to have this since it obscure the project structure.
Signed-off-by: Vicente Adolfo Bolea Sanchez <vicente.bolea@kitware.com>https://gitlab.kitware.com/vtk/vtk-m/-/merge_requests/2209Draft: Experiment of using kokkos+cuda on ubuntu2020-08-13T16:04:16-04:00Robert MaynardDraft: Experiment of using kokkos+cuda on ubuntuhttps://gitlab.kitware.com/vtk/vtk-m/-/merge_requests/2203WIP: fomatting: updates vtkm formatting to match clang-format 92020-08-19T13:11:54-04:00Vicente Boleavicente.bolea@kitware.comWIP: fomatting: updates vtkm formatting to match clang-format 9related: !1948
This MR implements the changes intended to be added in the MR !1948related: !1948
This MR implements the changes intended to be added in the MR !1948https://gitlab.kitware.com/vtk/vtk-m/-/merge_requests/2131Normal of zero vectors2020-08-19T13:13:50-04:00Kenneth MorelandNormal of zero vectorsThe normal of a vector is the vector divided by the vector's magnitude.
However, if the vector is the 0 vector, you get 0/0, which results in
non-finite numbers.
There might be legitimate situations where you (unintentionally) try to
no...The normal of a vector is the vector divided by the vector's magnitude.
However, if the vector is the 0 vector, you get 0/0, which results in
non-finite numbers.
There might be legitimate situations where you (unintentionally) try to
normalize a 0 vector. For example, you might be using the derivative of
a field to compute the normal to a contour of the field. If the field is
in a static region or critical point, then the gradient goes to 0.
In these cases, we want the `Normal` and `Normalize` functions to return
something reasonable. These functions now return the 0 vector back. This
is no more "correct" than producing NaN values, but it is less likely to
cause problems later.https://gitlab.kitware.com/vtk/vtk-m/-/merge_requests/1862Use ArrayHandleMultiplexer to resolve active field2020-08-19T13:13:56-04:00Kenneth MorelandUse ArrayHandleMultiplexer to resolve active fieldPreviously, `FilterField` and `FilterDataSetWithField` used the `VariantArrayHandle::CastAndCall` method to apply a policy on the active field and call the subclass `DoExecute` with a particular `ArrayHandle`. This relied in part on virt...Previously, `FilterField` and `FilterDataSetWithField` used the `VariantArrayHandle::CastAndCall` method to apply a policy on the active field and call the subclass `DoExecute` with a particular `ArrayHandle`. This relied in part on virtual array handles to keep down the code paths. Change this to use `ArrayHandleMultiplexer` for fewer code paths without virtual methods.https://gitlab.kitware.com/vtk/vtk-m/-/merge_requests/2144WIP: Use ArrayHandleMultiplexer in VariantArrayHandle::CastAndCall2020-08-19T13:14:00-04:00Kenneth MorelandWIP: Use ArrayHandleMultiplexer in VariantArrayHandle::CastAndCallThe previous behavior of `VariantArrayHandle::CastAndCall` was to
identify all possible `ArrayHandle`s to try and call the provided
functor with each one. This change creates an `ArrayHandleMultiplexer`
for each value type so that the fu...The previous behavior of `VariantArrayHandle::CastAndCall` was to
identify all possible `ArrayHandle`s to try and call the provided
functor with each one. This change creates an `ArrayHandleMultiplexer`
for each value type so that the functor need only be called once for
each value type rather than once for every value-storage type pair.
This results in more complex array types, but should result in fewer
total code paths.https://gitlab.kitware.com/vtk/vtk-m/-/merge_requests/1958WIP: Change DeviceAdapterAlgorithm::Schedule accept and pass arguments2020-08-19T13:14:19-04:00Kenneth MorelandWIP: Change DeviceAdapterAlgorithm::Schedule accept and pass argumentsPreviously, if you wanted to schedule a functor to pass arguments, the
only way to do it was to put the arguments into the state of the
functor, which could be a pain. Now, in addition to the functor itself
and a scheduling range, Schedu...Previously, if you wanted to schedule a functor to pass arguments, the
only way to do it was to put the arguments into the state of the
functor, which could be a pain. Now, in addition to the functor itself
and a scheduling range, Schedule also accepts an arbitrary number of
objects. These objects are passed to the functor when each instance is
executed.
Previously, there was also a special form of creating "Task" objects
that held the state of a worklet and the Invocation it needed to
execute. Now that Schedule can pass parameters, the Invocation can
easily be passed using command line arguments, so none of that special
code is necessary and has been ripped out.https://gitlab.kitware.com/vtk/vtk-m/-/merge_requests/2191Fix race condition in UnitTestGraphConnectivity2020-08-27T16:54:16-04:00Kenneth MorelandFix race condition in UnitTestGraphConnectivityThe UnitTestGraphConnectivity would sometimes fail on parallel devices
(even though the tested graph is remarkably small). The issue was likely
a race condition in the pointer jumping worklets where the worklet would
check graph edges in...The UnitTestGraphConnectivity would sometimes fail on parallel devices
(even though the tested graph is remarkably small). The issue was likely
a race condition in the pointer jumping worklets where the worklet would
check graph edges in an array and then update the connections in the
same array.
These race conditions are removed by reading input connections from one
array and writing the results to a separate array. The algorithm now
seems more stable although it now requires more memory.