diff --git a/Lib/memory-holder.cpp b/Lib/memory-holder.cpp index 967e054ddf8a85660cee4b52f4e76e3ec467cafc..e4dc3b546707dbc16e4cdc1691600c65bcfb7eed 100644 --- a/Lib/memory-holder.cpp +++ b/Lib/memory-holder.cpp @@ -3,7 +3,7 @@ #ifdef INCLUDE_CUDA #include "MemoryProcessing.cuh" #endif -#include <cstdio> + #include <algorithm> template< MemType mem > @@ -184,7 +184,6 @@ std::vector<buffer<MemType::GPU> >& memory_pipline_base::get_memtyped_vector() template< MemType mem > void memory_pipline_base::set_available(const int id) { - // printf("Id %d, size = %d\n", id, get_memtyped_vector<mem>().size()); get_memtyped_vector<mem>()[id].set_status(true); } @@ -279,7 +278,6 @@ int memory_pipline<choose_type>::get_buffer(const size_t required_size, void *& buff_vec.push_back(buffer<mem>(required_size)); ptr = buff_vec.back().get_ptr(); - // printf("buff_vec.size() %d\n", buff_vec.size()); int id = buff_vec.size() - 1; return id; } @@ -348,40 +346,24 @@ template int memory_pipline<buf_choose_policy::find_best_unsorted>::get_buffer<M template int memory_pipline<buf_choose_policy::find_best_unsorted>::get_buffer<MemType::GPU>(const size_t required_size, void *& ptr); #endif - -memory_pipline<buf_choose_policy::naiv>* memory_faucet::mem_pipe_naiv = nullptr; -memory_pipline<buf_choose_policy::sorted_vec>* memory_faucet::mem_pipe_sorted = nullptr; -memory_pipline<buf_choose_policy::find_best_unsorted>* memory_faucet::mem_pipe_unsorted = nullptr; - -template<buf_choose_policy choose_type> -memory_pipline<choose_type>* memory_faucet::get_faucet() +template< > +memory_pipline<buf_choose_policy::naiv>& memory_faucet::get_faucet() { - if(mem_pipe_naiv == nullptr) - { - mem_pipe_naiv = new memory_pipline<choose_type>(); - } + static memory_pipline<buf_choose_policy::naiv> mem_pipe_naiv; return mem_pipe_naiv; } -template memory_pipline<buf_choose_policy::naiv>* memory_faucet::get_faucet(); - template< > -memory_pipline<buf_choose_policy::sorted_vec>* memory_faucet::get_faucet() +memory_pipline<buf_choose_policy::sorted_vec>& memory_faucet::get_faucet() { - if(mem_pipe_sorted == nullptr) - { - mem_pipe_sorted = new memory_pipline<buf_choose_policy::sorted_vec>(); - } + static memory_pipline<buf_choose_policy::sorted_vec> mem_pipe_sorted; return mem_pipe_sorted; } template< > -memory_pipline<buf_choose_policy::find_best_unsorted>* memory_faucet::get_faucet() +memory_pipline<buf_choose_policy::find_best_unsorted>& memory_faucet::get_faucet() { - if(mem_pipe_unsorted == nullptr) - { - mem_pipe_unsorted = new memory_pipline<buf_choose_policy::find_best_unsorted>(); - } + static memory_pipline<buf_choose_policy::find_best_unsorted> mem_pipe_unsorted; return mem_pipe_unsorted; } @@ -389,18 +371,16 @@ memory_pipline<buf_choose_policy::find_best_unsorted>* memory_faucet::get_faucet template< MemType mem, buf_choose_policy choose_type > memBuf<mem, choose_type>::memBuf(const size_t required_size) { - memory_pipline<choose_type>* mem_pipe = memory_faucet::get_faucet<choose_type>(); - id = mem_pipe->template get_buffer<mem>(required_size, buf); - // printf("mem %d, choose_type %d, kkddd %d\n", mem, choose_type, mem_pipe->template get_memtyped_vector<mem>().size()); + memory_pipline<choose_type>& mem_pipe = memory_faucet::get_faucet<choose_type>(); + id = mem_pipe.template get_buffer<mem>(required_size, buf); size = required_size; } template< MemType mem, buf_choose_policy choose_type > memBuf<mem, choose_type>::~memBuf() { - memory_pipline<choose_type>* mem_pipe = memory_faucet::get_faucet<choose_type>(); - // printf("mem %d, choose_type %d, kk %d\n", mem, choose_type, mem_pipe->template get_memtyped_vector<mem>().size()); - mem_pipe->template set_available<mem>(id); + memory_pipline<choose_type>& mem_pipe = memory_faucet::get_faucet<choose_type>(); + mem_pipe.template set_available<mem>(id); } template< MemType mem, buf_choose_policy choose_type > diff --git a/Lib/memory-holder.h b/Lib/memory-holder.h index 96b86845f0fa56453994c08abdf0331784a7bab3..0e236b611cdc43aab050781da42ca16a07bff12d 100644 --- a/Lib/memory-holder.h +++ b/Lib/memory-holder.h @@ -117,14 +117,10 @@ private: memory_faucet(const memory_faucet&) = delete; memory_faucet& operator=(const memory_faucet&) = delete; - static memory_pipline<buf_choose_policy::naiv>* mem_pipe_naiv; - static memory_pipline<buf_choose_policy::sorted_vec>* mem_pipe_sorted; - static memory_pipline<buf_choose_policy::find_best_unsorted>* mem_pipe_unsorted; - public: template<buf_choose_policy choose_type = buf_choose_policy::naiv> - static memory_pipline<choose_type>* get_faucet(); + static memory_pipline<choose_type>& get_faucet(); }; template< MemType mem, buf_choose_policy choose_type = buf_choose_policy::naiv >