Commit Graph

2083 Commits

Author SHA1 Message Date
Sujin Philip
b391acf4c0 Remove SimplePolymorphicContainer
The last place remaining where it is being used is DynamicCellSet, which can
instead use `vtkm::cont::CellSet` as it itself is polymorphic.
2019-04-10 14:00:39 -04:00
Robert Maynard
ece078b82f Merge topic 'clang_warnings'
0130088b8 Suppress more self-assign-overloaded warnings found by clang
fa5455854 UnitTestArrayPortalValueReference doesn't warn when compiled with appleclang
5cc0d03f6 Merge branch 'upstream-diy' into clang_warnings
dbd3781d5 diy 2019-04-09 (f7a68da4)
5c2f2ebce suppress warnings found by Wself-assign-overloaded
77426f044 Correct casting long to long long warning from clang.

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !1635
2019-04-09 15:54:57 -04:00
Robert Maynard
77426f0447 Correct casting long to long long warning from clang. 2019-04-09 11:42:45 -04:00
Sujin Philip
e7b26f5c88 Merge topic 'bugfixes-ArrayHandleVirtual'
dae779b9f ArrayHandleVirtual bugfixes

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: Robert Maynard <robert.maynard@kitware.com>
Merge-request: !1632
2019-04-09 08:36:12 -04:00
Sujin Philip
2bbf501c53 Fix a bug in MakeTestDataset
In Make3DExplicitDataSetZoo, only 25 cells are added, but the variable `nCells`
is set to 27.
2019-04-08 16:41:56 -04:00
Sujin Philip
dae779b9f8 ArrayHandleVirtual bugfixes
After the change to `ArrayHandleVirtual` where it became a subclass of
`vtkm::cont::ArrayHandle`, a few extra changes are required.

1. Functions with `ArrayHandleVirtual` as parameters will not be callable
with the superclass `ArrayHandle`. This is fixed by changing the argument
types to the superclass.
2. Add Serialization classes specializations for the superclass, as "is-a"
relation is not considered for class template parameters.
2019-04-08 15:42:53 -04:00
Robert Maynard
107edaff75 Merge topic 'move_device_adapter_tag_to_vtkm_cont'
1d20ae4f7 Move DeviceAdapterTag to vtkm/cont

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !1624
2019-04-05 08:03:53 -04:00
Robert Maynard
30aedf287f Refactor the design of CellLocator::PrepareForExecution
The try execute functor now doesn't need to be a member of the
class. This helps with the separation of concerns.
2019-04-04 13:17:49 -04:00
Robert Maynard
1d20ae4f7b Move DeviceAdapterTag to vtkm/cont 2019-04-04 11:58:51 -04:00
Robert Maynard
6306ca66ce Merge topic 'refactor_cast_and_call_location'
72cb6343b Move vtkm::cont::CastAndCall into a header in vtkm/cont

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: Kenneth Moreland <kmorel@sandia.gov>
Merge-request: !1622
2019-04-04 10:05:22 -04:00
Robert Maynard
96cb87c50a Merge topic 'make_cellset_api_consistent'
18f3b0dcc Document all the free functions for VariantArrayHandle
5180d6a73 DynamicCellSet has the same free function support as VariantArrayHandle
8f545662d CellSet uses NewInstance to be consistent with the rest of VTK-m

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: Sujin Philip <sujin.philip@kitware.com>
Merge-request: !1620
2019-04-04 09:36:05 -04:00
Robert Maynard
7f612502ac Merge topic 'remove_unneeded_cont_exec_markup'
f1056affa Move select functions to host only to remove host/device suppressions
4f2156dfa Thrust detail::aligned_reinterpret_cast doesn't warn now
f4840618c Make sure ThrustPatches is included before thrust.
b2bbd66e6 Merge branch 'upstream-taotuple' into update_taoo
4ec6fc812 taotuple 2019-04-03 (8e70fa8a)

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: Allison Vacanti <allison.vacanti@kitware.com>
Merge-request: !1607
2019-04-04 09:32:04 -04:00
Robert Maynard
18f3b0dccc Document all the free functions for VariantArrayHandle 2019-04-03 18:10:31 -04:00
Robert Maynard
5180d6a733 DynamicCellSet has the same free function support as VariantArrayHandle 2019-04-03 18:10:31 -04:00
Robert Maynard
8f545662d7 CellSet uses NewInstance to be consistent with the rest of VTK-m 2019-04-03 18:10:31 -04:00
Robert Maynard
813484d9b1 Merge topic 'remove_arrayhandlevirtual_cast_and_call'
3dd4d292f Remove unneeded code from ArrayHandleVirtual

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: Kenneth Moreland <kmorel@sandia.gov>
Merge-request: !1623
2019-04-03 16:08:20 -04:00
Sujin Philip
e408537608 Merge topic 'update-CellLocatorTwoLevelUniformGrid'
566e220ea Suppress dashboard warnings
f20d7e788 Document the changes that are part of this MR.
f78e763be Add CellLocatorGeneral
c6bead838 Rename CellLocatorTwoLevelUniformGrid to CellLocatorUniformBins
ee838b829 Stylistic changes to CellLocators to match VTK-m

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: Robert Maynard <robert.maynard@kitware.com>
Merge-request: !1615
2019-04-03 15:56:27 -04:00
Robert Maynard
3dd4d292f5 Remove unneeded code from ArrayHandleVirtual
The CastAndCall for ArrayHandleVirtual was always a bad idea.
The ArrayHandleVirtual is not considered a dynamic type by the
dispatch engine so it would never have tried to use this specialization.
2019-04-03 14:50:04 -04:00
Robert Maynard
72cb6343b8 Move vtkm::cont::CastAndCall into a header in vtkm/cont
Since CastAndCall is meant to be a user callable function,
we should make sure it is part of the vtkm cont headers
2019-04-03 14:15:26 -04:00
Sujin Philip
f78e763be4 Add CellLocatorGeneral
A general purpose `CellLocator` that should work with any type of dataset.
Internally, it tries to chose one of the existing cell locators that would be
optimal for the input data.

Also removes `CellLocatorHelper`.
2019-04-03 10:22:05 -04:00
Sujin Philip
c6bead8388 Rename CellLocatorTwoLevelUniformGrid to CellLocatorUniformBins
Also make it a concrete sub-class of vtkm::cont::CellLocator
Fixes issue #251
2019-04-03 10:21:56 -04:00
Robert Maynard
f4840618cf Make sure ThrustPatches is included before thrust. 2019-04-03 08:51:05 -04:00
Robert Maynard
aef087fc00 Merge topic 'remove_runtime_device_tracker_from_try_execute'
2d477fd53 Remove ability to pass a runtime device tracker to TryExecute

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: Kenneth Moreland <kmorel@sandia.gov>
Merge-request: !1616
2019-04-02 14:43:16 -04:00
Kenneth Moreland
04254dbd25 Merge topic 'specialize-worklet-for-device'
4e34feecb Add ability to specialize worklet for device

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: Sujin Philip <sujin.philip@kitware.com>
Merge-request: !1608
2019-04-02 12:08:01 -04:00
Sujin Philip
ee838b8296 Stylistic changes to CellLocators to match VTK-m 2019-04-02 11:21:12 -04:00
Robert Maynard
2d477fd531 Remove ability to pass a runtime device tracker to TryExecute
Since runtime device trackers are single instance per thread
the ability to pass them around to other functions is unneeded.
2019-04-02 10:44:30 -04:00
Robert Maynard
f350517de2 Merge topic 'less_vtkm_cont_files_bring_in_cuda_device'
18ff6681f Less vtkm_cont cxx files bring in the cuda device

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: Kenneth Moreland <kmorel@sandia.gov>
Merge-request: !1612
2019-04-01 12:02:55 -04:00
Kenneth Moreland
4e34feecb4 Add ability to specialize worklet for device
This adds an ExecutionSignature tag named Device that passes the
DeviceAdapterTag as an argument to the worklet's operator(). This allows
worklets to specialize their code based on the device.
2019-04-01 10:01:54 -06:00
Robert Maynard
e787d52afc Merge branch 'optionparser-to-third-party' into 'master'
Wrap third party optionparser.h in vtkm/cont/internal/OptionParser.h

