Commit Graph

5423 Commits

Author SHA1 Message Date
Petar Hristov
5f1333cabb Parallelised pointer doubling in the contour tree branch decomposition. 2020-03-24 09:06:32 +00:00
Petar Hristov
ad2dfc18e8 Added stopwatches for debugging. 2020-03-24 07:17:49 +00:00
Petar Hristov
ecfb1f2e36 Working parallelisable height BD. 2020-03-23 14:11:31 +00:00
Petar Hristov
0e636bb8b2 Remove array portals so that they won't lock arrays. 2020-03-06 17:20:52 +00:00
Robert Maynard
e78099e02d Update UnitTestWorkletMapField3d to use vtkm::cont::Token 2020-02-27 10:07:10 -05:00
Robert Maynard
7457f5616c Merge topic 'invoker_gcc4_warnings'
f4153fe2f Correct warnings found with CUDA 10.2 + gcc 4.8.5

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !1974
2020-02-27 09:10:44 -05:00
Robert Maynard
8377806778 Merge topic 'introduce_mapfield_3d_scheduling'
1f1688483 Initial infrastructure to allow WorkletMapField to have 3D scheduling

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: Kenneth Moreland <kmorel@sandia.gov>
Merge-request: !1938
2020-02-27 08:02:52 -05:00
Robert Maynard
f4153fe2f9 Correct warnings found with CUDA 10.2 + gcc 4.8.5
Found during building on Centos7 based Power9 machines
2020-02-26 15:16:35 -05:00
Kenneth Moreland
e5a6f2d4b6 Make ArrayPortalWrapper more tolerant of host objects
The ArrayPortalWrapper is used for both execution and control portals.
When it was wrapped around a control portal that does not work on CUDA
devices, we were getting ugly warnings even though the intention was
only to use it in the control environment.
2020-02-26 13:10:51 -07:00
Kenneth Moreland
8569359e14 Add threads library to vtkm_cont
With the new thread safety/token code, the vtkm_cont library now relies
on the pthreads library (or whatever threads library is used by std on
the system). Make sure this library gets added to vtkm_cont.
2020-02-26 13:10:50 -07:00
Kenneth Moreland
69c03d902d Fix deadlock in rendering 2020-02-26 13:10:49 -07:00
Kenneth Moreland
14c3d90ac3 Fix race condition in UnitTestToken
Apparently when future::get returns, it is not the case that all
resources of the future are cleaned up (only that the calling function
has returned). Do not rely on this resource cleanup for the test to
pass.
2020-02-26 13:10:48 -07:00
Kenneth Moreland
9b876df96f Remove PortalType from ArrayHandleImplicitTraits
The type for PortalType was declared before the class from which the
type came from. Normally this was not a big deal since the template was
resolved later, but nvcc seemed to have a problem with it.
2020-02-26 13:10:48 -07:00
Kenneth Moreland
188d1c5671 Correct "invalid" portal in ArrayHandleTransform
For an ArrayHandleTransform with no inverse functor, it really
only supports read-only portals. Thus, the non-const portal
for the execution environment was set to some unused control
portal. That was causing problems with CUDA, so make the
non-const portal valid (although without a Set).
2020-02-26 13:10:47 -07:00
Kenneth Moreland
ec34cb56c4 Use new ways to get array portal in control environment
Also fix deadlocks that occur when portals are not destroyed
in time.
2020-02-26 13:10:46 -07:00
Kenneth Moreland
8ddde979f0 ArrayPortalToIterators gets custom iterator from ArrayPortalToken
Because ArrayPortalToken does not have an IteratorType,
ArrayPortalToIterators assumed it had to wrap it in an
IteratorFromArrayPortal object. Now it uses PortalSupportsIterators
(from ArrayPortalHelpers.h) to determine whether the iterators are
there. This does work with ArrayPortalToken.
2020-02-26 13:10:44 -07:00
Kenneth Moreland
6b089be03e Add ArrayPortalToken object and implement Read/WritePortal
To get a portal to access ArrayHandle values in the control
environment, you now use the ReadPortal and WritePortal methods.
The portals returned are wrapped in an ArrayPortalToken object
so that the data between the portal and the ArrayHandle are
guaranteed to be consistent.
2020-02-26 13:10:37 -07:00
Robert Maynard
1f1688483e Initial infrastructure to allow WorkletMapField to have 3D scheduling 2020-02-25 15:23:41 -05:00
Kenneth Moreland
e43770888f Allow Token to have a NULL Internals
This fixes an issue where moving a Token object left the original Token
in an invalid state because the poiner to the internals was NULL. Rather
than allocate a new one, just make the Token work correctly if the
internals are NULL.
2020-02-25 09:39:31 -07:00
Kenneth Moreland
3671cbe168 Fix token issues with CUDA 2020-02-25 09:39:30 -07:00
Kenneth Moreland
098e0fed16 Back out of passing a token when transfering virtual objects
It is questionable whether there is a point to having a token object
when transfering a virtual object to a device (since there is a handle
object that is managing it anyway). Back out of passing the token all
the way down unless there is an actual need for that.
2020-02-25 09:39:29 -07:00
Kenneth Moreland
7aa043b0da Add necessary tokens to OpenMP device algorithms 2020-02-25 09:39:28 -07:00
Kenneth Moreland
b2fdf236e7 Fix deadlocks in device adapters and low level tests
The new Token functionality makes it easy for a thread to deadlock
itself if it does not detach a token after it is done.
2020-02-25 09:39:27 -07:00
Kenneth Moreland
ad0a53af71 Convert execution preparation to use tokens
Marked the old versions of PrepareFor* that do not use tokens as
deprecated and moved all of the code to use the new versions that
require a token. This makes the scope of the execution object more
explicit so that it will be kept while in use and can potentially be
reclaimed afterward.
2020-02-25 09:39:19 -07:00
Kenneth Moreland
642b59f4fd Allow a token to attach to an ArrayHandle multiple times
When a single `ArrayHandle` is given to multiple arguments of a worklet
dispatch, the `PrepareFor*` methods will be called multiple times with
the same token. If one of them is a `PrepareForInPlace` or
`PrepareForOutput`, then the two requests will deadlock. To prevent
this, allow the `PrepareFor*` to happen if the same token was used
previously.
2020-02-25 07:41:40 -07:00
Kenneth Moreland
76ce9c87f0 Support using Token calling PrepareForExecution in ExecutionObject
The old version of ExecutionObject (that only takes a device) is still
supported, but you will get a deprecated warning if that is what is
defined.

