VTK-m
2.2
|
RuntimeDeviceTracker is the central location for determining which device adapter will be active for algorithm execution. More...
#include <RuntimeDeviceTracker.h>
Public Member Functions | |
~RuntimeDeviceTracker () | |
bool | CanRunOn (DeviceAdapterId deviceId) const |
Returns true if the given device adapter is supported on the current machine. More... | |
void | ReportAllocationFailure (vtkm::cont::DeviceAdapterId deviceId, const vtkm::cont::ErrorBadAllocation &) |
Report a failure to allocate memory on a device, this will flag the device as being unusable for all future invocations. More... | |
void | ReportBadDeviceFailure (vtkm::cont::DeviceAdapterId deviceId, const vtkm::cont::ErrorBadDevice &) |
Report a ErrorBadDevice failure and flag the device as unusable. More... | |
void | ResetDevice (vtkm::cont::DeviceAdapterId deviceId) |
Reset the tracker for the given device. More... | |
void | Reset () |
Reset the tracker to its default state for default devices. More... | |
void | DisableDevice (DeviceAdapterId deviceId) |
Disable the given device. More... | |
void | ForceDevice (DeviceAdapterId deviceId) |
Disable all devices except the specified one. More... | |
bool | GetThreadFriendlyMemAlloc () const |
Get/Set use of thread-friendly memory allocation for a device. More... | |
void | SetThreadFriendlyMemAlloc (bool state) |
Get/Set use of thread-friendly memory allocation for a device. More... | |
void | CopyStateFrom (const vtkm::cont::RuntimeDeviceTracker &tracker) |
Copies the state from the given device. More... | |
void | SetAbortChecker (const std::function< bool()> &func) |
Set/Clear the abort checker functor. More... | |
void | ClearAbortChecker () |
Set/Clear the abort checker functor. More... | |
bool | CheckForAbortRequest () const |
void | PrintSummary (std::ostream &out) const |
Produce a human-readable report on the state of the runtime device tracker. More... | |
Private Member Functions | |
RuntimeDeviceTracker (detail::RuntimeDeviceTrackerInternals *details, bool reset) | |
RuntimeDeviceTracker (const RuntimeDeviceTracker &)=delete | |
RuntimeDeviceTracker & | operator= (const RuntimeDeviceTracker &)=delete |
void | CheckDevice (vtkm::cont::DeviceAdapterId deviceId) const |
void | SetDeviceState (vtkm::cont::DeviceAdapterId deviceId, bool state) |
void | LogEnabledDevices () const |
Private Attributes | |
detail::RuntimeDeviceTrackerInternals * | Internals |
Friends | |
class | ScopedRuntimeDeviceTracker |
vtkm::cont::RuntimeDeviceTracker & | GetRuntimeDeviceTracker () |
Get the RuntimeDeviceTracker for the current thread. More... | |
RuntimeDeviceTracker is the central location for determining which device adapter will be active for algorithm execution.
Many features in VTK-m will attempt to run algorithms on the "best available device." This generally is determined at runtime as some backends require specific hardware, or failures in one device are recorded and that device is disabled.
While vtkm::cont::RunimeDeviceInformation reports on the existence of a device being supported, this tracks on a per-thread basis when worklets fail, why the fail, and will update the list of valid runtime devices based on that information.
vtkm::cont::RuntimeDeviceTracker::~RuntimeDeviceTracker | ( | ) |
|
private |
|
privatedelete |
bool vtkm::cont::RuntimeDeviceTracker::CanRunOn | ( | DeviceAdapterId | deviceId | ) | const |
Returns true if the given device adapter is supported on the current machine.
|
private |
bool vtkm::cont::RuntimeDeviceTracker::CheckForAbortRequest | ( | ) | const |
void vtkm::cont::RuntimeDeviceTracker::ClearAbortChecker | ( | ) |
Set/Clear the abort checker functor.
If set the abort checker functor is called by vtkm::cont::TryExecute()
before scheduling a task on a device from the associated the thread. If the functor returns true
, an exception is thrown.
void vtkm::cont::RuntimeDeviceTracker::CopyStateFrom | ( | const vtkm::cont::RuntimeDeviceTracker & | tracker | ) |
Copies the state from the given device.
This is a convenient way to allow the RuntimeDeviceTracker
on one thread copy the behavior from another thread.
void vtkm::cont::RuntimeDeviceTracker::DisableDevice | ( | DeviceAdapterId | deviceId | ) |
Disable the given device.
The main intention of RuntimeDeviceTracker
is to keep track of what devices are working for VTK-m. However, it can also be used to turn devices on and off. Use this method to disable (turn off) a given device. Use ResetDevice()
to turn the device back on (if it is supported).
Passing DeviceAdapterTagAny to this will disable all devices.
void vtkm::cont::RuntimeDeviceTracker::ForceDevice | ( | DeviceAdapterId | deviceId | ) |
Disable all devices except the specified one.
The main intention of RuntimeDeviceTracker
is to keep track of what devices are working for VTK-m. However, it can also be used to turn devices on and off. Use this method to disable all devices except one to effectively force VTK-m to use that device. Either pass the DeviceAdapterTagAny to this function or call Reset()
to restore all devices to their default state.
This method will throw a vtkm::cont::ErrorBadValue
if the given device does not exist on the system.
bool vtkm::cont::RuntimeDeviceTracker::GetThreadFriendlyMemAlloc | ( | ) | const |
Get/Set use of thread-friendly memory allocation for a device.
|
private |
|
privatedelete |
void vtkm::cont::RuntimeDeviceTracker::PrintSummary | ( | std::ostream & | out | ) | const |
Produce a human-readable report on the state of the runtime device tracker.
|
inline |
Report a failure to allocate memory on a device, this will flag the device as being unusable for all future invocations.
|
inline |
Report a ErrorBadDevice failure and flag the device as unusable.
void vtkm::cont::RuntimeDeviceTracker::Reset | ( | ) |
Reset the tracker to its default state for default devices.
Will discard any updates caused by reported failures.
void vtkm::cont::RuntimeDeviceTracker::ResetDevice | ( | vtkm::cont::DeviceAdapterId | deviceId | ) |
Reset the tracker for the given device.
This will discard any updates caused by reported failures. Passing DeviceAdapterTagAny to this will reset all devices (same as Reset()
).
void vtkm::cont::RuntimeDeviceTracker::SetAbortChecker | ( | const std::function< bool()> & | func | ) |
Set/Clear the abort checker functor.
If set the abort checker functor is called by vtkm::cont::TryExecute()
before scheduling a task on a device from the associated the thread. If the functor returns true
, an exception is thrown.
|
private |
void vtkm::cont::RuntimeDeviceTracker::SetThreadFriendlyMemAlloc | ( | bool | state | ) |
Get/Set use of thread-friendly memory allocation for a device.
|
friend |
Get the RuntimeDeviceTracker
for the current thread.
Many features in VTK-m will attempt to run algorithms on the "best available device." This often is determined at runtime as failures in one device are recorded and that device is disabled. To prevent having to check over and over again, VTK-m uses per thread runtime device tracker so that these choices are marked and shared.
|
friend |
|
private |