#pragma once #include #include #include // TensorList whyyyyy namespace at { // Are you here because you're wondering why DeviceGuard(tensor) no // longer works? For code organization reasons, we have temporarily(?) // removed this constructor from DeviceGuard. The new way to // spell it is: // // OptionalDeviceGuard guard(device_of(tensor)); /// Return the Device of a Tensor, if the Tensor is defined. inline optional device_of(const Tensor& t) { if (t.defined()) { return make_optional(t.device()); } else { return nullopt; } } /// Return the Device of a TensorList, if the list is non-empty and /// the first Tensor is defined. (This function implicitly assumes /// that all tensors in the list have the same device.) inline optional device_of(TensorList t) { if (!t.empty()) { return device_of(t.front()); } else { return nullopt; } } } // namespace at