def InsertRemoveForeignCallbackInstruction(self, object_id, callback): unique_callback_id = python_callback.GetIdForRegisteredCallback(callback) instruction = instr_util.InstructionProto() instruction.instr_type_name = "RemoveForeignCallback" instruction.operand.append(_DelObjectOperand(object_id)) instruction.operand.append(_Int64Operand(unique_callback_id)) self.instruction_list_.instruction.append(instruction)
def _StatefulCallOpKernel( self, instr_name, parallel_desc_sym, opkernel_object, op_node_signature_sym, const_operand_blob_objects, mut1_operand_blob_objects, mut2_operand_blob_objects, ): instruction = instr_util.InstructionProto() instruction.instr_type_name = "%s.%s" % ( parallel_desc_sym.device_tag, instr_name, ) instruction.parallel_desc_symbol_id = parallel_desc_sym.symbol_id instruction.operand.append(_MutOperand(opkernel_object.object_id)) instruction.operand.append(_SymbolOperand(op_node_signature_sym.symbol_id)) instruction.operand.append(_OperandSeparator()) for ibn_sym, _ in const_operand_blob_objects: instruction.operand.append(_SymbolOperand(ibn_sym.symbol_id)) for _, blob_object in const_operand_blob_objects: instruction.operand.append(_ConstOperand(blob_object.object_id)) instruction.operand.append(_OperandSeparator()) for obn_sym, _ in mut1_operand_blob_objects: instruction.operand.append(_SymbolOperand(obn_sym.symbol_id)) for _, blob_object in mut1_operand_blob_objects: instruction.operand.append(_MutOperand(blob_object.object_id)) instruction.operand.append(_OperandSeparator()) for obn_sym, _ in mut2_operand_blob_objects: instruction.operand.append(_SymbolOperand(obn_sym.symbol_id)) for _, blob_object in mut2_operand_blob_objects: instruction.operand.append(_Mut2Operand(blob_object.object_id)) self.instruction_list_.instruction.append(instruction)
def _NewSymbolId(self): symbol_id = self.id_generator_.NewSymbolId() instruction = instr_util.InstructionProto() instruction.instr_type_name = "NewSymbol" instruction.operand.append(_Int64Operand(symbol_id)) self.instruction_list_.instruction.append(instruction) return symbol_id
def _NewObjectId(self, parallel_desc_sym): object_id = self.id_generator_.NewObjectId() instruction = instr_util.InstructionProto() instruction.instr_type_name = "NewObject" instruction.parallel_desc_symbol_id = parallel_desc_sym.symbol_id instruction.operand.append(_Int64Operand(object_id)) self.instruction_list_.instruction.append(instruction) return object_id
def _NewScopeSymbol(self, scope_proto): instruction = instr_util.InstructionProto() instruction.instr_type_name = "InitScopeSymbol" instruction.operand.append(_InitSymbolOperand(scope_proto.symbol_id)) self.instruction_list_.instruction.append(instruction) eager_symbol = eager_symbol_util.EagerSymbol() eager_symbol.symbol_id = scope_proto.symbol_id eager_symbol.scope_symbol.CopyFrom(scope_proto) self.eager_symbol_list_.eager_symbol.append(eager_symbol)
def _NewParallelConfSymbol(self, symbol_id, parallel_conf): instruction = instr_util.InstructionProto() instruction.instr_type_name = "NewParallelDescSymbol" instruction.operand.append(_Int64Operand(symbol_id)) self.instruction_list_.instruction.append(instruction) eager_symbol = eager_symbol_util.EagerSymbol() eager_symbol.symbol_id = symbol_id eager_symbol.parallel_conf_symbol.CopyFrom(parallel_conf) self.eager_symbol_list_.eager_symbol.append(eager_symbol)
def _InitOpNodeSignatureDescSymbol(self, symbol_id, op_node_signature): instruction = instr_util.InstructionProto() instruction.instr_type_name = "InitOpNodeSignatureDescSymbol" instruction.operand.append(_InitSymbolOperand(symbol_id)) self.instruction_list_.instruction.append(instruction) eager_symbol = eager_symbol_util.EagerSymbol() eager_symbol.symbol_id = symbol_id eager_symbol.op_node_signature_symbol.CopyFrom(op_node_signature) self.eager_symbol_list_.eager_symbol.append(eager_symbol)
def FeedBlob(self, blob_object, feeder): unique_callback_id = python_callback.GetIdForRegisteredCallback(feeder) instruction = instr_util.InstructionProto() device_tag = blob_object.parallel_desc_symbol.device_tag instruction.instr_type_name = "%s.%s" % (device_tag, "FeedBlob") instruction.parallel_desc_symbol_id = blob_object.parallel_desc_symbol.symbol_id instruction.operand.append(_Mut2Operand(blob_object.object_id)) instruction.operand.append(_Int64Operand(unique_callback_id)) self.instruction_list_.instruction.append(instruction)
def _BroadcastObjectReference(self, sole_mirrored_object, parallel_desc_sym): object_id = self.id_generator_.NewObjectId() instruction = instr_util.InstructionProto() instruction.instr_type_name = "BroadcastObjectReference" instruction.parallel_desc_symbol_id = parallel_desc_sym.symbol_id instruction.operand.append(_Int64Operand(object_id)) instruction.operand.append(_Int64Operand(sole_mirrored_object.object_id)) self.instruction_list_.instruction.append(instruction) return object_id
def _InitOpConfSymbol(self, symbol_id, op_conf): instruction = instr_util.InstructionProto() instruction.instr_type_name = "InitOperatorConfSymbol" instruction.operand.append(_InitSymbolOperand(symbol_id)) self.instruction_list_.instruction.append(instruction) eager_symbol = eager_symbol_util.EagerSymbol() eager_symbol.symbol_id = symbol_id eager_symbol.op_conf_symbol.CopyFrom(op_conf) self.eager_symbol_list_.eager_symbol.append(eager_symbol)
def _InitStringSymbol(self, symbol_id, string): instruction = instr_util.InstructionProto() instruction.instr_type_name = "InitStringSymbol" instruction.operand.append(_InitSymbolOperand(symbol_id)) self.instruction_list_.instruction.append(instruction) eager_symbol = eager_symbol_util.EagerSymbol() eager_symbol.symbol_id = symbol_id eager_symbol.string_symbol = string self.eager_symbol_list_.eager_symbol.append(eager_symbol)
def _NewOpKernelObject(self, parallel_desc_symbol, job_desc_sym, op_conf_sym): object_id = self._NewObjectId(parallel_desc_symbol) instruction = instr_util.InstructionProto() instruction.instr_type_name = "InitOpKernelObject" instruction.parallel_desc_symbol_id = parallel_desc_symbol.symbol_id instruction.operand.append(_SymbolOperand(job_desc_sym.symbol_id)) instruction.operand.append(_SymbolOperand(op_conf_sym.symbol_id)) instruction.operand.append(_MutOperand(object_id)) self.instruction_list_.instruction.append(instruction) return object_id
def _ReplaceMirrored(self, parallel_desc_sym, lhs_objects, rhs_objects): instruction = instr_util.InstructionProto() instruction.instr_type_name = "ReplaceMirrored" instruction.parallel_desc_symbol_id = parallel_desc_sym.symbol_id for lhs_object in lhs_objects: instruction.operand.append(_Int64Operand(lhs_object.object_id)) instruction.operand.append(_OperandSeparator()) for rhs_object in rhs_objects: instruction.operand.append(_Int64Operand(rhs_object.object_id)) self.instruction_list_.instruction.append(instruction)
def _LazyReference(self, blob_object, interface_op_name): instruction = instr_util.InstructionProto() device_tag = blob_object.parallel_desc_symbol.device_tag instruction.instr_type_name = "{}.LazyReference".format(device_tag) instruction.parallel_desc_symbol_id = blob_object.parallel_desc_symbol.symbol_id instruction.operand.append(_MutOperand(blob_object.object_id)) interface_op_name_sym = self.GetSymbol4String( blob_object.op_arg_blob_attr.logical_blob_name) instruction.operand.append( _SymbolOperand(interface_op_name_sym.symbol_id)) self.instruction_list_.instruction.append(instruction)
def _BuildRecvInstruction( self, src_parallel_desc_symbol, dst_blob_object, token_ids ): instruction = instr_util.InstructionProto() instruction.instr_type_name = "ReceiveBlob" instruction.parallel_desc_symbol_id = ( dst_blob_object.parallel_desc_symbol.symbol_id ) instruction.operand.append(_SymbolOperand(src_parallel_desc_symbol.symbol_id)) instruction.operand.append(_Mut2Operand(dst_blob_object.object_id)) instruction.operand.append(_OperandSeparator()) for token_id in token_ids[0]: instruction.operand.append(_Uint64Operand(token_id)) instruction.operand.append(_OperandSeparator()) for token_id in token_ids[1]: instruction.operand.append(_Uint64Operand(token_id)) self.instruction_list_.instruction.append(instruction)
def _DeleteObject(self, blob_object): instruction = instr_util.InstructionProto() instruction.instr_type_name = "DeleteObject" instruction.operand.append(_DelObjectOperand(blob_object.object_id)) self.instruction_list_.instruction.append(instruction)
def _TryClearObject(self, obj): instruction = instr_util.InstructionProto() instruction.instr_type_name = "TryClearObject" instruction.parallel_desc_symbol_id = obj.parallel_desc_symbol.symbol_id instruction.operand.append(_MutOperand(obj.object_id)) self.instruction_list_.instruction.append(instruction)
def _CudaHostUnregisterBlob(self, blob_object): instruction = instr_util.InstructionProto() instruction.instr_type_name = "CudaHostUnregisterBlob" instruction.parallel_desc_symbol_id = blob_object.parallel_desc_symbol.symbol_id instruction.operand.append(_MutOperand(blob_object.object_id)) self.instruction_list_.instruction.append(instruction)