#pragma once #include #include #include #include #include #include "./StreamingBasisFunction.h" #include "../../sse_mathfun.h" namespace NeuralNetwork { namespace BasisFunction { class Linear: public StreamingBasisFunction { public: Linear() {} inline virtual float computeStreaming(const std::vector& weights, const std::vector& input) override { size_t inputSize=input.size(); size_t alignedPrev=inputSize-inputSize%4; const float* weightsData=weights.data(); const float* inputData=input.data(); vec4f partialSolution; partialSolution.sse =_mm_setzero_ps(); //TODO prefetch ?? for(register size_t k=0;k& weights, const std::vector& input) override { register float tmp = 0; size_t inputSize=input.size(); for(size_t k=0;k