blob: 2e3e7b6597e1ead31e762bd9067ff8d8bf64b640 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
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
|