ecsimsw
TF_source) Opkernel 본문
///"tensorflow/core/framework/op_kernel.cc"
// TODO(mrry): Convert to std::make_unique when available.
OpKernel::OpKernel(OpKernelConstruction* context)
: OpKernel(context,
std::unique_ptr(new NodeDef(context->def()))) {}
OpKernel::OpKernel(OpKernelConstruction* context,
std::unique_ptr node_def)
: def_(std::move(node_def)),
input_types_(context->input_types().begin(),
context->input_types().end()),
input_memory_types_(context->input_memory_types().begin(),
context->input_memory_types().end()),
output_types_(context->output_types().begin(),
context->output_types().end()),
output_memory_types_(context->output_memory_types().begin(),
context->output_memory_types().end()),
graph_def_version_(context->graph_def_version()),
is_internal_(str_util::StartsWith(type_string(), "_")),
input_name_map_(context->num_inputs()),
output_name_map_(context->num_outputs()) {
OP_REQUIRES_OK(context,
NameRangesForNode(*def_, *context->op_def_, &input_name_map_,
&output_name_map_));
OP_REQUIRES_OK(context, CheckOpDeprecation(*context->op_def_,
context->graph_def_version()));
// Kernels executing on GPU/SYCL tie very few resources on the CPU where the
// scheduler runs: we consider them as inexpensive.
expensive_ = context->device_type() != DeviceType(DEVICE_GPU) &&
context->device_type() != DeviceType(DEVICE_SYCL);
}
OpKernel::~OpKernel() {}
const string& OpKernel::name() const { return def_->name(); }
const string& OpKernel::type_string() const { return def_->op(); }
const string& OpKernel::requested_device() const { return def_->device(); }
const string& OpKernel::requested_input(int i) const { return def_->input(i); }
Status OpKernel::InputRange(StringPiece input_name, int* start,
int* stop) const {
const auto result = input_name_map_.find(input_name);
if (result == input_name_map_.end()) {
return errors::InvalidArgument("Unknown input name: ", input_name);
} else {
*start = result->second.first;
*stop = result->second.second;
return Status::OK();
}
}
'Machine Learning > tf_source' 카테고리의 다른 글
What's the difference between user registers and kernel registers? (0) | 2019.04.20 |
---|---|
TF_source ) KernelRegistry (0) | 2019.04.20 |
TF_source) OpkernelConstruction (0) | 2019.04.12 |
TF_source ) Factory (0) | 2019.04.08 |
TF_source ) OpKernelRegistrar (0) | 2019.04.07 |