#pragma once #include "backend.hpp" #include "tensor.hpp" namespace CUDANet::Backend { class CPU : public Backend { public: // Memory management void* allocate(size_t bytes) override; void deallocate(void* ptr) override; // Tensor ops void print(const CUDANet::Tensor &input) override; void zero(CUDANet::Tensor &input) override; void sum(const CUDANet::Tensor &input, CUDANet::Tensor &sum) override; void max(const CUDANet::Tensor &input, CUDANet::Tensor &max) override; // Layer ops void relu(CUDANet::Tensor &tensor) override; void sigmoid(CUDANet::Tensor &tensor) override; void softmax(CUDANet::Tensor &tensor, CUDANet::Tensor &temp_max, CUDANet::Tensor &temp_sum) override; }; }