21 BackEndParams(): backend(CPU_BACKEND), maxThreads(256), maxBlocks(65535), numOmpThreads(1) {}
25 unsigned int numOmpThreads;
52 m_cacheEntry.first = 0;
59 void add(
size_t lowBound,
size_t highBound,
BackEnd backend,
size_t gs,
size_t bs)
65 sizePlan.insert(std::make_pair(std::make_pair(lowBound, highBound),bp));
68 void add(
size_t lowBound,
size_t highBound,
BackEnd backend,
unsigned int numOmpThreads)
72 bp.numOmpThreads = numOmpThreads;
73 sizePlan.insert(std::make_pair(std::make_pair(lowBound, highBound),bp));
76 void add(
size_t lowBound,
size_t highBound, BackEndParams params)
78 sizePlan.insert(std::make_pair(std::make_pair(lowBound, highBound),params));
81 void add(
size_t lowBound,
size_t highBound,
BackEnd backend)
85 sizePlan.insert(std::make_pair(std::make_pair(lowBound, highBound),bp));
88 void setMaxThreads(
size_t size,
size_t maxthreads)
90 std::map< std::pair<size_t, size_t>, BackEndParams >::iterator it;
91 for(it = sizePlan.begin(); it != sizePlan.end(); ++it)
93 if(size >= it->first.first && size <= it->first.second)
95 it->second.maxThreads=maxthreads;
100 (--it)->second.maxThreads= maxthreads;
103 void setMaxBlocks(
size_t size,
size_t maxBlocks)
105 std::map< std::pair<size_t, size_t>, BackEndParams >::iterator it;
106 for(it = sizePlan.begin(); it != sizePlan.end(); ++it)
108 if(size >= it->first.first && size <= it->first.second)
110 it->second.maxBlocks=maxBlocks;
115 (--it)->second.maxBlocks= maxBlocks;
118 void setNumOmpThreads(
size_t size,
unsigned int ompThreads)
120 std::map< std::pair<size_t, size_t>, BackEndParams >::iterator it;
121 for(it = sizePlan.begin(); it != sizePlan.end(); ++it)
123 if(size >= it->first.first && size <= it->first.second)
125 it->second.numOmpThreads = ompThreads;
130 (--it)->second.numOmpThreads = ompThreads;
133 unsigned int numOmpThreads(
size_t size)
138 std::map< std::pair<size_t, size_t>, BackEndParams >::iterator it;
139 for(it = sizePlan.begin(); it != sizePlan.end(); ++it)
141 if(size >= it->first.first && size <= it->first.second)
143 return it->second.numOmpThreads;
147 return (--it)->second.numOmpThreads;
150 size_t maxThreads(
size_t size)
155 std::map< std::pair<size_t, size_t>, BackEndParams >::iterator it;
156 for(it = sizePlan.begin(); it != sizePlan.end(); ++it)
158 if(size >= it->first.first && size <= it->first.second)
160 return it->second.maxThreads;
164 return (--it)->second.maxThreads;
167 bool isTrainedFor(
size_t size)
172 std::map< std::pair<size_t, size_t>, BackEndParams >::iterator it;
173 for(it = sizePlan.begin(); it != sizePlan.end(); ++it)
175 if(size >= it->first.first && size <= it->first.second)
189 if(m_cacheEntry.first == size)
190 return m_cacheEntry.second.backend;
192 std::map< std::pair<size_t, size_t>, BackEndParams >::iterator it;
193 for(it = sizePlan.begin(); it != sizePlan.end(); ++it)
195 if(size >= it->first.first && size <= it->first.second)
197 m_cacheEntry = std::make_pair(size, it->second);
198 return m_cacheEntry.second.backend;
202 m_cacheEntry = std::make_pair(size, (--it)->second);
203 return m_cacheEntry.second.backend;
206 BackEndParams find_(
size_t size)
209 return BackEndParams();
211 if(m_cacheEntry.first == size)
212 return m_cacheEntry.second;
214 std::map< std::pair<size_t, size_t>, BackEndParams >::iterator it;
215 for(it = sizePlan.begin(); it != sizePlan.end(); ++it)
217 if(size >= it->first.first && size <= it->first.second)
219 m_cacheEntry = std::make_pair(size, it->second);
220 return m_cacheEntry.second;
225 m_cacheEntry = std::make_pair(size, (--it)->second);
226 return m_cacheEntry.second;
237 std::pair<size_t, BackEndParams> m_cacheEntry;
238 std::map< std::pair<size_t, size_t>, BackEndParams > sizePlan;
bool calibrated
Definition: exec_plan.h:57
BackEnd
Can be used to specify which backend to use.
Definition: environment.h:34
A class that describes an execution plan.
Definition: exec_plan.h:47
Can be used to specify properties for a backend.
Definition: exec_plan.h:19