aboutsummaryrefslogtreecommitdiffhomepage
path: root/tensorflow/core/common_runtime/device.cc
diff options
context:
space:
mode:
Diffstat (limited to 'tensorflow/core/common_runtime/device.cc')
-rw-r--r--tensorflow/core/common_runtime/device.cc37
1 files changed, 37 insertions, 0 deletions
diff --git a/tensorflow/core/common_runtime/device.cc b/tensorflow/core/common_runtime/device.cc
new file mode 100644
index 0000000000..2e3e7b6597
--- /dev/null
+++ b/tensorflow/core/common_runtime/device.cc
@@ -0,0 +1,37 @@
+#include "tensorflow/core/common_runtime/device.h"
+
+#include "tensorflow/core/framework/op_segment.h"
+#include "tensorflow/core/lib/core/errors.h"
+#include "tensorflow/core/lib/random/random.h"
+#include "tensorflow/core/platform/logging.h"
+#include "tensorflow/core/platform/port.h"
+
+namespace tensorflow {
+
+Device::Device(Env* env, const DeviceAttributes& device_attributes,
+ Allocator* device_allocator)
+ : DeviceBase(env), device_attributes_(device_attributes) {
+ CHECK(DeviceNameUtils::ParseFullName(name(), &parsed_name_))
+ << "Invalid device name: " << name();
+ rmgr_ = new ResourceMgr(parsed_name_.job);
+}
+
+Device::~Device() { delete rmgr_; }
+
+// static
+DeviceAttributes Device::BuildDeviceAttributes(
+ const string& name, DeviceType device, Bytes memory_limit,
+ BusAdjacency bus_adjacency, const string& physical_device_desc) {
+ DeviceAttributes da;
+ da.set_name(name);
+ do {
+ da.set_incarnation(random::New64());
+ } while (da.incarnation() == 0); // This proto field must not be zero
+ da.set_device_type(device.type());
+ da.set_memory_limit(memory_limit.value());
+ da.set_bus_adjacency(bus_adjacency);
+ da.set_physical_device_desc(physical_device_desc);
+ return da;
+}
+
+} // namespace tensorflow