mirror of
https://gitlab.kitware.com/vtk/vtk-m
synced 2024-10-05 01:49:02 +00:00
Compare commits
2 Commits
359a906f04
...
955582b341
Author | SHA1 | Date | |
---|---|---|---|
|
955582b341 | ||
|
310579b9a7 |
@ -226,50 +226,70 @@ InitializeResult Initialize(int& argc, char* argv[], InitializeOptions opts)
|
||||
vtkm::cont::DeviceAdapterTagAny{}, runtimeDeviceOptions, argc, argv);
|
||||
}
|
||||
|
||||
// Check for device on command line.
|
||||
if (options[opt::OptionIndex::DEVICE])
|
||||
{
|
||||
const char* arg = options[opt::OptionIndex::DEVICE].arg;
|
||||
auto id = vtkm::cont::make_DeviceAdapterId(arg);
|
||||
if (id != vtkm::cont::DeviceAdapterTagAny{})
|
||||
{
|
||||
vtkm::cont::GetRuntimeDeviceTracker().ForceDevice(id);
|
||||
}
|
||||
else
|
||||
{
|
||||
vtkm::cont::GetRuntimeDeviceTracker().Reset();
|
||||
}
|
||||
config.Device = id;
|
||||
config.Device = vtkm::cont::make_DeviceAdapterId(arg);
|
||||
}
|
||||
else if (std::getenv("VTKM_DEVICE"))
|
||||
// If not on command line, check for device in environment variable.
|
||||
if (config.Device == vtkm::cont::DeviceAdapterTagUndefined{})
|
||||
{
|
||||
auto id = vtkm::cont::make_DeviceAdapterId(std::getenv("VTKM_DEVICE"));
|
||||
if (id != vtkm::cont::DeviceAdapterTagAny{})
|
||||
const char* deviceEnv = std::getenv("VTKM_DEVICE");
|
||||
if (deviceEnv != nullptr)
|
||||
{
|
||||
vtkm::cont::GetRuntimeDeviceTracker().ForceDevice(id);
|
||||
auto id = vtkm::cont::make_DeviceAdapterId(std::getenv("VTKM_DEVICE"));
|
||||
if (VtkmDeviceArg::DeviceIsAvailable(id))
|
||||
{
|
||||
config.Device = id;
|
||||
}
|
||||
else
|
||||
{
|
||||
// Got invalid device. Log an error, but continue to do the default action for
|
||||
// the device (i.e., ignore the environment variable setting).
|
||||
VTKM_LOG_S(vtkm::cont::LogLevel::Error,
|
||||
"Invalid device `"
|
||||
<< deviceEnv
|
||||
<< "` specified in VTKM_DEVICE environment variable. Ignoring.");
|
||||
VTKM_LOG_S(vtkm::cont::LogLevel::Error,
|
||||
"Valid devices are: " << VtkmDeviceArg::GetValidDeviceNames());
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
vtkm::cont::GetRuntimeDeviceTracker().Reset();
|
||||
}
|
||||
config.Device = id;
|
||||
}
|
||||
else if ((opts & InitializeOptions::DefaultAnyDevice) != InitializeOptions::None)
|
||||
// If still not defined, check to see if "any" device should be added.
|
||||
if ((config.Device == vtkm::cont::DeviceAdapterTagUndefined{}) &&
|
||||
(opts & InitializeOptions::DefaultAnyDevice) != InitializeOptions::None)
|
||||
{
|
||||
vtkm::cont::GetRuntimeDeviceTracker().Reset();
|
||||
config.Device = vtkm::cont::DeviceAdapterTagAny{};
|
||||
}
|
||||
else if ((opts & InitializeOptions::RequireDevice) != InitializeOptions::None)
|
||||
// Set the state for the device selected.
|
||||
if (config.Device == vtkm::cont::DeviceAdapterTagUndefined{})
|
||||
{
|
||||
auto devices = VtkmDeviceArg::GetValidDeviceNames();
|
||||
VTKM_LOG_S(vtkm::cont::LogLevel::Error, "Device not given on command line.");
|
||||
std::cerr << "Target device must be specified via --vtkm-device.\n"
|
||||
"Valid devices: "
|
||||
<< devices << std::endl;
|
||||
if ((opts & InitializeOptions::AddHelp) != InitializeOptions::None)
|
||||
if ((opts & InitializeOptions::RequireDevice) != InitializeOptions::None)
|
||||
{
|
||||
std::cerr << config.Usage;
|
||||
auto devices = VtkmDeviceArg::GetValidDeviceNames();
|
||||
VTKM_LOG_S(vtkm::cont::LogLevel::Fatal, "Device not given on command line.");
|
||||
std::cerr << "Target device must be specified via --vtkm-device.\n"
|
||||
"Valid devices: "
|
||||
<< devices << std::endl;
|
||||
if ((opts & InitializeOptions::AddHelp) != InitializeOptions::None)
|
||||
{
|
||||
std::cerr << config.Usage;
|
||||
}
|
||||
exit(1);
|
||||
}
|
||||
exit(1);
|
||||
else
|
||||
{
|
||||
// No device specified. Do nothing and let VTK-m decide what it is going to do.
|
||||
}
|
||||
}
|
||||
else if (config.Device == vtkm::cont::DeviceAdapterTagAny{})
|
||||
{
|
||||
vtkm::cont::GetRuntimeDeviceTracker().Reset();
|
||||
}
|
||||
else
|
||||
{
|
||||
vtkm::cont::GetRuntimeDeviceTracker().ForceDevice(config.Device);
|
||||
}
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user