See merge request vtk/vtk-m!1593
2019-04-01 10:56:01 -04:00
Robert Maynard
18ff6681fb Less vtkm_cont cxx files bring in the cuda device
When you have CUDA enabled we need to make sure that all worklet
launches come from a cuda file otherwise we will generate ODR
violations.
2019-04-01 08:21:07 -04:00
Robert Maynard
b9e0e541b8 VTK-m once again uses consistent include style 2019-03-28 14:12:08 -04:00
Kenneth Moreland
7993c2b353 Merge topic 'parse-some-options-in-initialize'
31b30dbd9 Update arguments to benchmarks
b0303c96e Allow Initialize to parse only some arguments

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: Allison Vacanti <allison.vacanti@kitware.com>
Merge-request: !1603
2019-03-27 12:43:58 -04:00
Allison Vacanti
68abfccd7e Merge topic 'cuda10.1'
0581b368f Fix issues with importing installed vtkm::cuda after refactor.
ed4374b05 diy 2019-03-13 (e8e68c7c)
b85dcf229 Add more vtkm_cont compilation units to device_sources.
9014de0eb Suppress new host/device warnings for cuda 10.1.
04a464cc4 Update cuda detection to create vtkm::cuda as an interface library.

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: Robert Maynard <robert.maynard@kitware.com>
Merge-request: !1582
2019-03-27 12:12:02 -04:00
Sujin Philip
34a49234cb Merge topic 'fix-cellset-permutation'
048cbda5e Simplify CellSetPermutation PointToCell

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: Kenneth Moreland <kmorel@sandia.gov>
Merge-request: !1599
2019-03-27 08:28:48 -04:00
Kenneth Moreland
7237c46898 Wrap third party optionparser.h in vtkm/cont/internal/OptionParser.h
Previously we just took the optionparser.h file and stuck it right in
our source code. That was problematic for a variety of reasons.

1. It incorrectly assigned our license to external code.
2. It made lots of unnecessary changes to the original source (like
reformatting).
3. It made it near impossible to track patches we make and updates to
the original software.

Instead, use the third-party system to track changes to optionparser.h
in a different repository and then pull that into ours.
2019-03-26 15:47:17 -06:00
Allison Vacanti
b85dcf2294 Add more vtkm_cont compilation units to device_sources.
These depend on DeviceAdapterTagCuda::IsEnabled being correctly
set at compile time.
2019-03-26 14:53:42 -04:00
Kenneth Moreland
b0303c96ed Allow Initialize to parse only some arguments
When a library requires reading some command line arguments through a
function like Initialize, it is typical that it will parse through
arguments it supports and then remove those arguments from argc and argv
so that the remaining arguments can be parsed by the calling program.
VTK-m's initialize did not do that, so add that functionality.
2019-03-26 12:04:18 -06:00
Sujin Philip
048cbda5e1 Simplify CellSetPermutation PointToCell
These changes are required to enable 'CellSetPermutaion' of custom cell-set
types like 'vtkmCellSetExplicit' and 'vtkmCellSetSingleType' in VTK.
2019-03-26 13:07:11 -04:00
Robert Maynard
d1a957bf5c Merge topic 'refactor_runtime_device_tracker'
838cb4337 Redesign RuntimeDeviceTracker and RuntimeDeviceInformation

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: Kenneth Moreland <kmorel@sandia.gov>
Merge-request: !1600
2019-03-26 10:08:31 -04:00
Robert Maynard
838cb43375 Redesign RuntimeDeviceTracker and RuntimeDeviceInformation
The RuntimeDeviceTracker had grown organically to handle multiple
different roles inside VTK-m. Now that we have device tags
that can be passed around at runtime, large portions of
the RuntimeDeviceTracker API aren't needed.

Additionally the RuntimeDeviceTracker had a dependency on knowing
the names of each device, and this wasn't possible
as that information was part of its self. Now we have moved that
information into RuntimeDeviceInformation and have broken
the recursion.
2019-03-26 08:36:18 -04:00
Allison Vacanti
ad15ae1553 Merge topic 'Variant_As'
e1f5c4dd9 Modify VariantAH::AsVirtual to cast to new ValueType if needed.

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: Robert Maynard <robert.maynard@kitware.com>
Merge-request: !1585
2019-03-25 16:39:39 -04:00
Allison Vacanti
e1f5c4dd9b Modify VariantAH::AsVirtual to cast to new ValueType if needed.
E.g:

```
    ArrayHandle<Float64> doubleArray;
    VariantArrayHandle varHandle{doubleArray};
    ArrayHandleVirtual<Float32> = varHandle.AsVirtual<Float32>();
```

If there is a loss in range and/or precision, a warning is logged. If
the ValueTypes are Vecs with mismatched widths, an ErrorBadType is thrown.
Internally, an ArrayHandleCast is used between the VariantArrayHandle's
stored array and the ArrayHandleVirtual.
2019-03-25 11:39:45 -04:00
Robert Maynard
256e0c3c11 Merge topic 'rename_to_GetRuntimeDeviceTracker'
ae11e115a RuntimeDeviceTracker: Remove `Global` from names

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: Kenneth Moreland <kmorel@sandia.gov>
Merge-request: !1592
2019-03-24 08:17:02 -04:00
Sujin Philip
96f4a17e4f Merge topic 'improve-cellset-api'
a09bb9eca Add a new test for CellSet API
8868fb989 Improve CellSet API

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: Kenneth Moreland <kmorel@sandia.gov>
Merge-request: !1589
2019-03-22 12:52:31 -04:00
Robert Maynard
ae11e115a0 RuntimeDeviceTracker: Remove Global from names 2019-03-22 08:53:26 -07:00
Sujin Philip
a09bb9eca3 Add a new test for CellSet API 2019-03-22 09:35:57 -04:00
Kenneth Moreland
07fe1060a0 Merge topic 'bounding-interval-hierarchy-in-vtkm-cont'
5960b8abf Suppress nvlink warnings about virtual methods not used
0af017b03 Move virtual methods of other CellLocators to vtkm_cont
e87864b0e Put CellLocatorBoundingIntervalHierarchy in vtkm_cont library

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !1594
2019-03-21 13:41:06 -04:00
Kenneth Moreland
0af017b038 Move virtual methods of other CellLocators to vtkm_cont
These changes caused some warnings in clang to show up based on virtual
methods in other cell locators. Hence, the rest of the cell locators
have also had some of their code moved to vtkm_cont.
2019-03-20 17:38:50 -06:00
Kenneth Moreland
e87864b0e3 Put CellLocatorBoundingIntervalHierarchy in vtkm_cont library
All of the methods in CellLocatorBoundingIntervalHierarchy were listed in
header files. This is sometimes problematic with virtual methods. Since
everything implemented in it can just be embedded in a library, move the
code into the vtkm_cont library.
2019-03-20 17:33:08 -06:00
Robert Maynard
6cdf6cb672 Less aggressive defaults for VTK-m compared to summit.
Since we don't have per system checks currently built into
vtk-m we can't use the tuned values for Summit, as they
don't run on all our hardware.
2019-03-20 09:30:34 -07:00
Robert Maynard
3879479185 Improve VTK-m cuda scheduling based on Summit scaling study
When benchmarking the VTK-m algorithms on Summit I discovered
that our scheduling choices aren't optimal for the hardware.

This is a short term fix where we select good numbers for
Summit, and in the future make the defaults controllable
by the calling programming and/or environment variables.

Performance numbers can be found at:
  https://gitlab.kitware.com/snippets/755
