#pragma once #include "ling3/model_package.h" #include "ling3/w4_linear.h" #include #include namespace ling3 { // Keeps the original W4 path and an explicit experimental official-weight bridge. class Linear { public: Linear(const ModelPackage &,const std::string &,W4LinearConfig); ~Linear(); W4RunTimings Run(std::span,std::span); W4RunTimings RunBatch(std::span,std::size_t,std::span); W4RunTimings RunBatchWithWeights(std::span,std::size_t,const Linear &,std::span); W4RunTimings RunBatchQuantizedRows(std::span,std::span,std::span,const Linear &,std::span); void PrepareBatch(std::size_t,bool indexed=false); float PrepareInput(std::span); W4RunTimings RunPrepared(float,std::span); void ShareInputFrom(Linear &); void SetSingleCore(int); private: struct Impl; std::unique_ptr impl_; }; }