Commit Graph

6150 Commits

Author SHA1 Message Date
Kenneth Moreland
cdc41cc987 Merge topic 'vtk-test-files-in-repo'
a8fa14335 Move UnitTestVTKDataSetReader files to git-lfs
571aa9f3d Simplify getting test file names

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: Sujin Philip <sujin.philip@kitware.com>
Merge-request: !2234
2020-08-25 11:27:07 -04:00
Kenneth Moreland
b5ed6e7257 Fix some conversion warnings
Fixes some compiler warnings that were missed on recent dashboards.
2020-08-25 08:30:44 -06:00
Kenneth Moreland
a8fa143351 Move UnitTestVTKDataSetReader files to git-lfs
The `UnitTestVTKDataSetReader` test reads in .vtk files of multiple
formats. The origins of this test predate the use of git-lfs and a data
directory, so the test defined in the source code several strings
containing the contents of the files.

That is no longer necessary. This change removes those strings from the
file and creates actual files in the data directory. This is easier to
manage as well as more convenient if you want to use the same data in a
different test or just take a look at the data in a different program
(such as VisIt or ParaView).
2020-08-25 07:23:13 -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
Kenneth Moreland
17b81f54a2 Merge topic 'arrayhandlebitfield-use-buffer'
4345fe26b Store the number of bits of a BitField in the Buffer's metadata
da0403be7 Add metadata to Buffer object.
a84891cd3 Update ArrayHandleBitField to new array style with Buffer

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !2218
2020-08-25 07:53:37 -04:00
Kenneth Moreland
4345fe26b0 Store the number of bits of a BitField in the Buffer's metadata
The number of bits in a `BitField` cannot be directly implied from the
size of the buffer (because the buffer gets padded to the nearest sized
word). Thus, the `BitField stored the number of bits in its own
internals.

Unfortunately, that caused issues when passing the `BitField` data
between it and an `ArrayHandleBitField`. If the `ArrayHandleBitField`
resized itself, the `BitField` would not see the new size because it
ignored the new buffer size.

To get around this problem, `BitField` now declares its own
`BufferMetaData` that stores the number of bits. Now, since the number
of bits is stored in the `Buffer` object, it is sufficient to just share
the `Buffer` to synchronize all of the state.
2020-08-24 17:09:30 -06:00
Kenneth Moreland
9941db6df5 Convert ArrayHandleSOA to use Buffer
Make `ArrayHandleSOA` use the new `ArrayHandle` style that uses `Buffer`
objects to manage and transfer data.
2020-08-24 16:03:17 -06:00
Kenneth Moreland
da0403be76 Add metadata to Buffer object.
One of the goals of the `Buffer` object is to allow sharing of data
among objects that will interpret the data differently or give a
different interface over the data. However, when sharing only the array,
important metadata can become lost.

Provide a field that can store some custom metadata in the buffer object
so that the rest of the state can follow the buffer object around.
2020-08-24 15:57:15 -06:00
Kenneth Moreland
a84891cd32 Update ArrayHandleBitField to new array style with Buffer 2020-08-24 15:57:13 -06:00
Kitware Robot
cf0cdcf7d1 clang-format: reformat the repository with clang-format-9 2020-08-24 14:01:08 -04:00
Robert Maynard
b48c19f251 Correct warnings found by using clang as the host compiler for cuda 2020-08-24 08:57:38 -04:00
Li-Ta Lo
ea2dad5154 extract Unite 2020-08-22 06:15:11 -06:00
Kenneth Moreland
0370029f92 Merge topic 'free-atomic-functions'
6cbcb9f5d Fix behavior of Cuda AtomicLoad with SequentiallyConsistent
7573d4ed5 Fix compiler warnings
147dd24d0 Remove ARM intrinsics in MSVC
2229c22f4 Avoid invalid Kokkos atomic calls
3b147878f Always use our implementation of Cuda atomics
9e6fe8fb6 Add memory order semantics to atomic functions
d2ac4b860 Be more careful in casting with Atomic functions
13056b3af Deprecate AtomicInterfaceControl and AtomicInterfaceExecution
...

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !2223
2020-08-22 00:21:01 -04:00
Vicente Adolfo Bolea Sanchez
e3d7347080 IBM XL: disable unused-template pragma for xl
Signed-off-by: Vicente Adolfo Bolea Sanchez <vicente.bolea@kitware.com>
2020-08-21 15:40:05 -04: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
Kenneth Moreland
6cbcb9f5d7 Fix behavior of Cuda AtomicLoad with SequentiallyConsistent
According to Allie Vacanti, a sequentially consistent load requires a
full fence on Cuda hardware to be conforming.

Also improved the documentation of `MemoryOrder` based on Allie's
suggestion.

Also removed the `Consume` memory order based on Allie's suggestion. It
is tricky to use correctly, and most implementations just regress to the
safer `Acquired` behavior anyway.
2020-08-20 17:53:47 -06:00
Kenneth Moreland
7573d4ed57 Fix compiler warnings 2020-08-20 17:08:36 -06:00
Kenneth Moreland
147dd24d01 Remove ARM intrinsics in MSVC 2020-08-20 17:08:36 -06:00
Kenneth Moreland
2229c22f40 Avoid invalid Kokkos atomic calls 2020-08-20 17:08:21 -06:00
Li-Ta Lo
2492d7d1d1 add test case from Valentine, more comments in ImageGraft 2020-08-20 15:08:55 -06:00
Kenneth Moreland
3b147878f5 Always use our implementation of Cuda atomics
Previously, if Kokkos was enabled we always used Kokkos atomics.
However, if a user, for some reason, compiled with a version of Kokkos
that was _not_ compiled for Cuda and we turned on our own Cuda device
adapter, that would cause a problem. The old code assumed Kokkos would
create the Cuda version of the atomics, but it would not. Thus, there
would be no atomics for Cuda.

Resolved this problem by switching the order in which we try to define
atomics. Use our version of atomics whenever compiling for a Cuda
device. Otherwise, try to compile the Kokkos version (and if that is not
available, use ours as before.
2020-08-20 14:20:32 -06:00
Kenneth Moreland
9e6fe8fb66 Add memory order semantics to atomic functions
To ensure correctness of an atomic function, it is often necessary to
force a compiler to order operations correctly. However, doing so may
slow things down, so it is helpful to relax these constraints if they
are not necessary. Add the ability to select the correct memory order
constraints in the atomic functions.
2020-08-20 13:40:44 -06:00
Kenneth Moreland
d2ac4b860c Be more careful in casting with Atomic functions
Previously, the atomic functions accepted any type as its operand and
then cast that to the storage type. That could cause some rather
unexpected behavior. For example, casting a floating point number to an
integer might not give you the behavior as expected. So that behavior as
been removed and now the operand has to match the pointer.

However, all the currently supported atomics are unsigned, and there are
many reasons that it might be easier to use signed as operands. (For
example, C literals are signed.) Thus, a second condition that allows
the sign to be swapped has been added so that you don't get annoying
signed/unsigned conversion warnings.
2020-08-20 13:40:44 -06:00
Kenneth Moreland
13056b3af5 Deprecate AtomicInterfaceControl and AtomicInterfaceExecution
Now that we have the functions in `vtkm/Atomic.h`, we can deprecate (and
eventually remove) the more cumbersome classes `AtomicInterfaceControl`
and `AtomicInterfaceExecution`.

Also reversed the order of the `expected` and `desired` parameters of
`vtkm::AtomicCompareAndSwap`. I think the former order makes more sense
and matches more other implementations (such as `std::atomic` and the
GCC `__atomic` built ins). However, there are still some non-deprecated
classes with similar methods that cannot easily be switched. Thus, it's
better to be inconsistent with most other libraries and consistent with
ourself than to be inconsitent with ourself.
2020-08-20 13:40:44 -06:00
Kenneth Moreland
82d6ca9854 Allow Kokkos atomic functions to work without cuda device compiler
If the Kokkos device is enabled, we use the Kokkos atomic functions for
implementation since Kokkos has already ported all of these to each
device.

If Kokkos is compiled with CUDA, then the functions are marked with
`__device__` and `__host__`. Makes sense right?

Unless we are trying to use the atomic functions on host code compiled
only for the host. In that case, modifiers like `__device__` will cause
compiler errors.

So we want to disable Kokkos from using `__device__`, but only if CUDA
is enabled and we are not using the CUDA compiler. Had to hack things up
to get that to work.
2020-08-20 13:40:44 -06:00
Kenneth Moreland
d3503bfaba Implement AtomicInterfaceControl/Execution with free functions
Now that we have atomic free functions (e.g. `vtkm::AtomicAdd()`), we no
longer need special implementations for control and each execution
device. (Well, technically we do have special implementations for each,
but they are handled with compiler directives in the free functions.)

Convert the old atomic interface classes (`AtomicInterfaceControl` and
`AtomicInterfaceExecution`) to use the new atomic free functions. This
will allow us to test the new atomic functions everywhere that atomics
are used in VTK-m.

Once verified, we can deprecate the old atomic interface classes.
2020-08-20 13:40:44 -06:00
Kenneth Moreland
ebbebd7369 Add atomic free functions
Previously, all atomic functions were stored in classes named
`AtomicInterfaceControl` and `AtomicInterfaceExecution`, which required
you to know at compile time which device was using the methods. That in
turn means that anything using an atomic needed to be templated on the
device it is running on.

That can be a big hassle (and is problematic for some code structure).
Instead, these methods are moved to free functions in the `vtkm`
namespace. These functions operate like those in `Math.h`. Using
compiler directives, an appropriate version of the function is compiled
for the current device the compiler is using.
2020-08-20 13:40:43 -06:00
Li-Ta Lo
83b90f9fce time to test on GPU 2020-08-20 10:49:00 -06:00
Vicente Adolfo Bolea Sanchez
afd394377e cmake: split vtkm_filter into common|extra|contour|gradient
There is a limitation in Windows builds using VS2019 where libraries cannot be
bigger than 4GiB. This is normally not an issue but in `VTKm` due to its strong
template usage libraries can reach that size.

The `VTKm` filter library is can easily reach that size and it will halt the
build

This MR tries to avoid reaching those sizes for now by splitting the filter
library into four smaller libraries.

The proposal scheme is:

It splits vtkm-filter into:

  - vtkm-common, Classes that are dependencies of other filter libs.
  - vtkm-contour, Contour class and its instantiations.
  - vtkm-contour, Gradient class and its instantiations.
  - vtkm-extra, Classes other than Contour or Gradient that are
    not dependencies.

Signed-off-by: Vicente Adolfo Bolea Sanchez <vicente.bolea@kitware.com>
2020-08-19 19:20:43 -04:00
Kenneth Moreland
a709f63e72 Merge topic 'base-device-tests'
ed41874cc Consolidate tests for base vtkm code that is device-specific

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: Robert Maynard <robert.maynard@kitware.com>
Merge-request: !2219
2020-08-18 18:53:04 -04:00
Kenneth Moreland
ed41874cc8 Consolidate tests for base vtkm code that is device-specific
Some of the code in the base `vtkm` namespace is device specific. For
example, the functions in `Math.h` are customized for specific devices.
Thus, we want this code to be specially compiled and run on these
devices.

Previously, we made a header file and then added separate tests to each
device package. That was created before we had ways of running on any
device. Now, it is much easier to compile the test a single time for all
devices and use the `ALL_BACKENDS` feature of `vtkm_unit_tests` CMake
function to automatically create the test for all devices.
2020-08-18 14:30:25 -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 Thompson
88a0cff7cb Merge topic 'refactor_integrators'
8124fe81f Add missing #include.
6ea07cc1e Missing #include.
024ab1cff Put each ODE integrator in it's own file.

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: Dave Pugmire <dpugmire@gmail.com>
Acked-by: Kenneth Moreland <kmorel@sandia.gov>
Merge-request: !2213
2020-08-18 15:36:54 -04:00
Nick
8124fe81fd Add missing #include. 2020-08-18 15:32:39 -04:00
NAThompson
6ea07cc1e8 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
6bfb91aac5 try to fix/debug the windows builds. 2020-08-18 09:38:32 -04:00
dpugmire
8b1520fdb7 address link errors in windows and gcc4.8 dashboard compile errors 2020-08-18 08:55:49 -04:00
dpugmire
5fa93a64ff fix build errors 2020-08-17 22:32:56 -04:00
dpugmire
ec796445cc Remove some print statements. 2020-08-17 16:57:09 -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
4722dc67b7 Code review cleanup. 2020-08-17 16:32:27 -04:00
dpugmire
240483ce96 make namespaces consistent. 2020-08-17 16:21:59 -04:00
dpugmire
58d8119f2a Addressing code review comments. 2020-08-17 15:33:29 -04:00
Kenneth Moreland
38a6fe22f8 Merge topic 'arraycopy-with-buffer'
8983154e9 Add DeepCopy to ArrayHandle
694ba7e92 Change ArrayCopy to deep copy Buffer objects where possible

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !2212
2020-08-14 15:48:51 -04:00
Sujin Philip
0beb0f650b Merge topic 'add-kokkos-backend'
2d1b609b3 Use Ubuntu instead of rhel8 for cuda+kokkos
769248583 Make sure we use c++14 when using CUDA 11+
64efa6401 Kokkos: make sure we don't pass multiple rdc flags
b2f4c8e5e Switch -O3 to -O2 on Linux with Cuda 10
db57ed26a Fix warnings
452f61e29 Add Kokkos backend

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !2164
2020-08-14 09:35:46 -04:00
Kenneth Moreland
8983154e9e Add DeepCopy to ArrayHandle
`ArrayHandle::DeepCopy` creates a new `ArrayHandle` of the same type and
deep copies the data into it.

This functionality is similar to `ArrayCopy`. However, it can be used
without having to compile for the device on which the copy happens.
2020-08-13 16:56:06 -06:00
Kenneth Moreland
694ba7e92c Change ArrayCopy to deep copy Buffer objects where possible
Now that the data in an `ArrayHandle` is stored in `Buffer` objects, we
now have a more efficient way of doing deep copies of memory. Rather
than call `Algorithm::Copy`, which iterates over the array and copies
each item, `ArrayCopy` now uses the `Buffer` interface to do direct
device-to-device (or host-to-host) mem copies. This should be more
efficent and take less time to compile.

Note that this direct `Buffer` copy only works if the two `ArrayHandle`s
are of the same type. If they are different, `ArrayCopy` still has to
fall back to using `Algorithm::Copy`.

Also note that not all `ArrayHandle`s are using the new `ArrayHandle`
interface (and therefore not using `Buffer` objects). Thus, a fallback
is still available for old `ArrayHandle` types.
2020-08-13 16:56:06 -06:00
dpugmire
68020589c3 Code cleanup for merge. 2020-08-13 17:05:22 -04:00
dpugmire
8d565bbda6 Forgot to include the CMake file from the other branch. 2020-08-13 10:27:04 -04:00
dpugmire
9d31d587b3 Add streamline/particle advection filters. 2020-08-13 10:01:52 -04:00
dpugmire
c806403e2a distributed memory support for streamline and particleadvect filters. 2020-08-13 09:53:57 -04:00
Kenneth Moreland
6dbf304000 Merge topic 'num-buffers-runtime-selectable'
72475177d Make number of buffers in an ArrayHandle runtime selectable

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !2206
2020-08-12 18:23:59 -04:00
Sujin Philip
db57ed26a2 Fix warnings 2020-08-12 13:55:24 -04:00
Sujin Philip
452f61e290 Add Kokkos backend 2020-08-12 13:55:24 -04:00
Robert Maynard
477d225415 Always have VTK-m tests enable vtkmdiy mpi environment 2020-08-11 17:02:19 -04:00
Kenneth Moreland
72475177d8 Make number of buffers in an ArrayHandle runtime selectable
This has no real change in the operation, but it will simplify code as
we convert `ArrayHandle`s to the new type. We will be able to write
simple runtime code rather than complex metaprogramming to determine the
number of buffers to use.
2020-08-11 13:25:06 -06:00
Kenneth Moreland
d3a6def082 Update filters that use FieldCell to use FieldFilter instead
We no longer need to use this deprecated name for a filter class.
2020-08-10 17:25:55 -06:00
Kenneth Moreland
9d91e006a9 Deprecate FilterCell
This class no longer serves any purpose (and in fact is now only a
trivial alias for FilterField). Subclasses should just use FilterField
instead.
2020-08-10 17:19:06 -06:00
Petar Hristov
7a179e6a07 Merge branch 'master' into working-branch 2020-08-07 17:28:26 +01:00
Petar Hristov
c40b98e990 Fix to read the scan inclusive output value directly. 2020-08-06 16:55:04 +01:00
Robert Maynard
f22dd9f571 Allow VTK-m Buffer to have ownership transferred 2020-08-06 10:31:57 -04:00
Petar Hristov
ce30e7c62f Refatored writePortal antipattern. 2020-08-05 19:20:24 +01:00
Robert Maynard
47843ea2e3 Update vtkm/interop to use non-deprecated make_ArrayHandle API 2020-08-03 12:15:16 -04:00
Vicente Bolea
922a570703 Merge topic 'fix-515-vtkdatasetwriter-remove-justpoints'
ab0fecda7 VTKDataSetWriter: remove just_points argument

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: Robert Maynard <robert.maynard@kitware.com>
Merge-request: !2185
2020-07-28 20:26:37 -04: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
Vicente Adolfo Bolea Sanchez
ab0fecda7f VTKDataSetWriter: remove just_points argument
Signed-off-by: Vicente Adolfo Bolea Sanchez <vicente.bolea@kitware.com>
2020-07-24 15:54:13 -04: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
5f541d2515 Drop log message when ignoring copy in move
For `make_ArrayHandle` and `make_Field` when it is determined that the
data can be safely moved, just silently move instead of copy instead of
printing a log message saying the copy flag will be ignored.

Also fix an issue with `make_ArrayHandle` when the data was not moved
when it could have been.
2020-07-23 17:59:50 -06:00
Kenneth Moreland
4c56797c5d Remove ArrayHandleSOA constructors with ambiguous move semantics
Also correct some constructors/functions that should be
deprecated.
2020-07-23 17:54:42 -06:00
Kenneth Moreland
0d484505e7 Fix bad gcc compiler warning about static definition (again) 2020-07-23 17:53:15 -06:00
Kenneth Moreland
2163077441 Fix errors with memory access 2020-07-23 11:02:40 -06:00
Kenneth Moreland
e23989bde1 Use data method to get pointer from std::vector
Do not use `&v.front()` to get the pointer from an `std::vector`. That
behavior is undefined when the vector is empty. Instead, use `v.data()`.
2020-07-23 11:02:40 -06:00
Kenneth Moreland
2e243cbbac Fix issue with using std::string in ArrayHandle
The recent version of ArrayHandleBasic allocates typeless arrays without
any initialization. This can cause issues with types that require a
constructor. The UnitTestVariantArrayHandle was trying to create an
ArrayHandle with an std::string, and the uninitialized strings were
causing crashes on some platforms.
2020-07-23 11:02:38 -06:00
Kenneth Moreland
46f253b927 Fix compiler issue with MSVC 2020-07-23 10:53:42 -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
Kenneth Moreland
744edbf428 Merge topic 'gcc-static-function-warning'
b1f648bfd Remove gcc warning about static declared function

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !2193
2020-07-22 15:20:45 -04: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
Kenneth Moreland
b1f648bfdf Remove gcc warning about static declared function
While compiling UnitTestVariantArrayHandle, some versions of gcc
(between 6 and 8, I think) gave a warning like the following:

```
../vtkm/cont/StorageVirtual.h:227:12: warning: 'vtkm::Id vtkm::cont::internal::detail::StorageVirtualImpl<T, S>::GetNumberOfValues() const [with T = std::__cxx11::basic_string<char>; S = vtkm::cont::StorageTagImplicit<{anonymous}::UnusualPortal<std::__cxx11::basic_string<char> > >]' declared 'static' but never defined [-Wunused-function]
```

This warning makes no sense because it is refering to a method that is
not declared static. (In fact, it overrides a virtual method.)

I believe this is an obscure bug in these versions of gcc. I found a
[stackoverflow post] that seems to have the same problem, but no
workaround was found.

The warning originated from code that had little effect. It was part of
a test with a custom ArrayHandle storage type that was already disabled
for other reasons. Just removed the code.

[stackoverflow post]: https://stackoverflow.com/questions/56615695/how-to-fix-declared-static-but-never-defined-on-member-function
2020-07-22 08:28:28 -06: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
2489da1259 restore comment, add needed #include 2020-07-21 18:21:44 -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
Kenneth Moreland
502c310cf8 Merge topic 'deprecate-arrayhandlevirtualcoordinates'
c689a68c5 Suppress bad deprecation warnings in MSVC
a3f23a03b Do not cast to ArrayHandleVirtual in VariantArrayHandle::CastAndCall
f6b13df51 Support coordinates of both float32 and float64
453e31404 Deprecate ArrayHandleVirtualCoordinates
be7f06bbe CoordinateSystem data is VariantArrayHandle

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !2177
2020-07-16 17:25:43 -04:00
Li-Ta Lo
760c51ed62 install ThreadIndicesNeighborhood.h 2020-07-16 08:06:17 -06:00
Li-Ta Lo
e52b8fa88a Add CellNeighborhood 2020-07-15 14:41:32 -06:00
Sujin Philip
c35323ae42 Merge branch 'upstream-diy' into update-to-latest-diy
* upstream-diy:
  diy 2020-07-15 (4ea1241e)
2020-07-15 15:36:03 -05:00
Sujin Philip
78221a09ed Update diy tag name 2020-07-15 15:35:48 -05:00
Kenneth Moreland
c689a68c5c Suppress bad deprecation warnings in MSVC
The Microsoft compiler has this annoying and stupid behavior where if
you have a generic templated method/function and that method is
instantiated with a deprecated class, then the compiler will issue a
C4996 warning even if the calling code is suppressing that warning
(because, for example, you are implementing other deprecated code and
the use is correct). There is no way around this other than suppressing
the warnings for all uses of the templated method.
2020-07-14 16:25:04 -06:00
Kenneth Moreland
ea340ed9cb Fix UnitTestArrayPortalValueReference
A recent change to the continuous integration setup has caused
`UnitTestArrayPortalValueReference` to fail on one platform.

The problem was that the test was doing two unsafe things with the
right-shift assignment operator. The first unsafe thing was using itself
as the operand.

```cpp
  ref >>= ref;
