Skip to content
Snippets Groups Projects
Commit 7a2f43d5 authored by 数学の武士's avatar 数学の武士
Browse files

Singleton impl fix

parent 766b9f3a
No related branches found
No related tags found
No related merge requests found
......@@ -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 >
......
......@@ -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 >
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment