Add GPUBackend

This commit is contained in:
Bram Veenboer
2025-08-01 14:20:32 +00:00
parent 404fbd3c02
commit b7c13be6c0
17 changed files with 233 additions and 11 deletions

23
include/trigdx/gpu.hpp Normal file
View File

@@ -0,0 +1,23 @@
#pragma once
#include <cstddef>
#include <memory>
#include "interface.hpp"
class GPUBackend : public Backend {
public:
GPUBackend();
~GPUBackend() override;
void init(size_t n = 0) override;
void compute_sinf(size_t n, const float *x, float *s) const override;
void compute_cosf(size_t n, const float *x, float *c) const override;
void compute_sincosf(size_t n, const float *x, float *s,
float *c) const override;
private:
struct Impl;
std::unique_ptr<Impl> impl;
};

View File

@@ -8,7 +8,7 @@ public:
virtual ~Backend() = default;
// Optional initialization
virtual void init() {}
virtual void init(size_t n = 0) {}
// Compute sine for n elements
virtual void compute_sinf(size_t n, const float *x, float *s) const = 0;

View File

@@ -10,7 +10,7 @@ public:
LookupBackend();
~LookupBackend() override;
void init() override;
void init(size_t n = 0) override;
void compute_sinf(size_t n, const float *x, float *s) const override;
void compute_cosf(size_t n, const float *x, float *c) const override;
void compute_sincosf(size_t n, const float *x, float *s,

View File

@@ -10,7 +10,7 @@ public:
LookupAVXBackend();
~LookupAVXBackend() override;
void init() override;
void init(size_t n = 0) override;
void compute_sinf(std::size_t n, const float *x, float *s) const override;
void compute_cosf(std::size_t n, const float *x, float *c) const override;
void compute_sincosf(std::size_t n, const float *x, float *s,