1syntax = "proto3"; 2 3package tensorflow; 4option cc_enable_arenas = true; 5option java_outer_classname = "KernelDefProtos"; 6option java_multiple_files = true; 7option java_package = "org.tensorflow.framework"; 8option go_package = "github.com/tensorflow/tensorflow/tensorflow/go/core/framework"; 9import "tensorflow/core/framework/attr_value.proto"; 10 11message KernelDef { 12 // Must match the name of an Op. 13 string op = 1; 14 15 // Type of device this kernel runs on. 16 string device_type = 2; 17 18 message AttrConstraint { 19 // Name of an attr from the Op. 20 string name = 1; 21 22 // A list of values that this kernel supports for this attr. 23 // Like OpDef.AttrDef.allowed_values, except for kernels instead of Ops. 24 AttrValue allowed_values = 2; 25 } 26 repeated AttrConstraint constraint = 3; 27 28 // Names of the Op's input_/output_args that reside in host memory 29 // instead of device memory. 30 repeated string host_memory_arg = 4; 31 32 // This allows experimental kernels to be registered for an op that 33 // won't be used unless the user specifies a "_kernel" attr with 34 // value matching this. 35 string label = 5; 36 37 // Prioritization of kernel amongst different devices. By default we assume 38 // priority is 0. The higher the priority the better. By default (i.e. if 39 // this is not set), we prefer GPU kernels over CPU. 40 int32 priority = 6; 41} 42 43// A collection of KernelDefs 44message KernelList { 45 repeated KernelDef kernel = 1; 46}; 47