From 2332e99abb32056528ccbdb4c4fd1f33a3a5c16e Mon Sep 17 00:00:00 2001 From: Lizzzka007 <gashchuk2011@mail.ru> Date: Wed, 23 Oct 2024 15:22:37 +0300 Subject: [PATCH] . --- Lib/memory-holder.cpp | 17 +++++++---------- Lib/memory-holder.h | 6 +++--- main.cpp | 2 ++ 3 files changed, 12 insertions(+), 13 deletions(-) diff --git a/Lib/memory-holder.cpp b/Lib/memory-holder.cpp index cd8bc17..6d2bafb 100644 --- a/Lib/memory-holder.cpp +++ b/Lib/memory-holder.cpp @@ -57,7 +57,7 @@ template bool size_comparator(const buffer<MemType::GPU>& obj, const size_t requ #endif template< MemType mem > -void* buffer<mem>::get_ptr() const +void* buffer<mem>::get_ptr() { return ptr; } @@ -80,7 +80,6 @@ buffer<mem>& buffer<mem>::operator=(buffer<mem>& other) if (this == &other) return *this; - // memproc::realloc<mem>((void*&)ptr, allocated_size, other.get_size()); std::swap(ptr, other.ptr); std::swap(allocated_size, other.allocated_size); // exchange resources between *this and other std::swap(scalar_size, other.scalar_size); @@ -137,7 +136,7 @@ std::vector<buffer<MemType::GPU> >& memory_pipline::get_memtyped_vector() #endif template< MemType mem > -int memory_pipline::get_buffer(const size_t required_size, void * ptr) +int memory_pipline::get_buffer(const size_t required_size, void *& ptr) { typename std::vector<buffer<mem>>::iterator available_buf_it; available_buf_it = std::lower_bound (get_memtyped_vector<mem>().begin(), get_memtyped_vector<mem>().end(), required_size, size_comparator<mem>); @@ -156,9 +155,9 @@ int memory_pipline::get_buffer(const size_t required_size, void * ptr) } } -template int memory_pipline::get_buffer<MemType::CPU>(const size_t required_size, void * ptr); +template int memory_pipline::get_buffer<MemType::CPU>(const size_t required_size, void *& ptr); #ifdef INCLUDE_CUDA -template int memory_pipline::get_buffer<MemType::GPU>(const size_t required_size, void * ptr); +template int memory_pipline::get_buffer<MemType::GPU>(const size_t required_size, void *& ptr); #endif template< MemType mem > @@ -172,7 +171,7 @@ template void memory_pipline::set_available<MemType::CPU>(const int id); template void memory_pipline::set_available<MemType::GPU>(const int id); #endif -memory_faucet::memory_faucet(){} +memory_pipline* memory_faucet::mem_pipe = nullptr; memory_pipline* memory_faucet::get_faucet() { @@ -183,8 +182,6 @@ memory_pipline* memory_faucet::get_faucet() return mem_pipe; } -memory_pipline* memory_faucet::mem_pipe = nullptr; - template< MemType mem > memBuf<mem>::memBuf(const size_t required_size) { @@ -196,8 +193,8 @@ memBuf<mem>::memBuf(const size_t required_size) template< MemType mem > memBuf<mem>::~memBuf() { - // memory_pipline* mem_pipe = memory_faucet::get_faucet(); - // mem_pipe->set_available<mem>(id); + memory_pipline* mem_pipe = memory_faucet::get_faucet(); + mem_pipe->set_available<mem>(id); } template< MemType mem > diff --git a/Lib/memory-holder.h b/Lib/memory-holder.h index 860576c..5c2b0a1 100644 --- a/Lib/memory-holder.h +++ b/Lib/memory-holder.h @@ -26,7 +26,7 @@ public: buffer(const size_t required_size); bool is_available() const; - void* get_ptr() const; + void* get_ptr(); bool get_status() const; size_t get_size() const; buffer<mem>& operator=(buffer<mem>& other); @@ -47,7 +47,7 @@ public: ~memory_pipline(); template< MemType mem > - int get_buffer(const size_t required_size, void * ptr); + int get_buffer(const size_t required_size, void *& ptr); template< MemType mem > std::vector<buffer<mem> >& get_memtyped_vector(); @@ -59,7 +59,7 @@ public: class memory_faucet { private: - memory_faucet(); + memory_faucet() = delete; memory_faucet(const memory_faucet&) = delete; memory_faucet& operator=(const memory_faucet&) = delete; diff --git a/main.cpp b/main.cpp index 9075451..fb05055 100644 --- a/main.cpp +++ b/main.cpp @@ -4,8 +4,10 @@ int main(void) { const size_t required_size = sizeof(float) * 100; memBuf<MemType::CPU> Buf(required_size); + memBuf<MemType::GPU> Buf_gpu(required_size); float* ptr = static_cast<float*>(Buf.ptr()); + float* ptr_gpu = static_cast<float*>(Buf_gpu.ptr()); for (int i = 0; i < 100; i++) { -- GitLab