```

This causes clang to give a "self assign overload" warning. Using a
variable as its own operand for a compute assign operation isn't great
style, but for some operations it can cause weird errors. The reason for
the warning is that for a true integer shift operation, the compiler
will recognize that the result should be 0. So, when using this on base
integer types, you will get 0. But overloads can give you something
different, so that might lead to unexpected results. Because we _are_
using an overload (for the `ArrayPortalValueReference` class), the
compiler tells us we can get potentially unexpected results.

OK. That seems like something we can safely ignore (and were ignoring
for some time). After all, the whole point of the
`ArrayPortalValueReference` operators is to behave exactly the same as
the values they wrap. That brings us to the second unsafe thing the test
was doing: using an invalid value as the right hand operation. And this
is where things get weird.

The test was specifically failing when being run on `Int32`. It was
setting the underlying value for `ref` to be `1000` to start with. So
the expression `ref >>= ref` was trying to right shift `ref` by 1000
bits. Logically, this should of course give you 0. However, shifting a
number by more bits than exist causes undefined behavior (c.f.
https://wiki.sei.cmu.edu/confluence/display/c/INT34-C.+Do+not+shift+an+expression+by+a+negative+number+of+bits+or+by+greater+than+or+equal+to+the+number+of+bits+that+exist+in+the+operand).
You might not get back the expected value, and this is exactly what was
happening.

What I think happened was that the compiler determined that any valid
shift would be contained in 5 bits, so it truncated the value (1000) to
the least signifcant 5 bits (which happens to be 8). It then shifted
1000 by 8 and got the value 3 instead of 0.

The fix picks an operand number that is sure to be valid.
2020-07-14 16:13:12 -06:00
Kenneth Moreland
a3f23a03b6 Do not cast to ArrayHandleVirtual in VariantArrayHandle::CastAndCall
We are moving to deprecate `ArrayHandleVirtual`, so we are removing the
feature where `VariantArrayHandle::CastAndCall` automatically casts to
an `ArrayHandleVirtual` if possible.

The big reason to make this change now (as opposed to later when
`ArrayHandleVirtual` is deprecated) is to improve compile times.
This prevents us from having to compile an extra code path using
`ArrayHandleVirtual`.
2020-07-14 08:53:03 -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
453e314044 Deprecate ArrayHandleVirtualCoordinates
We are in the process of deprecating virtual classes in VTK-m
(that run in the execution environment).
2020-07-14 08:51:47 -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
Dave Pugmire
e66986dabe Merge topic 'worldAnnotationsOptional'
cabaf3e26 Add option to enable/disable world annotations.

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: Matt Larsen <larsen30@llnl.gov>
Merge-request: !2175
2020-07-14 10:19:48 -04:00
Petar Hristov
15cbf41dfb Merge branch 'master' into working-branch 2020-07-14 15:09:26 +01:00
Petar Hristov
97b6e727f3 Fixing osx build warnings. 2020-07-14 14:00:02 +01:00
Robert Maynard
29bac212c7 Merge topic 'extrude-fix'
a428d75e0 adding CellSetExtrude to DefaultTypesVTK
235d9ce14 add GetThreadIndex to ThreadIndicesExtrude classes

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !2172
2020-07-13 14:24:58 -04:00
dpugmire
cabaf3e269 Add option to enable/disable world annotations. 2020-07-09 14:38:39 -04:00
Sujin Philip
b32cc894b6 Merge topic 'fix-gitlab-ci'
2f7ae83c9 Fix warnings
e67fc619c Fix setting build type in gitlab ci

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: Robert Maynard <robert.maynard@kitware.com>
Merge-request: !2171
2020-07-09 14:38:32 -04:00
Kenneth Moreland
e2027da0c3 Merge topic 'write-uniform-rectilinear'
058927c82 Write uniform and rectilinear grids to legacy VTK files

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: Sujin Philip <sujin.philip@kitware.com>
Merge-request: !2173
2020-07-09 10:53:20 -04:00
Sujin Philip
2f7ae83c9f Fix warnings 2020-07-09 08:10:54 -05:00
Kenneth Moreland
85bdc030ba Merge topic 'fix-multiplexer-cuda'
18b5be92d Fix issue with CUDA and ArrayHandleMultiplexer

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: Robert Maynard <robert.maynard@kitware.com>
Merge-request: !2168
2020-07-09 08:25:55 -04: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
Kenneth Moreland
058927c82f Write uniform and rectilinear grids to legacy VTK files
As a programming convenience, all `vtkm::cont::DataSet` written by
`vtkm::io::VTKDataSetWriter` were written as a structured grid. Although
technically correct, it changed the structure of the data. This meant that
if you wanted to capture data to run elsewhere, it would run as a different
data type. This was particularly frustrating if the data of that structure
was causing problems and you wanted to debug it.

Now, `VTKDataSetWriter` checks the type of the `CoordinateSystem` to
determine whether the data should be written out as `STRUCTURED_POINTS`
(i.e. a uniform grid), `RECTILINEAR_GRID`, or `STRUCTURED_GRID`
(curvilinear).
2020-07-08 19:12:14 -06:00
Caitlin Ross
a428d75e02 adding CellSetExtrude to DefaultTypesVTK 2020-07-08 14:51:41 -04:00
Caitlin Ross
235d9ce14b add GetThreadIndex to ThreadIndicesExtrude classes 2020-07-08 14:51:41 -04:00
Kenneth Moreland
d5fd24fe13 Merge topic 'fix-allocate-token-deadlock'
cbf986891 Fix potential deadlock in ArrayHandle::PrepareForOutput

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: Robert Maynard <robert.maynard@kitware.com>
Merge-request: !2170
2020-07-08 13:47:04 -04:00
Petar Hritov
c20608288c Removed unused worklet. 2020-07-08 14:26:25 +01:00
Kenneth Moreland
cbf9868915 Fix potential deadlock in ArrayHandle::PrepareForOutput
`ArrayHandle::PrepareForOutput` often has to reallocate the array to the
specified size. Previously, this allocation was not happening with the
`Token` that is passed to `PrepareForOutput`. If the `ArrayHandle` is
already attached or enqueued for that `Token`, then the allocation would
deadlock.

You can now pass a `Token` object to `Allocate`, which is what
`PrepareForOutput` does.
2020-07-07 18:30:38 -06:00
Kenneth Moreland
18b5be92d6 Fix issue with CUDA and ArrayHandleMultiplexer
When you try to call the `Reduce` operation in the CUDA device adapter
with a sufficently complex interator type, you get a compile error
that says `error: cannot pass an argument with a user-provided
copy-constructor to a device-side kernel launch`.

This appears to be a bug in either nvcc or Thrust. I believe it is
related to the following reported issues:

* https://github.com/thrust/thrust/issues/928
* https://github.com/thrust/thrust/issues/1044

Work around this problem by making a special condition for calling
`Reduce` with an `ArrayHandleMultiplexer` that calls the generic
algorithm in `DeviceAdapterAlgorithmGeneral` instead of the algorithm in
Thrust.
2020-07-06 13:51:36 -06:00
Sujin Philip
8c3c138bb9 Enable the Game of Life example back
It was commented out by accident in a previous commit.
2020-07-06 12:25:42 -05: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
Robert Maynard
749a110cd0 Merge branch 'upstream-diy' into update_diy_to_always_build_with_pic
* upstream-diy:
  diy 2020-07-01 (b0623438)
2020-07-01 10:48:43 -04:00
Robert Maynard
5a2a26d3fc Update DIY to make sure we always build diy libs with pic enabled 2020-07-01 10:48:18 -04:00
Robert Maynard
a1680ef8bf Merge branch 'upstream-diy' into update_diy_to_namespace_DEBUG_define
* upstream-diy:
  diy 2020-06-24 (ab765e66)
2020-07-01 08:28:17 -04:00
Robert Maynard
f7b3d1bca7 Update DIY to not leak the DEBUG define
Fixes #539
2020-07-01 08:28:10 -04:00
Kenneth Moreland
42219f8d61 Fix buffer leak in BufferInfo 2020-06-29 16:36:21 -06:00
Kenneth Moreland
8e1c87b5c2 Work around known bug in LagrangianFilter
The implementation of LagrangianFilter uses some `ArrayHandle`s
declared as `static` in the .hxx header file. One of the bad
consequences of this is that there is no control over when the
arrays are freed. We have seen where these arrays get freed
after the CUDA system is closed, which causes nasty things to
happen as the program closes.

This works around the problem until a fix is implemnted.
2020-06-25 14:02:46 -06:00
Kenneth Moreland
a47fd42bc1 Pin user provided memory in ArrayHandle
Often when a user gives memory to an `ArrayHandle`, she wants data to be
written into the memory given to be used elsewhere. Previously, the
`Buffer` objects would delete the given buffer as soon as a write buffer
was created elsewhere. That was a problem if a user wants VTK-m to write
results right into a given buffer.

Instead, when a user provides memory, "pin" that memory so that the
`ArrayHandle` never deletes it.
2020-06-25 14:02:46 -06: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
8f7b0d18be Add Buffer class
The buffer class encapsulates the movement of raw C arrays between
host and devices.

The `Buffer` class itself is not associated with any device. Instead,
`Buffer` is used in conjunction with a new templated class named
`DeviceAdapterMemoryManager` that can allocate data on a given
device and transfer data as necessary. `DeviceAdapterMemoryManager`
will eventually replace the more complicated device adapter classes
that manage data on a device.

The code in `DeviceAdapterMemoryManager` is actually enclosed in
virtual methods. This allows us to limit the number of classes that
need to be compiled for a device. Rather, the implementation of
`DeviceAdapterMemoryManager` is compiled once with whatever compiler
is necessary, and then the `RuntimeDeviceInformation` is used to
get the correct object instance.
2020-06-25 14:01:39 -06:00
Li-Ta Lo
365b1bb25c use make_ArrayHandleZip 2020-06-25 09:51:06 -06:00
Li-Ta Lo
980c4864ac Merge branch 'master' into standard_normal 2020-06-24 14:38:50 -06:00
Li-Ta Lo
beba90b6f7 Merge topic 'uniform_real'
143e3d39a remove unused type alias
01a448663 Merge branch 'master' into uniform_real
c67e5bb12 fixe warnings about implicit type conversion
1e4294392 Add deterministic seed to avoid potential spurious failure
5b0e309b9 the random source is still 64 bits
cc3061bab Avoid calling ReadPortal() all the time
9bf6dea22 remove inline initialization of seed
e69308047 Add statistics base testing, add Flot32 RNG

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: Robert Maynard <robert.maynard@kitware.com>
Merge-request: !2148
2020-06-24 16:36:36 -04:00
Nick
470058c328 Unfoobar the float_distance MR. 2020-06-24 10:52:59 -04:00
Kenneth Moreland
f6a8993469 Make tests that throw an STL exception fail
If a test throws any unexpected exception, the test is supposed to
detect that and fail. For the STL exceptions, the test failed to return
an error code. Fix that.
2020-06-23 16:25:09 -06:00
Kenneth Moreland
7f60b0025d Merge topic 'cuda-no-assert'
c84588caf Re-add assert to fix deadlock
270ba214d Disable asserts for CUDA architecture builds

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !2157
2020-06-22 21:18:17 -04: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
270ba214d5 Disable asserts for CUDA architecture builds
`assert` is supported on recent CUDA cards, but compiling it appears to be
very slow. By default, the `VTKM_ASSERT` macro has been disabled whenever
compiling for a CUDA device (i.e. when `__CUDA_ARCH__` is defined).

Asserts for CUDA devices can be turned back on by turning the
`VTKm_NO_ASSERT_CUDA` CMake variable off. Turning this CMake variable off
will enable assertions in CUDA kernels unless there is another reason
turning off all asserts (such as a release build).
2020-06-22 13:54:22 -06:00
Matt Larsen
280d3e6909 Merge topic 'fix/rendering_export'
1c63c7032 export symbols need by vtkh

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !2154
2020-06-22 15:35:42 -04:00
Robert Maynard
3029994a97 Remove some unneeded include statements from vtkm/exec 2020-06-22 09:28:51 -04:00
dpugmire
0654d1853d fix cuda compile, export function. 2020-06-19 10:57:30 -04:00
Matt Larsen
1c63c7032a export symbols need by vtkh 2020-06-19 07:41:54 -07:00
dpugmire
00b1f85ebd link error 2020-06-18 21:42:51 -04:00
dpugmire
6d1930bc20 forgot the storage tags 2020-06-18 19:41:37 -04:00
dpugmire
03e3198977 move funcs to cxx, remove storage template 2020-06-18 19:37:09 -04:00
dpugmire
bac9664104 Move array copy to cxx 2020-06-18 17:53:19 -04:00
dpugmire
35ed68911e fix compile error. 2020-06-18 15:59:09 -04:00
dpugmire
1a7823c604 code cleanup. 2020-06-18 15:50:25 -04:00
dpugmire
02d8c3782d Add unittest for particlearraycopy 2020-06-18 15:45:36 -04:00
Li-Ta Lo
143e3d39a6 remove unused type alias 2020-06-18 13:33:20 -06:00
dpugmire
24451a3de2 Create a function for copying fields from particle arrays. 2020-06-18 14:54:18 -04:00
Li-Ta Lo
01a4486638 Merge branch 'master' into uniform_real 2020-06-18 11:46:18 -06:00
Li-Ta Lo
c67e5bb121 fixe warnings about implicit type conversion 2020-06-18 11:35:33 -06:00
dpugmire
1ef1180692 Add hxx into cmake file. 2020-06-18 11:59:10 -04:00
dpugmire
4952a628ff Add particle advection filter. 2020-06-18 11:52:16 -04:00
Kenneth Moreland
45c29a0c62 Merge topic 'override-deprecated-warnings'
3d991d1d8 Fix warnings about overriding deprecated methods

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !2151
2020-06-18 08:26:05 -04:00
Kenneth Moreland
3d991d1d84 Fix warnings about overriding deprecated methods
The VS compiler gives a warning when you override a deprecated method.
Changed the StartScene and EndScene methods in Mapper to be non-virtual
with empty implementations. Deleted the corresponding methods from all
subclasses.
2020-06-17 17:58:07 -06:00
Li-Ta Lo
2aea7534bd Add ArrayHandleRandomStandardNormal 2020-06-17 15:48:09 -06:00
Kenneth Moreland
8a1df977a7 Add common superclass to VariantArrayHandleBase
Many of the operations of `VariantArrayHandleBase` are not dependent on
the TypeList parameter of the class. Still others can operate just as
well by providing a type list to a method. Thus, it is convenient to
create a superclass that is not templated. That allows us to pass around
a `VariantArrayHandle` when the type list does not matter.

This superclass is called `VariantArrayHandleCommon` because "base" was
already taken.
2020-06-17 15:38:20 -06:00
Kenneth Moreland
c35abc732f Rename IsInValidArrayHandle to IsInvalidArrayHandle
This makes it clear that it returns true for an invalid array handle.
The previous name implied that it was looking for an ArrayHandle in some
"valid" set, which is the opposite.
2020-06-17 15:38:19 -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
Li-Ta Lo
1e42943928 Add deterministic seed to avoid potential spurious failure 2020-06-17 13:36:15 -06:00
Li-Ta Lo
5b0e309b95 the random source is still 64 bits 2020-06-17 12:58:03 -06:00
Li-Ta Lo
cc3061bab1 Avoid calling ReadPortal() all the time 2020-06-17 12:53:11 -06:00
Li-Ta Lo
9bf6dea226 remove inline initialization of seed 2020-06-17 12:47:54 -06:00
Li-Ta Lo
e69308047b Add statistics base testing, add Flot32 RNG 2020-06-17 12:01:10 -06:00
Kenneth Moreland
dd4d88cd5e Fix warnings about comparing floating point values 2020-06-17 11:58:45 -06:00
Dave Pugmire
d30293ee2f Merge topic 'betterParticleAdvectionDiffs2'
474473063 Merge branch 'master' of https://gitlab.kitware.com/vtk/vtk-m into betterParticleAdvectionDiffs2
447e8aff0 Merge branch 'master' of https://gitlab.kitware.com/vtk/vtk-m into betterParticleAdvectionDiffs2
27c39217d remove debug statements
1a2910165 debug for dashboard.
cff830fb4 Remove some debugging code.
b5270f5fa change float/double to vtkm typedefs.
ee4146667 Accidently added some garbage numbers to line 35. Removed it.
bece39ec4 Fix compiler warnings.
...

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !2138
2020-06-17 13:30:41 -04:00
Nick Thompson
83cf25f1f3 Merge topic 'deprecate_startscene'
8065e76e7 Deprecate StartScene() and EndScene()

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !2140
2020-06-17 12:48:40 -04: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
Nick Thompson
b8f5e9f080 Merge topic 'deprecate_donothing'
0f0c465c1 Deprecate Camera::Activate() and Camera::Finish()

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: Kenneth Moreland <kmorel@sandia.gov>
Merge-request: !2139
2020-06-16 16:38:51 -04:00
Li-Ta Lo
5a47c39ac1 Merge branch 'master' into particle_density 2020-06-16 14:17:12 -06: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
dpugmire
447e8aff04 Merge branch 'master' of https://gitlab.kitware.com/vtk/vtk-m into betterParticleAdvectionDiffs2 2020-06-16 11:49:21 -04:00
dpugmire
27c39217d4 remove debug statements 2020-06-16 11:43:20 -04:00
dpugmire
1a2910165c debug for dashboard. 2020-06-16 08:43:29 -04:00
Kenneth Moreland
f8a09d6de5 Handle read-only portals in ArrayHandleMultiplexer
The ArrayPortalMultiplexer always called Set on the delegate portals.
However, sometimes the portals were not supported. Instead, only call
when the delegate is supported.

Probably the "right" thing to do would be to check all posible portals
for support, but that sounds like it would slow down the compile.
2020-06-16 00:15:11 -06:00
Kenneth Moreland
ed2f4aabf7 Detect when VariantArrayHandle::AsMultiplexer fails
Previously, the VariantArrayHandle::AsMultiplexer operation silently
failed and returned an invalid ArrayHandleMultiplexer. This is now
changed to throw an exception if the desired ArrayHandleMultiplexer
cannot hold the VariantArrayHandle's array.
2020-06-16 00:12:24 -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
b5270f5fae change float/double to vtkm typedefs. 2020-06-15 14:09:42 -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
Nick
8065e76e74 Deprecate StartScene() and EndScene() 2020-06-14 11:27:45 -04:00
NAThompson
0f0c465c1b Deprecate Camera::Activate() and Camera::Finish() 2020-06-14 11:04:06 -04:00
Nick Thompson
ca0cd5f380 Merge conflict resolution. 2020-06-13 14:21:25 -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
Nick Thompson
da57431d9c Merge topic 'demangle_in_print_summary'
b3cb8e834 Nuke the ostream overload.
b55ce7369 Demangle symbols in PrintSummary.

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: Robert Maynard <robert.maynard@kitware.com>
Merge-request: !2137
2020-06-12 20:07:10 -04:00
Nick Thompson
1015d33330 Merge topic 'silence_gcc10'
97a8c61b6 Don't silence the warning on clang.
bae0a3724 Code review suggestions.
dec4abf42 Silence spurious gcc-10 warning.

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: Kenneth Moreland <kmorel@sandia.gov>
Merge-request: !2135
2020-06-12 20:04:36 -04:00
NAThompson
97a8c61b6c Don't silence the warning on clang. 2020-06-12 16:29:55 -04:00
NAThompson
b3cb8e834c Nuke the ostream overload. 2020-06-12 16:07:16 -04:00
NAThompson
b55ce7369e Demangle symbols in PrintSummary. 2020-06-12 15:23:16 -04:00
NAThompson
bae0a3724a Code review suggestions. 2020-06-12 14:29:09 -04: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
NAThompson
dec4abf421 Silence spurious gcc-10 warning. 2020-06-12 13:28:25 -04: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
Kenneth Moreland
22f227a91e Merge topic 'ordered-async-access'
de3bda373 Use deque instead of list for ArrayHandle queue
498d44548 Pass Token::Reference by value
c32c9e8e8 Fix deadlock when changing device during read
99e14ab8a Add proper enqueuing of Tokens for ArrayHandle

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !2130
2020-06-11 21:55:27 -04:00
Kenneth Moreland
de3bda3738 Use deque instead of list for ArrayHandle queue 2020-06-11 15:47:41 -06:00
Kenneth Moreland
498d445483 Pass Token::Reference by value
There is no point in passing Token::Reference by reference since (being
just a simple reference itself) it is no larger than a pointer.
2020-06-11 11:51:42 -06:00
Matt Larsen
a3b8525ef9 Merge topic 'fix/multi_plots'
62ef51325 fix bug that zero'd color buffers

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: Sudhanshu Sane <ssane@cs.uoregon.edu>
Acked-by: James Kress <james@jameskress.com>
Merge-request: !2132
2020-06-11 09:51:44 -04:00
Robert Maynard
0fa2d5e9af Merge topic 'update_demo_code'
16e04db15 FlyingEdges: Handle when pass 1 generates no intersections
8ebea33c7 FlyingEdges: Handle when a dimensions size is <= 3
60eff58bd Correct warning in TransferToOpenGL found by the examples

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !2125
2020-06-11 09:40:03 -04:00
Li-Ta Lo
c04b8440eb Merge topic 'uniform_real'
c0dee7402 make it explicit that we are using 64-bit unsigned integer in bit op
34f350588 Added changelog
e9f584a91 ArrayHandleRandomUniformReal

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: Kenneth Moreland <kmorel@sandia.gov>
Merge-request: !2116
2020-06-11 08:41:38 -04: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
Matt Larsen
62ef513257 fix bug that zero'd color buffers 2020-06-10 16:02:21 -07: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
Robert Maynard
60eff58bdf Correct warning in TransferToOpenGL found by the examples 2020-06-09 13:34:33 -04:00
Petar Hritov
40090351a7 Checkpoint. 2020-06-09 14:11:12 +01:00
Sujin Philip
b7d0c94f1b Merge topic 'diy-mpi-nompi'
934f085e0 Build diy as a library
f0a37ac6a Merge branch 'upstream-diy' into diy-mpi-nompi
7687aabf8 diy 2020-06-05 (b62915aa)
6ca2b9f87 Point to new version of Diy

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: Robert Maynard <robert.maynard@kitware.com>
Merge-request: !2123
2020-06-08 21:25:54 -04:00
Kenneth Moreland
c32c9e8e8d Fix deadlock when changing device during read
Because ArrayHandle currently only supports one device at a time, it is
possible that a `PrepareForInput` might actually need to wait for write
access so that it could move the data between devices. However, we don't
want the `Token` to be attached for writing because that could block
other read operations.

To get around this, add a hack to WaitToWrite to allow it to attach for
reading instead of writing.
2020-06-08 18:15:13 -06:00
Kenneth Moreland
99e14ab8a6 Add proper enqueuing of Tokens for ArrayHandle
An issue that was identified for the thread safety of `ArrayHandle` is
that if several threads are waiting to use an `ArrayHandle`, there might
be an expectation of the order in which the operations happen. For
example, if one thread is modifying the contents of an `ArrayHandle` and
another is reading those results, we would need the first one to start
before the second one.

To solve this, a queue is added to `ArrayHandle` such that when waiting
to read or write an `ArrayHandle` the `Token` has to be at the top of
the queue in addition to other requirements being met.

Additionally, an `Enqueue` method is added to add a `Token` to the queue
without blocking. This allows a control thread to queue the access and
then spawn a thread where the actual work will be done. As long as
everything is enqueued on the main thread, the operations will happen in
the expected order.
2020-06-08 16:49:02 -06:00
Sujin Philip
934f085e09 Build diy as a library
Support both mpi and nompi versions simultaneously.
2020-06-08 15:57:51 -05:00
Sujin Philip
f0a37ac6aa Merge branch 'upstream-diy' into diy-mpi-nompi
* upstream-diy:
  diy 2020-06-05 (b62915aa)
2020-06-08 15:55:58 -05:00
Sujin Philip
6ca2b9f877 Point to new version of Diy 2020-06-08 15:55:38 -05:00
Matt Larsen
4cb94e7fc1 Merge topic 'respect_max_distance'
ce3a64b41 fix comparison
ab6bb14d3 Merge branch 'respect_max_distance' of gitlab.kitware.com:mclarsen/vtk-m into respect_max_distance
a6ed41027 use bounds based epsilon for tiny meshes
59775c4eb respect ray max distance

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: Sudhanshu Sane <ssane@cs.uoregon.edu>
Merge-request: !2129
2020-06-08 15:43:52 -04: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
Matt Larsen
ce3a64b412 fix comparison 2020-06-06 18:00:42 -07:00
Matt Larsen
a6ed41027e use bounds based epsilon for tiny meshes 2020-06-06 17:56:25 -07:00
Matt Larsen
59775c4eba respect ray max distance 2020-06-06 15:39:25 -07: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
NAThompson
0dccfb7d74 Rough semicolon. 2020-06-05 15:28:51 -04:00
NAThompson
db8f3c9fc9 Remove Initialize() boilerplate. 2020-06-05 13:38:18 -04: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
Li-Ta Lo
c0dee74028 make it explicit that we are using 64-bit unsigned integer in bit op 2020-06-03 11:43:14 -06:00