mirror of
https://github.com/lordmathis/CUDANet.git
synced 2025-12-22 14:24:22 +00:00
WIP Migrate Activation to Tensor
This commit is contained in:
@@ -13,9 +13,10 @@ public:
|
||||
virtual void* allocate(size_t bytes) = 0;
|
||||
virtual void deallocate(void* ptr) = 0;
|
||||
|
||||
virtual void copyToDevice(void* devicePtr, const void* hostPtr, size_t bytes) = 0;
|
||||
virtual void copyToHost(void* hostPtr, const void* devicePtr, size_t bytes) = 0;
|
||||
|
||||
// Layer operations
|
||||
virtual void relu(CUDANet::Backend::Tensor &tensor) = 0;
|
||||
virtual void sigmoid(CUDANet::Backend::Tensor &tensor) = 0;
|
||||
virtual void softmax(CUDANet::Backend::Tensor &tensor, CUDANet::Backend::Tensor &temp_max, CUDANet::Backend::Tensor &temp_sum) = 0;
|
||||
};
|
||||
|
||||
} // namespace CUDANet::Backend
|
||||
23
include/backend/cuda_backend.cuh
Normal file
23
include/backend/cuda_backend.cuh
Normal file
@@ -0,0 +1,23 @@
|
||||
#pragma once
|
||||
|
||||
#include "backend/backend.hpp"
|
||||
#include "backend/tensor.hpp"
|
||||
|
||||
namespace CUDANet::Backend {
|
||||
|
||||
class CUDABackend : public IBackend {
|
||||
public:
|
||||
// Memory management
|
||||
void* allocate(size_t bytes) override;
|
||||
void deallocate(void* ptr) override;
|
||||
|
||||
// Layer operations
|
||||
void relu(CUDANet::Backend::Tensor &tensor) override;
|
||||
void sigmoid(CUDANet::Backend::Tensor &tensor) override;
|
||||
void softmax(CUDANet::Backend::Tensor &tensor, CUDANet::Backend::Tensor &temp_max, CUDANet::Backend::Tensor &temp_sum) override;
|
||||
|
||||
private:
|
||||
static constexpr int BLOCK_SIZE = 256;
|
||||
};
|
||||
|
||||
} // namespace CUDANet::Backend
|
||||
@@ -18,6 +18,8 @@ typedef std::vector<size_t> Shape;
|
||||
class Tensor
|
||||
{
|
||||
public:
|
||||
|
||||
Tensor() = default;
|
||||
Tensor(Shape shape, DType dtype, IBackend* backend);
|
||||
~Tensor();
|
||||
|
||||
@@ -27,6 +29,10 @@ public:
|
||||
void toDevice(const void* hostPtr);
|
||||
void toHost(void* hostPtr);
|
||||
|
||||
size_t size() const;
|
||||
size_t numel() const;
|
||||
void* data() const;
|
||||
|
||||
private:
|
||||
Shape shape;
|
||||
DType dtype;
|
||||
|
||||
Reference in New Issue
Block a user