2019-03-20 09:30:34 -07:00
Sujin Philip
8868fb989b Improve CellSet API
Add useful virtual functions to the vtkm::cont::CellSet base class.
2019-03-19 16:12:48 -04:00
Sujin Philip
b44d1b2d6b Merge topic 'fix-variant-warnings'
cb76f4c79 Fix VariantArrayHandle override warnings

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: Robert Maynard <robert.maynard@kitware.com>
Merge-request: !1588
2019-03-19 11:34:37 -04:00
Sujin Philip
40814576b6 Merge topic 'improve-point-locator'
178da6c0d Make PointLocatorUniformGrid default constructible

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: Robert Maynard <robert.maynard@kitware.com>
Merge-request: !1587
2019-03-19 10:43:13 -04:00
Sujin Philip
cb76f4c791 Fix VariantArrayHandle override warnings
Add override consistently to all overriden functions.
2019-03-19 08:28:08 -04:00
Sujin Philip
178da6c0dc Make PointLocatorUniformGrid default constructible
plus some style changes to match VTK-m style.
2019-03-18 16:34:49 -04:00
Sujin Philip
1d4c8f35b5 Merge topic 'fix-VariantArrayHandle'
546a1d14a VariantArrayHandle should report run time NumberOfComponents

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: Robert Maynard <robert.maynard@kitware.com>
Merge-request: !1586
2019-03-18 12:35:54 -04:00
Kenneth Moreland
163b694b9d Merge topic 'fix-timer-test'
92b4e054a Fix issues with timer test

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: Robert Maynard <robert.maynard@kitware.com>
Merge-request: !1584
2019-03-17 11:58:28 -04:00
Dave Pugmire
07273c88f2 Merge topic 'gridEval'
3868a5b30 Remove the commented out stack code.
e7066ad94 compiler errors.
de7d9cc27 fix compile errors, remove cudastack hacks.
9b9742f43 Merge branch 'no-recurse-bih' of https://gitlab.kitware.com/kmorel/vtk-m into gridEval
ab9d0fad2 Remove warning exceptions for BoundingIntervalHierarchy recursive calls
8127093a2 Add CellLocator to name of BoundingIntervalHierarchy
c008df90c Non-recursive method to find cells in BoundingIntervalHierarchyExec
c463bbec9 Add parent index to BIH tree
...

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: Kenneth Moreland <kmorel@sandia.gov>
Merge-request: !1536
2019-03-16 22:14:10 -04:00
Sujin Philip
ceca8ab105 Merge topic 'improve-field-api'
d4e1c1825 Update existing code to use the new functions
7b072b159 Add useful Get functions to Fields and Coordinates

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: Robert Maynard <robert.maynard@kitware.com>
Merge-request: !1578
2019-03-15 17:51:49 -04:00
Sujin Philip
546a1d14a2 VariantArrayHandle should report run time NumberOfComponents
Query and report number of components at runtime so that it can work with
arrays of types with runtime varying number of components
Eg. ArrayHandleGroupVecVariable.
2019-03-15 16:47:32 -04:00
Dave Pugmire
3868a5b304 Remove the commented out stack code. 2019-03-15 15:14:09 -04:00
Dave Pugmire
e7066ad94b compiler errors. 2019-03-15 14:46:25 -04:00
Kenneth Moreland
92b4e054af Fix issues with timer test
The timer test would blindly wait for an expected interval each time.
However, in a busy system that might wait more than expected, this extra
wait time can accumulate. Fix the issue by monitoring how much time has
actually elapsed and only wait to the next expected point. Also add a
check to make sure that we have not waited too long (and adjust the
error message to hopefully make it more clear that the system waited
more than expected).
2019-03-15 11:50:17 -06:00
Dave Pugmire
de7d9cc27b fix compile errors, remove cudastack hacks. 2019-03-15 13:40:48 -04:00
Sujin Philip
d4e1c18254 Update existing code to use the new functions 2019-03-15 13:28:55 -04:00
Sujin Philip
7b072b1593 Add useful Get functions to Fields and Coordinates
Avoid having to call 'GetData()' to query 'NumberOfValues'/'NumberOfPoints'.
2019-03-15 13:28:55 -04:00
Dave Pugmire
9b9742f436 Merge branch 'no-recurse-bih' of https://gitlab.kitware.com/kmorel/vtk-m into gridEval 2019-03-15 13:05:39 -04:00
Kenneth Moreland
8127093a2f Add CellLocator to name of BoundingIntervalHierarchy
This will help identify the nature of this object as well as find cell
locator implementations.
2019-03-14 16:13:59 -06:00
Kenneth Moreland
c463bbec93 Add parent index to BIH tree
This will help us traverse back up the tree without a call stack (which
is causing issues on CUDA).
2019-03-14 15:52:47 -06:00
Sujin Philip
24fc4ec944 Fix ArrayHandleGroupVecVariable
Take the const portal for the offsets array for all casses.
2019-03-14 13:54:25 -04:00
Dave Pugmire
6edda87c3a Merge branch 'master' of https://gitlab.kitware.com/vtk/vtk-m into gridEval 2019-03-14 13:40:33 -04:00
Dave Pugmire
533f2e5eb3 Cleanup. 2019-03-14 09:39:56 -04:00
Dave Pugmire
bc10b6dbf1 Add cuda stack code to uniform/rectilinear cellLocators. 2019-03-14 08:10:39 -04:00
Dave Pugmire
26b6021530 fix compile error. 2019-03-14 07:56:45 -04:00
Dave Pugmire
b2d5d66de5 fixes for cuda stack 2019-03-13 16:41:08 -04:00
Dave Pugmire
cfd36bcd5b wrap unit test with cuda stack change. 2019-03-13 11:29:49 -04:00
Dave Pugmire
722d4262e1 extend stacksize 2019-03-13 08:17:54 -04:00
Robert Maynard
40581993a5 Merge topic 'vtkm_cont_Initialize_use_emplace_back'
daee0f696 Initialize uses emplace_back when building unparsed args

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !1571
2019-03-08 15:40:46 -05:00
Robert Maynard
daee0f6967 Initialize uses emplace_back when building unparsed args 2019-03-08 13:48:48 -05:00
Kenneth Moreland
bfe06d6d18 Merge topic 'point-merge'
6aa99aec0 Add ability to remove degenerate cells in CleanGrid
5688375c9 Add point merge capabilities to CleanGrid filter

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: Abhishek Yenpure <abhishek@uoregon.edu>
Merge-request: !1558
2019-03-07 20:33:36 -05:00
Dave Pugmire
25fee68e43 Fix src in cmake file error, and explicit ds creator func. 2019-03-07 14:48:26 -05:00
Robert Maynard
a6258b63cf Revert BoundingIntervalHierarchy.hxx back into existence. 2019-03-06 14:08:35 -05:00
Robert Maynard
48dc6509f8 Merge topic 'remove_usage_of_reserved_names'
8114e9e62 VTK-m now doesn't use reserved C++ identifiers

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: Allison Vacanti <allison.vacanti@kitware.com>
Merge-request: !1564
2019-03-04 15:25:25 -05:00
Dave Pugmire
2eca1d7a1d Merge branch 'master' of https://gitlab.kitware.com/vtk/vtk-m into gridEval 2019-03-04 14:34:11 -05:00
Kenneth Moreland
0aa99df394 Merge topic 'array-virtual-not-special'
db0f5c31b Add a Transfer object for ArrayHandleVirtual
99cb10b9a Fix warnings about override keyword
0ff83e94b Properly handle conditions when VirtualStorage is null
0571c6335 Add missing allocation methods to ArrayHandleVirtual
68b2e5e65 Add move constructors to ArrayHandle subclasses
0b32831af Make ArrayHandleVirtual conform with other ArrayHandle structure

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: Robert Maynard <robert.maynard@kitware.com>
Merge-request: !1557
2019-03-04 14:13:19 -05:00
Kenneth Moreland
2d6a639485 Speed up the timer test
Previously, UnitTestTimer paused for 1 second each time it wanted to
test that the timer did (or didn't) record the time elapsing. This was
done 3 times per test and tested seperately on (currently) 5 devices.
The accumulated 15 seconds is not a whole lot, but it can add up when
coupled with the well over 300 other tests.

This change moves from the POSIX sleep function (which is limited to
increments of 1 second) to the updated C++ thread/chrono classes. The
amount of time to wait each time is now 0.25 seconds, which should speed
the test up by 4 times. The risk is that the shorter wait times can
throw off the results if the computer being run on is busy. If that is
the case, we can bump up the wait time (perhaps to 0.5 seconds).
2019-03-04 08:23:42 -07:00
Kenneth Moreland
db0f5c31b9 Add a Transfer object for ArrayHandleVirtual
Previously, ArrayHandleVirtual was using the default Transfer object.
This was problematic because it would copy/allocate things in the
execution environment independently from the array that it was wrapped
around. This caused several negative effects, particularly for CUDA
devices. First, if the data were already on the device (or the array is
implicit), a second copy of the data would be made. Second, the copy to
the device is likely less efficient. Third (and worst of all), the data
did not always get pulled back to the original array correctly.

This commit also contains instantiations of ArrayHandleVirtual and its
components for the most common types.
2019-03-01 15:50:16 -07:00
Kenneth Moreland
99cb10b9a9 Fix warnings about override keyword 2019-03-01 15:50:16 -07:00
Kenneth Moreland
0ff83e94bf Properly handle conditions when VirtualStorage is null
If an ArrayHandleVirtual is constructed without an underlying concrete
array handle, then the Storage<T, StorageTagVirtual> holds a
StorageVirtual pointer that is null. Generally, a null
ArrayHandleVirtual cannot do much, but its operations should still be
correct. There were a few places where the Storage would blindly try to
use its StorageVirtual pointer without checking it first. This adds some
conditions that should correct the behavior when StorageVirtual is null.
2019-03-01 15:50:16 -07:00
Kenneth Moreland
0571c6335d Add missing allocation methods to ArrayHandleVirtual 2019-03-01 15:50:16 -07:00
Kenneth Moreland
68b2e5e65c Add move constructors to ArrayHandle subclasses
There is a test to ensure that basic VTK-m classes have proper move
constructors that do not throw exceptions. Some of these are subclasses
of ArrayHandle. Add these move constructors to the
VTK_M_ARRAY_HANDLE_SUBCLASS macros so they get automatically added.
2019-03-01 15:50:16 -07:00
Kenneth Moreland
0b32831afd Make ArrayHandleVirtual conform with other ArrayHandle structure
Previously, ArrayHandleVirtual was defined as a specialization of
ArrayHandle with the virtual storage tag. This was because the storage
object was polymorphic and needed to be handled special. These changes
moved the existing storage definition to an internal class, and then
managed the pointer to that implementation class in a Storage object
that can be managed like any other storage object.

Also moved the implementation of StorageAny into the implementation of
the internal storage object.
2019-03-01 15:50:14 -07:00
Kenneth Moreland
03fc3d51ac Merge topic 'timer-init-runtime-device'
6797c6e33 Specify return type for GetTimerImpl
25f3432b1 Increase the conditions on which Timer is tested
4d9ce2488 Synchronize CUDA timer when stopping it
85265a9c8 Add const correctness to Timer
465508993 Allow resetting Timer with a new device
dd4a93952 Enable initializing Timer with a DeviceAdapterId

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: Haocheng LIU <haocheng.liu@kitware.com>
Merge-request: !1562
2019-03-01 17:23:11 -05:00
Allison Vacanti
d1db4ef8b3 Clarify intent of TypeString and TypeName functions.
TypeName is used for logging, and is now TypeToString.

TypeString is used for serialization, and is now SerializableTypeString.
2019-03-01 11:47:53 -05:00
Kenneth Moreland
6797c6e336 Specify return type for GetTimerImpl
The internal function GetTimerImpl has a rather complex expression for
its return type. Prevously this was derived using declspec, but one of
the versions of Visual Studio barfed on that for some reason. So now
declare the return type explicitly.
2019-02-28 15:36:55 -07:00
Kenneth Moreland
25f3432b1a Increase the conditions on which Timer is tested
UnitTestTimer was changed to be initialized across all possible devices
and getting times across all possible devices. Also test all possible
ways to set the device in the Timer.
2019-02-28 15:08:32 -07:00
Kenneth Moreland
4d9ce24888 Synchronize CUDA timer when stopping it
Previously, when Stop was called on a Cuda timer, it would record a stop
event but it would not synchronize it at that time. Instead, the
synchronize was only called when GetElapsedTime was called. The problem
is that the time of the event is only marked when synchronize is called.
Thus, if the event completed before GetElapsedTime was called, it would
record the time from when the event acutally happened to the time when
GetElapsedTime was called as part of the elapsed time, which is
incorrect.

Fix the problem by synchronizing when Stop is called. Although this
makes the Timer more invasive, generally using the Timer can cause
synchronization to happen. This behavior is consistent with the Timer
implementation for other devices.
2019-02-28 15:08:32 -07:00
Kenneth Moreland
85265a9c84 Add const correctness to Timer
It should be possible to query a vtkm::cont::Timer without modifying it.
As such, its query functions (such as Stopped and GetElapsedTime) should
be const.
2019-02-28 15:08:16 -07:00
Robert Maynard
8114e9e627 VTK-m now doesn't use reserved C++ identifiers
Fixes #340
2019-02-28 15:08:08 -05:00
Kenneth Moreland
4655089934 Allow resetting Timer with a new device
Previously, in order to specify a device with the timer, it had to be
specified in the timer's construction or had to be specified every time
GetElapsedTime was called. The first method was inconvienient in the
case where there are multiple code paths to define the device and the
latter method was inconvienient because you would have to pass around a
device id.

Both these techniques still exist, but we have also added a new form of
Reset that allows you to change the device the timer is used on.
2019-02-27 15:38:32 -07:00
Kenneth Moreland
dd4a939525 Enable initializing Timer with a DeviceAdapterId
Previously, a vtkm::cont::Timer had to be initialized with either no
device or with a device adapter tag. However, this precluded
initializing the timer with a DeviceAdapterId, which made it difficult
to create a timer at runtime. Instead, just accept a DeviceAdapterId
(which all device adapter tags inherit from) and do runtime checks.
2019-02-27 15:36:46 -07:00
Kenneth Moreland
e9591621b3 Find threads library in external build
In certain circumstances (currently, when logging is enabled), VTK-m
libraries depend on the threading library. However, when the VTK-m
package was included from an external project, it did not automatically
find the threads package. This change makes the Threads library loaded
when the VTK-m package is found.
2019-02-27 14:03:10 -07:00
Kenneth Moreland
6aa99aec0f Add ability to remove degenerate cells in CleanGrid 2019-02-26 12:44:57 -07:00
Haocheng LIU
634f523d92 Merge benchmark executables into a device dependent shared library
VTK-m has been updated to replace old per device benchmark executables with a device
dependent shared library so that it's able to accept a device adapter at runtime through
the "--device=" argument.
2019-02-25 12:26:47 -05:00
Kenneth Moreland
1ca55ac319 Add specialized operators for ArrayPortalValueReference
The ArrayPortalValueReference is supposed to behave just like the value
it encapsulates and does so by automatically converting to the base type
when necessary. However, when it is possible to convert that to
something else, it is possible to get errors about ambiguous overloads.
To avoid these, add specialized versions of the operators to specify
which ones should be used.

Also consolidated the CUDA version of an ArrayPortalValueReference to the
standard one. The two implementations were equivalent and we would like
changes to apply to both.
2019-02-20 13:33:55 -07:00
Dave Pugmire
289e0f808e Move BoundingIntervalHierarchy to device-specific sources. 2019-02-19 10:49:31 -05:00
Dave Pugmire
314ebd3dc6 Merge branch 'master' of https://gitlab.kitware.com/vtk/vtk-m into gridEval 2019-02-18 14:38:37 -05:00
Robert Maynard
451bff6f14 vtkmdiy: Use the new mangled VTKM_DIY_ defines 2019-02-08 14:31:34 -05:00
Robert Maynard
74acc2a7bb vtkmdiy: Support only including the serialization headers of diy 2019-02-08 11:40:59 -05:00
Robert Maynard
ad98d818ce VTK-m now doesn't clobber external DIY installations
Fixes #334
2019-02-05 13:05:14 -05:00
Haocheng LIU
0696ae135e Merge topic 'asynchronize-timer'
415252c66 Introduce asynchronous and device independent timer

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: Haocheng LIU <haocheng.liu@kitware.com>
Acked-by: Robert Maynard <robert.maynard@kitware.com>
Merge-request: !1530
2019-02-05 12:02:59 -05:00
Haocheng LIU
415252c662 Introduce asynchronous and device independent timer
The timer class now is asynchronous and device independent. it's using an
similiar API as vtkOpenGLRenderTimer with Start(), Stop(), Reset(), Ready(),
and GetElapsedTime() function. For convenience and backward compability, Each
Start() function call will call Reset() internally and each GetElapsedTime()
function call will call Stop() function if it hasn't been called yet for keeping
backward compatibility purpose.

Bascially it can be used in two modes:

* Create a Timer without any device info. vtkm::cont::Timer time;

  * It would enable timers for all enabled devices on the machine. Users can get a
specific elapsed time by passing a device id into the GetElapsedtime function.
If no device is provided, it would pick the maximum of all timer results - the
logic behind this decision is that if cuda is disabled, openmp, serial and tbb
roughly give the same results; if cuda is enabled it's safe to return the
maximum elapsed time since users are more interested in the device execution
time rather than the kernal launch time. The Ready function can be handy here
to query the status of the timer.

* Create a Timer with a device id. vtkm::cont::Timer time((vtkm::cont::DeviceAdapterTagCuda()));

  * It works as the old timer that times for a specific device id.
2019-02-05 12:01:56 -05:00
Robert Maynard
d0a70946b8 Simplify the DeviceAdapterRuntimeDetectorCuda to not do a kernel launch.
The kernel launch component of the runtime device adapter is fairly
pointless. If the hardware supports CUDA we should expect that
VTK-m has the correct kernel versions.

Plus in the original version if the CUDA device was being used
and the kernel launch returns cudaErrorDevicesUnavailable it
was never possible to restore CUDA support. Now what happens
is that the runtime tracker is marked as failed, but the
calling code can always go back and trying the device again.
2019-02-04 13:27:20 -05:00
Dave Pugmire
5a63b19c2b Fixes for uniform cell locator for points right on the boundary. Also added some tests for boundary points. 2019-02-01 08:43:54 -05:00
Dave Pugmire
71f000465b fix compiler warning. 2019-01-31 15:41:56 -05:00
Dave Pugmire
9974cb064a Fix source file inclusion and copyright test failures. 2019-01-31 08:57:00 -05:00
Dave Pugmire
e631419d54 Fix export for BoundingIntervalHierarchy. Remove old grid evaluators. 2019-01-30 16:42:37 -05:00
Haocheng LIU
6107f548b1 Link pthread when logging is enabled 2019-01-30 16:34:58 -05:00
Dave Pugmire
c6fb7b4341 move code to cxx file. 2019-01-30 14:05:50 -05:00
Dave Pugmire
8a1ac3a8d8 Add a single grid evaluator class for particle advection. 2019-01-30 13:47:27 -05:00
Robert Maynard
c501500e1d Install missing headers found by VTKmCheckSourceInInstall 2019-01-29 14:46:27 -05:00
Robert Maynard
5508d17c31 Merge topic 'correct_broken_install'
24e71d251 VTK-m yet again has properly installed headers.

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: Kenneth Moreland <kmorel@sandia.gov>
Merge-request: !1525
2019-01-24 14:59:41 -05:00
Robert Maynard
223a711f2b Merge topic 'ErrorBadType_IsDeviceIndependent'
80b7f8f18 ErrorBadType should be a device independent exception

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: Kenneth Moreland <kmorel@sandia.gov>
Merge-request: !1524
2019-01-24 14:43:06 -05:00
Robert Maynard
24e71d251b VTK-m yet again has properly installed headers.
Fixes the install issues mentioned in #342
2019-01-24 14:26:40 -05:00
Allison Vacanti
4ddcfbc66d Merge topic 'openmp_task_namespace'
91a1c7e2d Fix typo in openmp and tbb task code.

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !1523
2019-01-24 13:19:33 -05:00
Robert Maynard
80b7f8f187 ErrorBadType should be a device independent exception 2019-01-24 13:01:03 -05:00
Allison Vacanti
91a1c7e2d0 Fix typo in openmp and tbb task code. 2019-01-24 12:02:13 -05:00
Allison Vacanti
03fc7b66d0 Add VTKM_CUDA_DEVICE_PASS preprocessing definition.
This is only set while compiling device code, and is useful
for code that needs different implementations on devices (e.g.
they call CUDA device intrinsics, etc).
2019-01-24 11:23:45 -05:00
Robert Maynard
ed34b632f3 vtkm::cont::Testing RunOnDevice requires argc,argv parameters. 2019-01-23 16:01:58 -05:00
Robert Maynard
d6f66d17a3 Testing run methods now take argc/argv to init logging/runtime device
`vtkm::cont::testing` now initializes with logging enabled and support
for device being passed on the command line, `vtkm::testing` only
enables logging.
2019-01-17 13:16:27 -06:00
Kenneth Moreland
cbf913ad7c Merge topic 'cast-variant-to-storage'
d59ce11c0 Allow VariantArrayHandle CastAndCall to cast to concrete types

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: Robert Maynard <robert.maynard@kitware.com>
Merge-request: !1519
2019-01-17 11:34:22 -05:00
Kenneth Moreland
d59ce11c00 Allow VariantArrayHandle CastAndCall to cast to concrete types
When you call VariantArrayHandle::CastAndCall, it now tries both basic
storage and virtual storage. You can modify the types of storages tried
by giving a type list of storage tags as the first argument.
2019-01-16 22:31:55 -06:00
Robert Maynard
4ec5bae02d Remove VTK-m TestBuild infrastructure
The purpose of the TestBuild infrastructure was to confirm that
VTK-m didn't have any lexical issues when it was a pure header
only project. As we now move to have more compiled components
the need for this form of testing is mitigated. Combined
with the issue of TestBuilds causing MSVC issues, we should
just remove this infrastructure.
2019-01-16 10:04:33 -06:00
Kenneth Moreland
b2e20bf90e Fix issues from removing field type templates
The script fixed up most of the issues. However, there were some
instances that the script was not able to pick up on. There were
also some instances that still needed a means to select types.
2019-01-11 12:23:19 -07:00
Kenneth Moreland
2e426ad547 Run the update-control-signature-tags.sh script 2019-01-11 12:23:10 -07:00
Kenneth Moreland
42f810f70e Remove type lists from ControlSignature arguments for arrays
The typelist arguments for ControlSignature tags are antiquated. Remove
them.
2019-01-11 12:15:16 -07:00
Robert Maynard
628dce822e Merge topic 'require_cmake38'
f1e1a524e Require CMake 3.8 to build VTK-m.

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: Kenneth Moreland <kmorel@sandia.gov>
Merge-request: !1514
2019-01-09 17:02:52 -05:00
Abhishek Yenpure
afd0409189 Merge topic 'code_sprint_locator_fixes'
9b56d41fe Fixing Rectilinear Grid Cell Locator
10e9d47dc Removing std::out print statement from test
34c7b57d8 Merge branch 'code_sprint_locator_fixes' of gitlab.kitware.com:ayenpure/vtk-m into code_sprint_locator_fixes
62ee1a2c8 Updates to the Cell Locators
7eb0de5b7 Merge branch 'code_sprint_locator_fixes' of gitlab.kitware.com:ayenpure/vtk-m into code_sprint_locator_fixes
866b0798d Resolving type warnings
c062f2e26 Merge branch 'master' of https://gitlab.kitware.com/vtk/vtk-m into code_sprint_locator_fixes
797c83891 Adding default constructor and removing wrong comment
...

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: Kenneth Moreland <kmorel@sandia.gov>
Merge-request: !1395
2019-01-09 16:23:17 -05:00
Robert Maynard
f1e1a524e9 Require CMake 3.8 to build VTK-m. 2019-01-09 16:01:22 -05:00
Robert Maynard
9bfe670e1c Merge topic 'correct_more_diy2_warnings'
f4a96cf1f Correct warning in StorageBasic logging when using 32bit ids.
281284298 Merge branch 'upstream-diy' into correct_more_diy2_warnings
3c130d166 diy 2019-01-09 (149953b0)

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !1513
2019-01-09 14:21:40 -05:00
Robert Maynard
f4a96cf1fb Correct warning in StorageBasic logging when using 32bit ids. 2019-01-09 12:56:34 -05:00
Robert Maynard
d29bdb2e39 VariantArrayHandleContainer casting operations have minimal overhead.
We want to make sure that VariantArrayHandleContainer has as little
overhead when launch worklets as possible. To do so we cache
type information to make deducing the `T` type of ArrayHandles
as fast as possible.
2019-01-09 08:27:14 -05:00
Robert Maynard
831a0bf844 Merge topic 'reduce_array_handle_virtual_binary_size'
a9d092efa Optimize TransferInfo / VirtualObjectTransfer for shared memory systems

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !1498
2019-01-09 08:25:18 -05:00
Robert Maynard
2e93443b10 All bit shifting in vtkm::cont::Logging happens in unsigned space 2019-01-08 09:49:15 -05:00
Robert Maynard
1ba38c59f7 Merge topic 'move_human_size_to_logging'
543255c37 Move the HumanSize function to Logging.cxx as it is only used by the logger

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !1508
2019-01-07 17:42:50 -05:00
Robert Maynard
543255c374 Move the HumanSize function to Logging.cxx as it is only used by the logger 2019-01-07 16:24:49 -05:00
Robert Maynard
ce95b8f788 VTK-m now supports case-insensitive construction of devices from strings.
Previously you had to exactly match the case of a device adapter's name to
construct it, which was a source of lots of problems ( OpenMP versus OPENMP, CUDA or Cuda ).

Now `vtkm::cont::make_DeviceAdapterId` and `vtkm::cont::RuntimeDeviceTracker` support
case-insensitive device construction.
2019-01-07 08:12:25 -05:00
ayenpure
10e9d47dc3 Removing std::out print statement from test 2019-01-06 17:27:51 -08:00
ayenpure
62ee1a2c8a Updates to the Cell Locators
- Adding updates to uniform grid cell locator
  - adding OpenMP test, updating copyrights
- Adding rectilinear grid cell locator
  - adding unit tests for serial, tbb, OpenMP, and cuda
- Updating CMakeLists to honor the alphabetical ordering
2019-01-06 17:18:23 -08:00
Robert Maynard
10895f0ea5 RuntimeDeviceTracker DeepyCopy is better optimized.
The DeepCopy method is used when a ScopedGlobalRuntimeDeviceTracker
is constructed. This in turn causes the rebuilding of the device
names and states which isn't a free operation. Now we copy the already
computed information.

This was noticeable when using ArrayHandleTransform since it uses
ScopedGlobalRuntimeDeviceTracker when construction host side
portals.
2019-01-03 15:03:35 -05:00
Robert Maynard
f955103cad Merge topic 'add_more_types_to_move_constructor_test'
4e9b4c37e Verify more core vtkm types have proper move semantics.

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: Allison Vacanti <allison.vacanti@kitware.com>
Merge-request: !1499
2019-01-02 16:50:31 -05:00
Robert Maynard
4e9b4c37e1 Verify more core vtkm types have proper move semantics. 2019-01-02 12:46:30 -05:00
Robert Maynard
0ee5753724 VTK-m now logs whenever at runtime a device is enabled/disabled.
Previously we only logged when a user requested a device on the
command line, but that doesn't capture when code forces a device
2019-01-02 09:34:50 -05:00
Robert Maynard
a9d092efac Optimize TransferInfo / VirtualObjectTransfer for shared memory systems 2019-01-01 15:58:57 -05:00
Robert Maynard
61b1b51577 Make IsType and Cast not error at compile time when given bad types
Previously these two functions would give compile errors when asked to
compare against an Array with a different value type. This makes it easier
to write generic code that compares virtual handles.
2018-12-31 13:03:42 -05:00
Robert Maynard
718caaaeac CudaAllocator allows managed memory to be explicitly disabled 2018-12-28 11:30:29 -05:00
Robert Maynard
3445047f9e Refactor vtkm::cont::ArrayHandleAny into vtkm::cont::ArrayHandleVirtual
ArrayHandleVirtual can automatically be constructed from any ArrayHandle.
In the cases where the input ArrayHandle doesn't derived from ArrayHandleVirtual,
it will automatically construct StorageAny to hold the array.
2018-12-27 15:42:03 -05:00
Robert Maynard
1f2abbc9c4 vtkm::cont::IsType and vtkm::cont::Cast support VariantArrayHandle 2018-12-27 14:35:56 -05:00
Robert Maynard
acf825b279 Correct IsType and Cast on ArrayHandleVirtual to work on OSX. 2018-12-27 14:35:56 -05:00
Robert Maynard
7b9fa975f2 Rename: IsVirtualType to IsValueType. 2018-12-27 14:35:56 -05:00
Robert Maynard
9c496e5da0 Correct warning found in ArrayHandleVirtualCoordinates with cuda 8.0 2018-12-27 14:35:56 -05:00
Robert Maynard
78e9cf0929 ArrayRangeCompute now supports ArrayHandleVirtual<vec3f> 2018-12-27 14:35:56 -05:00
Robert Maynard
7eb1e31b11 Remove vtkm::cont::DynamicArrayHandle. 2018-12-27 14:35:56 -05:00
Robert Maynard
0a40c620ac Rename ArrayHandleVariant to VariantArrayHandle. 2018-12-27 14:35:56 -05:00
Robert Maynard
0c72555ee1 Update vtkm/cont/testing to work with ArrayHandleVariant 2018-12-27 14:35:56 -05:00
Robert Maynard
8deb661409 Add serialization support to ArrayHandle Virtual, Any, and Variant. 2018-12-27 14:35:56 -05:00
Robert Maynard
28757bda4b ArrayHandleVirtual supports comparison operators 2018-12-27 14:35:56 -05:00
Robert Maynard
4c23f50227 ArrayHandleVirtual can be used as AtomicArrayInOut tag type 2018-12-27 14:35:56 -05:00
Robert Maynard
b57dc5d289 Update ArrayHandleVirtual to handle PrepareForInPlace. 2018-12-27 14:35:56 -05:00
Robert Maynard
3c6246140d ArrayRangeCompute now states it has uniform point coord optimization 2018-12-27 14:35:56 -05:00
Robert Maynard
ef83adf3bd Field, CoordinateSystem, VirtualCoordinates all use the new virtual code 2018-12-27 14:35:56 -05:00
Robert Maynard
3d67a00822 Add ArrayHandleVariant to vtkm::cont which will replace DynamicArrayhandle 2018-12-27 14:35:56 -05:00
Robert Maynard
90223b390c Add ArrayHandleAny to vtkm::cont 2018-12-27 14:35:56 -05:00
Robert Maynard
6e1cbaa16a Add StorageVirtual and ArrayHandleVirtual to vtkm::cont 2018-12-27 14:35:56 -05:00
Robert Maynard
e31c73ef69 vtkm::cont Locators include all headers they need. 2018-12-27 13:19:40 -05:00
Robert Maynard
181d5f9f30 ArrayHandleZip now gracefully handles writes to implicit handles. 2018-12-27 13:19:40 -05:00
Sujin Philip
7c27bedc08 Enable Separable Compilation for CUDA 2018-12-27 13:19:40 -05:00
Robert Maynard
a507e784fe Merge topic 'fix_logic_error_in_enable_cuda_managed_memory'
90bb23de6 CudaAllocator::Initialize correctly uses managed memory when possible

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: Haocheng LIU <haocheng.liu@kitware.com>
Merge-request: !1486
2018-12-21 13:23:56 -05:00
Robert Maynard
90bb23de6b CudaAllocator::Initialize correctly uses managed memory when possible
Previously the logic would always think managed memory wasn't supported
2018-12-20 17:21:55 -05:00
Robert Maynard
376ef07fa3 Merge topic 'more_storage_basic_logging'
d5dc414e7 StorageBasic allocation logic now reports number of elements

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: Allison Vacanti <allison.vacanti@kitware.com>
Merge-request: !1484
2018-12-20 17:16:04 -05:00
Robert Maynard
d5dc414e74 StorageBasic allocation logic now reports number of elements
When looking at allocations it is useful to have memory size and
the number of elements so you can figure out what type/sizeof(type)
is being allocated
2018-12-20 10:13:54 -05:00
Mark Kim
e7c1151c74 So many warnings. 2018-12-17 17:54:26 -05:00
Mark Kim
d52928c9f2 edited wrong MakeTest. Fixed. 2018-12-17 10:43:07 -05:00
Mark Kim
30be47ee78 Mismatched types from MakeTest. 2018-12-16 23:23:33 -05:00
Mark Kim
08f8bbd7f1 Visual Studio doesn't support this initialization. 2018-12-14 23:03:12 -05:00
Mark Kim
a6bcf8a0ab something's not quite right. 2018-12-13 14:49:38 -05:00
Mark Kim
e033fe8eea fix new 1d data generator. 2018-12-13 14:49:38 -05:00
Mark Kim
8a9bfcba1b zfp 1d worklet. 2018-12-13 14:49:38 -05:00
Mark Kim
95636ff2cd decode/encode 2d. 2018-12-13 14:49:37 -05:00
mclarsen
8cd7c5db32 fixed the gather 2018-12-13 14:49:36 -05:00
mclarsen
ea9bef19da init zfp 2018-12-13 14:49:36 -05:00
Allison Vacanti
f3536e44f8 Merge topic '320-vtkm_init'
cdb1f5680 Add vtkm::cont::Initialize.

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: Kenneth Moreland <kmorel@sandia.gov>
Acked-by: Haocheng LIU <haocheng.liu@kitware.com>
Merge-request: !1475
2018-12-13 12:01:57 -05:00
Allison Vacanti
cdb1f5680a Add vtkm::cont::Initialize.
Also
- Renamed vtkm::cont::make_DeviceAdapterIdFromName to just overload
  make_DeviceAdapterId.
- Refactored CMake logic for unit tests
  - Since we're now querying the device tracker for the names, they
    cannot be all caps.
- Updated usages of InitLogging to use Initialize instead.
- Added changelog.
2018-12-13 10:15:44 -05:00
Kenneth Moreland
81a22ff64f Change ConvertNumComponentsToOffsets to use DeviceAdapterId
The vtkm::cont::ConvertNumComponentsToOffsets method was originally
created before vtkm::cont::DeviceAdapterId and the dynamic
vtkm::cont::Algorithm classes were created. Thus, it contained its own
version of TryExecute and did not support the direct selection of a
device at runtime. Change the function to use the new dynamic device
adapter id, which makes this more consistent with the rest of VTK-m and
cleans up the implementation quite a bit.
2018-12-12 08:18:47 -07:00
Robert Maynard
4994190064 UnitTestMoveConstructors will now compile with gcc 4.9 and Intel < 17. 2018-12-11 09:29:08 -05:00
Robert Maynard
0da7830d9a Make sure important vtkm::cont classes have noexcept move ops.
This is important so they can be stored efficiently inside
containers such as std::vector that require strong move guarantees.
2018-12-10 10:33:18 -05:00
Robert Maynard
fee6ef591b Improve serialization performance of ArrayHandle with BasicStorage 2018-12-06 09:21:06 -05:00
Sujin Philip
6d81bc8b06 Implement extents support
Adds a variable `GlobalPointIndexStart` to `CellSetStructured`.
Adding this to the cell-set, instead of the coordinate system, enables this
feature for different types of datasets like uniform grid, rectilinear, etc.,
with this one change.
The extents can be computed using `GlobalPointIndexStart` and `PointDimensions`.
2018-12-03 15:56:45 -05:00
ayenpure
7eb0de5b74 Merge branch 'code_sprint_locator_fixes' of gitlab.kitware.com:ayenpure/vtk-m into code_sprint_locator_fixes 2018-12-03 08:07:07 -08:00
ayenpure
866b0798d4 Resolving type warnings 2018-12-03 08:03:36 -08:00
ayenpure
c062f2e26c Merge branch 'master' of https://gitlab.kitware.com/vtk/vtk-m into code_sprint_locator_fixes 2018-12-03 07:44:31 -08:00
Haocheng LIU
deeb9c4183 Remove a mis-added autossave file 2018-11-30 08:40:10 -05:00
Haocheng LIU
0d39806f4f Rename worklet testing executable
Now it's in accordance with vtkm testing name convension as
UnitTests_vtkm_worklet_testing.
2018-11-29 15:51:41 -05:00
Kenneth Moreland
0725bd4578 Merge topic 'average-by-key-warning'
6ebc3ea76 Fix potential warning in AverageByKey

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: Robert Maynard <robert.maynard@kitware.com>
Merge-request: !1463
2018-11-27 17:53:20 -05:00
Haocheng LIU
9bd30571f5 Fix link errors for vtkm_cont when logging is enabled 2018-11-27 11:37:51 -05:00
Kenneth Moreland
6ebc3ea761 Fix potential warning in AverageByKey
To get the average, we (of course) divide the sum by the amount of
values, which is returned from valuesIn.GetNumberOfComponents(). To do
this, we need to cast the number of components (returned as a
vtkm::IdComponent) to a FieldType. This is a little more complex than it
first seems because FieldType might be a Vec type. If you just try a
static_cast<FieldType>(), it will use the constructor to FieldType which
might be a Vec constructor expecting the type of the component. This in
turn could cause a warning because the vtkm::IdComponent is implicitly
converted to the Vec's component type.

Get around this problem by first casting to the component type of the
field and then constructing a field value from that.
2018-11-27 09:31:23 -07:00
Haocheng LIU
8859636672 Merge worklet testing executables into a device dependent shared library
VTK-m has been updated to replace old per device worklet testing executables with a device
dependent shared library so that it's able to accept a device adapter
at runtime.
Meanwhile, it updates the testing infrastructure APIs. vtkm::cont::testing::Run
function would call ForceDevice when needed and if users need the device
adapter info at runtime, RunOnDevice function would pass the adapter into the functor.

Optional Parser is bumped from 1.3 to 1.7.
2018-11-23 10:13:56 -05:00
Kenneth Moreland
33db6655fc Make the building of static color table presets is thread safe
If multiple threads call a function with a static function
simultaneously for the first time, C++ does not guarantee that the
static member will be constructed correctly. Make sure that it happens
correctly.
2018-11-14 09:19:07 -06:00
Kenneth Moreland
8984e74e8c Hold preset information in simple struct
Creating all the presets as vtkm::cont::ColorTable objects and passing
them back was problematic. It caused state to be shared and caused
issues when deallocating after the device deallocation methods were
finalized. Instead, make a simple struct and build new color tables on
the fly.
2018-11-11 17:30:11 -07:00
Kenneth Moreland
70e10459c7 Update presets for ColorTable
The ParaView project went through a rigourous selection process
for a short list of color tables. Let's replicate that for our
presets.
2018-11-09 09:02:10 -07:00
Robert Maynard
dadfeab00a Simplify vtkm::cont::Field by using delegating constructors. 2018-11-02 14:18:09 -04:00
Haocheng LIU
bb06717803 Make RuntimeDeviceInformation class template independent
By making RuntimeDeviceInformation class template independent, vtkm is
able to detect
device info at runtime with a runtime specified deviceId. In the past
it's impossible
because the CRTP pattern does not allow function overloading(compiler
would complain
that DeviceAdapterRuntimeDetector does not have Exists() function
defined).
2018-11-01 14:55:33 -04:00
Robert Maynard
154b65f47a Install vtkm/cont/ColorTable.hxx so users can use color tables 2018-10-31 17:02:12 -04:00
Robert Maynard
458fc974b5 Merge topic 'rework_colortable_for_separable_compilation'
169ca722b Redesign vtkm::cont::ColorTable to work with separable compilation.

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: Sujin Philip <sujin.philip@kitware.com>
Merge-request: !1445
2018-10-31 11:24:43 -04:00
Robert Maynard
169ca722b3 Redesign vtkm::cont::ColorTable to work with separable compilation. 2018-10-31 08:18:08 -04:00
Robert Maynard
c66a6e480d Provided vtkm::cont::Storage with move schematics 2018-10-24 15:45:55 -04:00
Robert Maynard
1f86878f78 Make the ArrayHandle move constructors noexcept.
std::containers only activate fast emplace operations if the
T types move operators are noexcept
2018-10-23 16:21:05 -04:00
Kenneth Moreland
bcbad61002 Fix warnings about uninitalized value
In some functors within Algorithm.h, the functor did not have a
default constructor that initialized its fields. This could in turn
lead to a warning about using it unitialized.
2018-10-16 17:19:49 -06:00
Kenneth Moreland
bddad9b386 Remove TryExecute from filters
Now that the dispatcher does its own TryExecute, filters do not need to
do that. This change requires all worklets called by filters to be able
to execute without knowing the device a priori.
2018-10-16 15:59:53 -06:00
Robert Maynard
45422478cf Refactor VirtualObjectHandle to support new virtual design 2018-10-15 17:38:54 -04:00
Robert Maynard
ab25b4228e Cleanup the documentation in ErrorBadDevice 2018-10-11 08:11:43 -04:00
Allison Vacanti
6fb879ec20 Fix typo in logging docs. 2018-10-10 15:39:13 -04:00
Allison Vacanti
be0db4b021 Add parameter-less InitLogging().
Also document that this function should only be called from a
single thread.
2018-10-10 15:39:03 -04:00
Allison Vacanti
16c4dde2ee Merge topic 'cuda10_warning'
0e105eae6 cudaPointerAttributes::isManaged deprecated in CUDA 10.

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: Robert Maynard <robert.maynard@kitware.com>
Merge-request: !1430
2018-10-10 15:05:57 -04:00
Allison Vacanti
0e105eae6d cudaPointerAttributes::isManaged deprecated in CUDA 10.
Update code to support both the old and new way of checking this.
2018-10-10 13:51:56 -04:00
luz.paz
d5beb69ec1 Misc. typos
Found via `codespell`
2018-10-04 10:30:33 -04:00
Robert Maynard
db1b394336 Merge branch '291_logging' into 'master'
Add general logging support

See merge request vtk/vtk-m!1414
2018-10-04 09:36:47 -04:00
Robert Maynard
e8bc2a56ed make_DeviceAdapterId is now inline to remove duplicate symbols. 2018-10-04 08:42:29 -04:00
Robert Maynard
a512cd495e Allow runtime construction of DeviceAdapterId
When need some way to convert user input such as an integer or
string to a device adapter id. This allows for integer to
device adapter id.
2018-10-03 13:43:31 -04:00
ayenpure
797c838917 Adding default constructor and removing wrong comment 2018-10-02 15:33:36 -07:00
ayenpure
f8150016ea Fixing warnings 2018-10-02 13:12:26 -07:00
Allison Vacanti
bd337854ec Initial implementation of general logging.
Addresses #291.
2018-10-02 11:37:55 -04:00
Sujin Philip
ebcd0ade6a Move test_equal_* functions to vtkm::cont::testing
Implement more general versions of `test_equal_ArrayHandles`, `test_equal_CellSets`, `test_equal_Fields`, and `test_equal_DataSets` functions and put them
in vtkm/cont/testing/Testing.hi with the hope that they will be useful for
others also.
2018-09-25 13:58:39 -04:00
Sujin Philip
365d3d3921 Implement DataSet Serialization 2018-09-25 13:58:39 -04:00
Sujin Philip
fd89dfc89b Add ArrayHandle Serialization 2018-09-25 13:58:39 -04:00
Robert Maynard
caa23b5499 Merge topic 'reverse_conn_support_differing_types'
767eb8206 ReverseConnectivityBuilder can handle 32bit and 64bit connectivity

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !1409
2018-09-15 11:45:41 -04:00
ayenpure
0fa7335294 Adding fixes from Ken's review 2018-09-14 11:59:37 -06:00
Robert Maynard
2c218dd958 Merge topic 'osx_static_warnings'
c0a5e1624 Fix vtk-m warnings on static osx builds.

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !1408
2018-09-13 15:46:37 -04:00
Robert Maynard
767eb82063 ReverseConnectivityBuilder can handle 32bit and 64bit connectivity
This allows ReverseConnectivityBuilder to build any connectivity
independent of vtkm::Id being 32 or 64 bit.
2018-09-13 09:33:31 -04:00
Robert Maynard
c0a5e16249 Fix vtk-m warnings on static osx builds. 2018-09-13 09:15:25 -04:00
mclarsen
0e7e51a1ce resolving merge conflict 2018-09-12 18:58:33 -07:00
mclarsen
1c2f78ca92 refactoring ray tracing 2018-09-10 19:25:42 -07:00
Kenneth Moreland
2b05487398 Add ExecutionAndControlObjectBase
This is a subclass of ExecutionObject and a superset of its
functionality. In addition to having a PrepareForExecution method, it
also has a PrepareForControl method that gets an object appropriate for
the control environment. This is helpful for situations where you need
code to work in both environments, such as the functor in an
ArrayHandleTransform.

Also added several runtime checks for execution objects and execution
and cotnrol objects.
2018-09-08 11:54:28 -06:00
Kenneth Moreland
98a0a20feb Allow ArrayHandleTransform to work with ExecObject
This change allows you to set a subclass of
vtkm::cont::ExecutionObjectBase as a functor
used in ArrayHandleTransform. This latter class will then detect that
the functor is an ExecObject and will call PrepareForExecution with the
appropriate device to get the actual Functor object.

This change allows you to use virtual objects and other device dependent
objects as functors for ArrayHandleTransform without knowing a priori
what device the portal will be used on.
2018-09-05 13:11:04 -06:00
Robert Maynard
7e3727fa9c Convert some vtkm/cont classes over to vtkm::worklet::Invoker 2018-09-04 15:01:18 -04:00
ayenpure
22ca8bce15 Fixing unit test 2018-08-30 10:19:00 -07:00
Kenneth Moreland
ddc85d7385 Merge topic 'dispatcher-auto-device-2'
d879188de Make DispatcherBase invoke using a TryExecute

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !1392
2018-08-30 12:59:22 -04:00
ayenpure
d5b4e8411f Rectifying exception messages 2018-08-30 09:41:50 -07:00
ayenpure
5fea2b3f7f Using Length() on vtkm::Range instead of calculation 2018-08-30 09:25:05 -07:00