Supporing this also included sending vtkm::cont::Token through the
vtkm::cont::arg::Transport mechanism, which was a change that propogated
through a lot of code.
2020-02-25 07:41:39 -07:00
Kenneth Moreland
ef3f544a67 Add ability to attach token to general ArrayHandle
Duplicated the new versions of PrepareFor* methods from the basic
ArrayHandle that take a token in addition to the other arguments. The
ArrayHandle attaches itself to the token and will not allow operaitons
that make the returned portal invalid until the token goes out of scope.

Later the old versions will be deprecated.
2020-02-25 07:41:37 -07:00
Kenneth Moreland
5f44f3727c Add ability to attach token to standard ArrayHandle
Added new versions of PrepareFor* methods that take a token in addition
to the other arguments. The ArrayHandle attaches itself to the token and
will not allow operations that make the returned portal invalid until
the token goes out of scope.

Later the old versions will be deprecated.
2020-02-25 07:41:36 -07:00
Kenneth Moreland
a49fa83035 Add Token 2020-02-25 07:41:36 -07:00
Kenneth Moreland
47249ee3c0 Merge branch 'master' into oruebel/vtk-m-cleanup/contourtreeaugmented 2020-02-24 20:53:47 -07:00
Oliver Ruebel
392854ee35 Replace C-tyle casts with C++ style 2020-02-24 11:19:37 -08:00
Robert Maynard
a5e8ed4580 Merge topic 'allow_multiple_compilations_of_image_connectivity_filter'
576ff5ec8 ImageConnectivity didn't support multiple TU's compiling it

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !1971
2020-02-21 16:18:24 -05:00
Robert Maynard
576ff5ec87 ImageConnectivity didn't support multiple TU's compiling it 2020-02-21 13:01:51 -05:00
Matt Larsen
2123a56ab3 Merge topic 'change_lagrangian_output_structuredgrid'
e68b283e8 Delete commented, unused class variables
4d358e5b2 Remove coordinates from class member variable list
e6647efaf Fix condition to populate coordinate variables
2e2a847f5 Change Lagrangian output format to structured grid

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: Kenneth Moreland <kmorel@sandia.gov>
Merge-request: !1945
2020-02-12 16:20:19 -05:00
Kenneth Moreland
3d421ff589 Merge topic 'deprecate-old-topology-worklets'
f7709a8db Mark deprecated superclasses of WorkletMapTopology with VTKM_DEPRECATED

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: Robert Maynard <robert.maynard@kitware.com>
Merge-request: !1955
2020-02-11 12:16:15 -05:00
Robert Maynard
6a62b7f2e4 Merge topic '450_openmp_scaling'
1f61c500e Remove non-atomic ops from BitField unit test.
5565848d9 Use a dynamic strategy for openmp 1D scheduling.

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: Robert Maynard <robert.maynard@kitware.com>
Merge-request: !1925
2020-02-11 12:12:47 -05:00
Kenneth Moreland
f7709a8dba Mark deprecated superclasses of WorkletMapTopology with VTKM_DEPRECATED 2020-02-06 20:30:21 -06:00
Oliver Ruebel
230ef15e4b Fix layout of array definition in unit test 2020-01-30 16:45:59 -08:00
Oliver Ruebel
712ae1063b Fix memory bug in contour tree unit test 2020-01-30 16:41:08 -08:00
Oliver Ruebel
4501afb24d Iprove array style in test 2020-01-30 14:13:44 -08:00
Oliver Ruebel
3f9988253b Remove completed TODO items 2020-01-30 01:16:38 -08:00
Oliver Ruebel
45e9684d97 Improve layout of arrays in unit test 2020-01-30 01:14:29 -08:00
Oliver Ruebel
0a897aa947 Improve layout of arrays in unit test 2020-01-30 01:06:43 -08:00
Oliver Ruebel
d2be26690d UnitTest make contour tree and regular structure. Add tests 2020-01-30 00:47:50 -08:00
Oliver Ruebel
7526d953dd UnitTest ContourTree.Init 2020-01-29 17:06:45 -08:00
Oliver Ruebel
7de023c443 UnitTest that Join and Split tree are being built correctly 2020-01-29 16:52:39 -08:00
Oliver Ruebel
a8d30882c4 UnitTest that arrays are being released after Join/Split tree compute 2020-01-29 15:16:29 -08:00
Oliver Ruebel
9262fd78ca Add test for splitTree.SetStarts and splitTree.BuildRegularChains 2020-01-29 14:33:29 -08:00
Oliver Ruebel
7b803eff1f Add test for joinTree.Initialise and splitTree.Initialise 2020-01-29 13:45:59 -08:00
Oliver Ruebel
9c115ec6a3 Fix bug in ActiveGraph DebugPrint 2020-01-29 12:30:18 -08:00