MCPcopy Create free account
hub / github.com/DeepRec-AI/DeepRec / ParseFullName

Method ParseFullName

tensorflow/core/util/device_name_utils.cc:114–185  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

112} // anonymous namespace
113
114bool DeviceNameUtils::ParseFullName(StringPiece fullname, ParsedName* p) {
115 p->Clear();
116 if (fullname == "/") {
117 return true;
118 }
119 while (!fullname.empty()) {
120 bool progress = false;
121 if (absl::ConsumePrefix(&fullname, "/job:")) {
122 p->has_job = !absl::ConsumePrefix(&fullname, "*");
123 if (p->has_job && !ConsumeJobName(&fullname, &p->job)) {
124 return false;
125 }
126 progress = true;
127 }
128 if (absl::ConsumePrefix(&fullname, "/replica:")) {
129 p->has_replica = !absl::ConsumePrefix(&fullname, "*");
130 if (p->has_replica && !ConsumeNumber(&fullname, &p->replica)) {
131 return false;
132 }
133 progress = true;
134 }
135 if (absl::ConsumePrefix(&fullname, "/task:")) {
136 p->has_task = !absl::ConsumePrefix(&fullname, "*");
137 if (p->has_task && !ConsumeNumber(&fullname, &p->task)) {
138 return false;
139 }
140 progress = true;
141 }
142 if (absl::ConsumePrefix(&fullname, "/device:")) {
143 p->has_type = !absl::ConsumePrefix(&fullname, "*");
144 if (p->has_type && !ConsumeDeviceType(&fullname, &p->type)) {
145 return false;
146 }
147 if (!absl::ConsumePrefix(&fullname, ":")) {
148 p->has_id = false;
149 } else {
150 p->has_id = !absl::ConsumePrefix(&fullname, "*");
151 if (p->has_id && !ConsumeNumber(&fullname, &p->id)) {
152 return false;
153 }
154 }
155 progress = true;
156 }
157
158 // Handle legacy naming convention for cpu and gpu.
159 if (absl::ConsumePrefix(&fullname, "/cpu:") ||
160 absl::ConsumePrefix(&fullname, "/CPU:")) {
161 p->has_type = true;
162 p->type = "CPU"; // Treat '/cpu:..' as uppercase '/device:CPU:...'
163 p->has_id = !absl::ConsumePrefix(&fullname, "*");
164 if (p->has_id && !ConsumeNumber(&fullname, &p->id)) {
165 return false;
166 }
167 progress = true;
168 }
169 if (absl::ConsumePrefix(&fullname, "/gpu:") ||
170 absl::ConsumePrefix(&fullname, "/GPU:")) {
171 p->has_type = true;

Callers

nothing calls this directly

Calls 6

ConsumeJobNameFunction · 0.85
ConsumeNumberFunction · 0.85
ConsumeDeviceTypeFunction · 0.85
ConsumePrefixFunction · 0.50
ClearMethod · 0.45
emptyMethod · 0.45

Tested by

no test coverage detected