public void Forward(AddLayerArgument argument, ForwardContext context) { var srcA = MemoryMarshal.Cast <byte, float>(context.GetMainRamAt((int)argument.MainMemoryInputAAddress)); var srcB = MemoryMarshal.Cast <byte, float>(context.GetMainRamAt((int)argument.MainMemoryInputBAddress)); var dest = MemoryMarshal.Cast <byte, float>(context.GetMainRamAt((int)argument.MainMemoryOutputAddress)); for (int oc = 0; oc < argument.Count; oc++) { dest[oc] = srcA[oc] + srcB[oc]; } }
public void Infer(Add layer, AddLayerArgument argument, InferenceContext context) { var inputAAlloc = context.MainMemoryMap[layer.InputA.Connection.From]; var inputBAlloc = context.MainMemoryMap[layer.InputB.Connection.From]; var outputAlloc = context.MainMemoryMap[layer.Output]; argument.Flags = K210LayerFlags.MainMemoryOutput; argument.MainMemoryInputAAddress = inputAAlloc.GetAddress(); argument.MainMemoryInputBAddress = inputBAlloc.GetAddress(); argument.MainMemoryOutputAddress = outputAlloc.GetAddress(); }
public AddLayerArgument DeserializeBin(int offset, K210BinDeserializeContext context) { var sr = context.GetReaderAt(offset); var argument = new AddLayerArgument { Flags = sr.Read <K210LayerFlags>(), MainMemoryInputAAddress = sr.Read <uint>(), MainMemoryInputBAddress = sr.Read <uint>(), MainMemoryOutputAddress = sr.Read <uint>(), Count = sr.Read <uint>() }; return(argument); }