vtk-m/vtkm/cont/internal
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
..
ArrayCopyUnknown.cxx Fixed an issue with copying array from a disabled device 2023-05-29 20:55:48 -04:00
ArrayCopyUnknown.h Support Fill for ArrayHandleStride 2024-02-02 13:50:21 -05:00
ArrayHandleExecutionManager.h Support using Token calling PrepareForExecution in ExecutionObject 2020-02-25 07:41:39 -07:00
ArrayPortalFromIterators.h Remove Set method from const ArrayPortalFromIterators specialization... 2020-05-05 13:55:54 -04:00
ArrayRangeComputeUtils.cxx Advanced Compute Range 2023-07-04 11:54:56 -04:00
ArrayRangeComputeUtils.h Advanced Compute Range 2023-07-04 11:54:56 -04:00
ArrayTransfer.h Remove ArrayManagerExecution 2020-12-08 13:18:44 -07:00
Buffer.cxx diy,mpi: Enable GPU AWARE MPI buffers 2023-05-30 12:13:03 -04:00
Buffer.h Allow ArrayHandle to have a runtime selectable number of buffers 2022-07-11 07:48:25 -06:00
CastInvalidValue.h Enable setting invalid value in probe filter 2020-06-03 15:29:37 -06:00
CellLocatorBase.h Remove deprecated features from VTK-m 2022-11-17 07:12:31 -06:00
CMakeLists.txt Add hints to device adapter scheduler 2024-02-09 10:42:23 -05:00
ConnectivityExplicitInternals.h Compile reverse connectivity builder into vtkm_cont library 2021-09-17 09:48:21 -06:00
ConvertNumComponentsToOffsetsTemplate.h Precompile ConvertNumComponentsToOffsets 2021-09-16 14:27:14 -06:00
DefaultTypesAscent.h.in Add types appropriate for Ascent 2021-01-07 08:15:17 -07:00
DefaultTypesVTK.h.in Order the VTK scalar types to favor used types 2023-12-17 22:56:09 -07:00
DeviceAdapterAlgorithmGeneral.h Add hints to device adapter scheduler 2024-02-09 10:42:23 -05:00
DeviceAdapterListHelpers.h Remove instances of ListTag in favor of List 2019-12-06 21:32:36 -07:00
DeviceAdapterMemoryManager.cxx diy,mpi: Enable GPU AWARE MPI buffers 2023-05-30 12:13:03 -04:00
DeviceAdapterMemoryManager.h diy,mpi: Enable GPU AWARE MPI buffers 2023-05-30 12:13:03 -04:00
DeviceAdapterMemoryManagerShared.cxx diy,mpi: Enable GPU AWARE MPI buffers 2023-05-30 12:13:03 -04:00
DeviceAdapterMemoryManagerShared.h clang-tidy: fix modernize-use-override lints 2023-12-01 07:01:11 -05:00
FieldCollection.cxx Code cleanup. Add some comments. 2022-08-24 09:47:31 -04:00
FieldCollection.h Use {} initialization of FieldCollection. 2022-08-29 16:53:17 -04:00
FunctorsGeneral.h split vtkm/Algorithms.h into UpperBound.h, LowerBound.h, and BinarySearch.h 2021-04-07 18:53:09 +00:00
Hints.h Add hints to device adapter scheduler 2024-02-09 10:42:23 -05:00
IteratorFromArrayPortal.h Fix operator for IteratorFromArrayPortal 2023-05-16 09:31:17 -06:00
KXSort.h conslidate the license statement 2019-04-17 10:57:13 -06:00
MapArrayPermutation.cxx Implement VecTraits class for all types 2023-03-16 12:59:38 -06:00
MapArrayPermutation.h Add ArrayCopy specialization for Counting and Permutation array 2022-01-24 12:17:23 -07:00
OptionParser.h adjust options parser include path 2021-11-01 11:30:10 -07:00
OptionParserArguments.h Remove deprecated features from VTK-m 2022-11-17 07:12:31 -06:00
ParallelRadixSort.h Use TBB task_group for radix sort 2021-06-10 10:39:13 -06:00
ParallelRadixSortInterface.h clang-format: reformat the repository with clang-format-9 2020-08-24 14:01:08 -04:00
PointLocatorBase.h Remove deprecated features from VTK-m 2022-11-17 07:12:31 -06:00
ReverseConnectivityBuilder.h Compile reverse connectivity builder into vtkm_cont library 2021-09-17 09:48:21 -06:00
RuntimeDeviceConfiguration.cxx Remove NUMA regions option 2023-01-30 09:53:57 -07:00
RuntimeDeviceConfiguration.h Remove NUMA regions option 2023-01-30 09:53:57 -07:00
RuntimeDeviceConfigurationOptions.cxx Remove NUMA regions option 2023-01-30 09:53:57 -07:00
RuntimeDeviceConfigurationOptions.h Remove NUMA regions option 2023-01-30 09:53:57 -07:00
RuntimeDeviceOption.cxx implement kokkos runtime device configuration 2021-08-18 13:23:30 -06:00
RuntimeDeviceOption.h implement return codes and protected virtual parsing of arguments 2021-06-23 17:58:38 +00:00
StorageError.h conslidate the license statement 2019-04-17 10:57:13 -06:00