vtk-m/vtkm/exec
Kenneth Moreland c44f686496 Add hints to device adapter scheduler
The `DeviceAdapter` provides an abstract interface to the accelerator
devices worklets and other algorithms run on. As such, the programmer has
less control about how the device launches each worklet. Each device
adapter has its own configuration parameters and other ways to attempt to
optimize how things are run, but these are always a universal set of
options that are applied to everything run on the device. There is no way
to specify launch parameters for a particular worklet.

To provide this information, VTK-m now supports `Hint`s to the device
adapter. The `DeviceAdapterAlgorithm::Schedule` method takes a templated
argument that is of the type `HintList`. This object contains a template
list of `Hint` types that provide suggestions on how to launch the parallel
execution. The device adapter will pick out hints that pertain to it and
adjust its launching accordingly.

These are called hints rather than, say, directives, because they don't
force the device adapter to do anything. The device adapter is free to
ignore any (and all) hints. The point is that the device adapter can take
into account the information to try to optimize for itself.

A provided hint can be tied to specific device adapters. In this way, an
worklet can further optimize itself. If multiple hints match a device
adapter, the last one in the list will be selected.

The `Worklet` base now has an internal type named `Hints` that points to a
`HintList` that is applied when the worklet is scheduled. Derived worklet
classes can provide hints by simply defining their own `Hints` type.
2024-02-09 10:42:23 -05:00
..
arg Deprecate the GetCounts() method in Keys objects 2024-01-25 16:13:54 -05:00
cuda Add hints to device adapter scheduler 2024-02-09 10:42:23 -05:00
internal Deprecate the GetCounts() method in Keys objects 2024-01-25 16:13:54 -05:00
kokkos Add hints to device adapter scheduler 2024-02-09 10:42:23 -05:00
openmp cmake: namespace vtkm export targets 2022-12-09 18:46:56 -05:00
serial Add module mechanism 2022-10-26 12:51:05 -06:00
tbb cmake: namespace vtkm export targets 2022-12-09 18:46:56 -05:00
testing Expose the Variant helper class 2022-11-01 07:52:41 -06:00
AtomicArrayExecutionObject.h Remove deprecated features from VTK-m 2022-11-17 07:12:31 -06:00
BoundaryState.h Add reference documentation for Worklet types 2024-01-29 12:26:08 -05:00
CellDerivative.h Remove deprecated features from VTK-m 2022-11-17 07:12:31 -06:00
CellEdge.h Remove deprecated features from VTK-m 2022-11-17 07:12:31 -06:00
CellFace.h Remove deprecated features from VTK-m 2022-11-17 07:12:31 -06:00
CellInside.h Switch from VTK-c to LCL 2019-10-07 15:38:36 -04:00
CellInterpolate.h Remove deprecated features from VTK-m 2022-11-17 07:12:31 -06:00
CellLocatorBoundingIntervalHierarchy.h Remove deprecated features from VTK-m 2022-11-17 07:12:31 -06:00
CellLocatorMultiplexer.h Remove deprecated features from VTK-m 2022-11-17 07:12:31 -06:00
CellLocatorPartitioned.h enable partitioned rendering by ghost blanking and depth sorting 2023-11-06 17:42:43 -07:00
CellLocatorRectilinearGrid.h clang-tidy: fix performance-move-const-arg lints 2023-12-01 07:01:11 -05:00
CellLocatorTwoLevel.h Remove deprecated features from VTK-m 2022-11-17 07:12:31 -06:00
CellLocatorUniformBins.h Add a new unstructured cell locator 2022-11-22 09:51:40 -05:00
CellLocatorUniformGrid.h Remove deprecated features from VTK-m 2022-11-17 07:12:31 -06:00
CellMeasure.h Fixing dashboard warnings 2022-02-02 16:15:12 +05:30
CMakeLists.txt Add a new unstructured cell locator 2022-11-22 09:51:40 -05:00
ColorTable.h Remove deprecated features from VTK-m 2022-11-17 07:12:31 -06:00
ColorTable.hxx Fix warning about return value 2020-09-14 15:04:03 -06:00
ConnectivityExplicit.h Refactor CellSetExplicit to remove NumIndices. 2019-09-30 12:27:13 -04:00
ConnectivityExtrude.h Update CellSetExtrude to not specify exec types by device 2021-02-08 16:57:16 -07:00
ConnectivityPermuted.h Make connectivity structures trivially copyable 2021-03-30 12:59:07 -06:00
ConnectivityStructured.h Rename structured connectivity index conversion methods 2023-06-02 15:31:24 -04:00
FieldNeighborhood.h Add reference documentation for Worklet types 2024-01-29 12:26:08 -05:00
FunctorBase.h clang-tidy: fix readability-redundant-member-init lints 2023-12-01 07:01:11 -05:00
ParametricCoordinates.h Remove deprecated features from VTK-m 2022-11-17 07:12:31 -06:00
PointLocatorSparseGrid.h Remove deprecated features from VTK-m 2022-11-17 07:12:31 -06:00
TaskBase.h Add hints to device adapter scheduler 2024-02-09 10:42:23 -05:00
Variant.h Expose the Variant helper class 2022-11-01 07:52:41 -06:00
vtkm.module Add module mechanism 2022-10-26 12:51:05 -06:00