Пример #1
0
        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];
            }
        }
Пример #2
0
        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();
        }
Пример #3
0
        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);
        }