13 template struct SpaceHolder<1>;
14 template struct SpaceHolder<2>;
15 template struct SpaceHolder<3>;
16 template struct SpaceHolder<4>;
17 template struct SpaceHolder<5>;
18 template struct SpaceHolder<6>;
19 template struct SpaceHolder<7>;
20 template struct SpaceHolder<8>;
21 template struct SpaceHolder<9>;
22 template struct SpaceHolder<10>;
23 template struct SpaceHolder<11>;
24 template struct SpaceHolder<12>;
25 template struct SpaceHolder<13>;
26 template struct SpaceHolder<14>;
27 template struct SpaceHolder<15>;
28 template struct SpaceHolder<16>;
29 template struct SpaceHolder<17>;
30 template struct SpaceHolder<18>;
31 template struct SpaceHolder<19>;
32 template struct SpaceHolder<20>;
33 template struct SpaceHolder<21>;
34 template struct SpaceHolder<22>;
35 template struct SpaceHolder<23>;
36 template struct SpaceHolder<24>;
37 template struct SpaceHolder<25>;
38 template struct SpaceHolder<26>;
39 template struct SpaceHolder<27>;
40 template struct SpaceHolder<28>;
41 template struct SpaceHolder<29>;
42 template struct SpaceHolder<30>;
43 template struct SpaceHolder<31>;
44 template struct SpaceHolder<32>;
45 template struct SpaceHolder<33>;
46 template struct SpaceHolder<34>;
47 template struct SpaceHolder<35>;
48 template struct SpaceHolder<36>;
49 template struct SpaceHolder<37>;
50 template struct SpaceHolder<38>;
51 template struct SpaceHolder<39>;
52 template struct SpaceHolder<40>;
53 template struct SpaceHolder<41>;
54 template struct SpaceHolder<42>;
55 template struct SpaceHolder<43>;
56 template struct SpaceHolder<44>;
57 template struct SpaceHolder<45>;
58 template struct SpaceHolder<46>;
59 template struct SpaceHolder<47>;
60 template struct SpaceHolder<48>;
61 template struct SpaceHolder<49>;
62 template struct SpaceHolder<50>;
63 template struct SpaceHolder<51>;
64 template struct SpaceHolder<52>;
65 template struct SpaceHolder<53>;
66 template struct SpaceHolder<54>;
67 template struct SpaceHolder<55>;
68 template struct SpaceHolder<56>;
69 template struct SpaceHolder<57>;
70 template struct SpaceHolder<58>;
71 template struct SpaceHolder<59>;
72 template struct SpaceHolder<60>;
76 __global__ void AT_Allocate(
82 uint tId = threadIdx.x + (blockIdx.x * blockDim.x);
83 if (tId >= index.size()) return;
85 List<SpaceHolder<N>>* listStartPtr = (List<SpaceHolder<N>>*)lists;
86 SpaceHolder<N>* elementsPtr = (SpaceHolder<N>*)elements;
88 uint count = tId == index.size() - 1 ? ele_size - index[index.size() - 1] : index[tId + 1] - index[tId];
90 List<SpaceHolder<N>> list;
91 list.reserve(elementsPtr + index[tId], count);
93 listStartPtr[tId] = list;
97 void parallel_allocate_for_list(void* lists, void* elements, size_t ele_size, DArray<uint>& index)
99 uint pDims = cudaGridSize(index.size(), BLOCK_SIZE);
100 AT_Allocate<N> << <pDims, BLOCK_SIZE >> > (
108 template void parallel_allocate_for_list<1>(void* lists, void* elements, size_t ele_size, DArray<uint>& index);
109 template void parallel_allocate_for_list<2>(void* lists, void* elements, size_t ele_size, DArray<uint>& index);
110 template void parallel_allocate_for_list<3>(void* lists, void* elements, size_t ele_size, DArray<uint>& index);
111 template void parallel_allocate_for_list<4>(void* lists, void* elements, size_t ele_size, DArray<uint>& index);
112 template void parallel_allocate_for_list<5>(void* lists, void* elements, size_t ele_size, DArray<uint>& index);
113 template void parallel_allocate_for_list<6>(void* lists, void* elements, size_t ele_size, DArray<uint>& index);
114 template void parallel_allocate_for_list<7>(void* lists, void* elements, size_t ele_size, DArray<uint>& index);
115 template void parallel_allocate_for_list<8>(void* lists, void* elements, size_t ele_size, DArray<uint>& index);
117 template void parallel_allocate_for_list<9>(void* lists, void* elements, size_t ele_size, DArray<uint>& index);
118 template void parallel_allocate_for_list<10>(void* lists, void* elements, size_t ele_size, DArray<uint>& index);
119 template void parallel_allocate_for_list<11>(void* lists, void* elements, size_t ele_size, DArray<uint>& index);
120 template void parallel_allocate_for_list<12>(void* lists, void* elements, size_t ele_size, DArray<uint>& index);
121 template void parallel_allocate_for_list<13>(void* lists, void* elements, size_t ele_size, DArray<uint>& index);
122 template void parallel_allocate_for_list<14>(void* lists, void* elements, size_t ele_size, DArray<uint>& index);
123 template void parallel_allocate_for_list<15>(void* lists, void* elements, size_t ele_size, DArray<uint>& index);
124 template void parallel_allocate_for_list<16>(void* lists, void* elements, size_t ele_size, DArray<uint>& index);
126 template void parallel_allocate_for_list<17>(void* lists, void* elements, size_t ele_size, DArray<uint>& index);
127 template void parallel_allocate_for_list<18>(void* lists, void* elements, size_t ele_size, DArray<uint>& index);
128 template void parallel_allocate_for_list<19>(void* lists, void* elements, size_t ele_size, DArray<uint>& index);
129 template void parallel_allocate_for_list<20>(void* lists, void* elements, size_t ele_size, DArray<uint>& index);
130 template void parallel_allocate_for_list<21>(void* lists, void* elements, size_t ele_size, DArray<uint>& index);
131 template void parallel_allocate_for_list<22>(void* lists, void* elements, size_t ele_size, DArray<uint>& index);
132 template void parallel_allocate_for_list<23>(void* lists, void* elements, size_t ele_size, DArray<uint>& index);
133 template void parallel_allocate_for_list<24>(void* lists, void* elements, size_t ele_size, DArray<uint>& index);
135 template void parallel_allocate_for_list<25>(void* lists, void* elements, size_t ele_size, DArray<uint>& index);
136 template void parallel_allocate_for_list<26>(void* lists, void* elements, size_t ele_size, DArray<uint>& index);
137 template void parallel_allocate_for_list<27>(void* lists, void* elements, size_t ele_size, DArray<uint>& index);
138 template void parallel_allocate_for_list<28>(void* lists, void* elements, size_t ele_size, DArray<uint>& index);
139 template void parallel_allocate_for_list<29>(void* lists, void* elements, size_t ele_size, DArray<uint>& index);
140 template void parallel_allocate_for_list<30>(void* lists, void* elements, size_t ele_size, DArray<uint>& index);
141 template void parallel_allocate_for_list<31>(void* lists, void* elements, size_t ele_size, DArray<uint>& index);
142 template void parallel_allocate_for_list<32>(void* lists, void* elements, size_t ele_size, DArray<uint>& index);
144 template void parallel_allocate_for_list<33>(void* lists, void* elements, size_t ele_size, DArray<uint>& index);
145 template void parallel_allocate_for_list<34>(void* lists, void* elements, size_t ele_size, DArray<uint>& index);
146 template void parallel_allocate_for_list<35>(void* lists, void* elements, size_t ele_size, DArray<uint>& index);
147 template void parallel_allocate_for_list<36>(void* lists, void* elements, size_t ele_size, DArray<uint>& index);
148 template void parallel_allocate_for_list<37>(void* lists, void* elements, size_t ele_size, DArray<uint>& index);
149 template void parallel_allocate_for_list<38>(void* lists, void* elements, size_t ele_size, DArray<uint>& index);
150 template void parallel_allocate_for_list<39>(void* lists, void* elements, size_t ele_size, DArray<uint>& index);
151 template void parallel_allocate_for_list<40>(void* lists, void* elements, size_t ele_size, DArray<uint>& index);
153 template void parallel_allocate_for_list<41>(void* lists, void* elements, size_t ele_size, DArray<uint>& index);
154 template void parallel_allocate_for_list<42>(void* lists, void* elements, size_t ele_size, DArray<uint>& index);
155 template void parallel_allocate_for_list<43>(void* lists, void* elements, size_t ele_size, DArray<uint>& index);
156 template void parallel_allocate_for_list<44>(void* lists, void* elements, size_t ele_size, DArray<uint>& index);
157 template void parallel_allocate_for_list<45>(void* lists, void* elements, size_t ele_size, DArray<uint>& index);
158 template void parallel_allocate_for_list<46>(void* lists, void* elements, size_t ele_size, DArray<uint>& index);
159 template void parallel_allocate_for_list<47>(void* lists, void* elements, size_t ele_size, DArray<uint>& index);
160 template void parallel_allocate_for_list<48>(void* lists, void* elements, size_t ele_size, DArray<uint>& index);
162 template void parallel_allocate_for_list<49>(void* lists, void* elements, size_t ele_size, DArray<uint>& index);
163 template void parallel_allocate_for_list<50>(void* lists, void* elements, size_t ele_size, DArray<uint>& index);
164 template void parallel_allocate_for_list<51>(void* lists, void* elements, size_t ele_size, DArray<uint>& index);
165 template void parallel_allocate_for_list<52>(void* lists, void* elements, size_t ele_size, DArray<uint>& index);
166 template void parallel_allocate_for_list<53>(void* lists, void* elements, size_t ele_size, DArray<uint>& index);
167 template void parallel_allocate_for_list<54>(void* lists, void* elements, size_t ele_size, DArray<uint>& index);
168 template void parallel_allocate_for_list<55>(void* lists, void* elements, size_t ele_size, DArray<uint>& index);
169 template void parallel_allocate_for_list<56>(void* lists, void* elements, size_t ele_size, DArray<uint>& index);
170 template void parallel_allocate_for_list<57>(void* lists, void* elements, size_t ele_size, DArray<uint>& index);
171 template void parallel_allocate_for_list<58>(void* lists, void* elements, size_t ele_size, DArray<uint>& index);
172 template void parallel_allocate_for_list<59>(void* lists, void* elements, size_t ele_size, DArray<uint>& index);
173 template void parallel_allocate_for_list<60>(void* lists, void* elements, size_t ele_size, DArray<uint>& index);
176 __global__ void AT_Assign(
182 uint tId = threadIdx.x + (blockIdx.x * blockDim.x);
183 if (tId >= index.size()) return;
185 List<SpaceHolder<N>>* listStartPtr = (List<SpaceHolder<N>>*)lists;
186 SpaceHolder<N>* elementsPtr = (SpaceHolder<N>*)elements;
188 uint count = tId == index.size() - 1 ? ele_size - index[index.size() - 1] : index[tId + 1] - index[tId];
190 List<SpaceHolder<N>> list = *(listStartPtr + tId);
191 list.reserve(elementsPtr + index[tId], count);
193 listStartPtr[tId] = list;
197 void parallel_init_for_list(void* lists, void* elements, size_t ele_size, DArray<uint>& index)
199 uint pDims = cudaGridSize(index.size(), BLOCK_SIZE);
200 AT_Assign<N> << <pDims, BLOCK_SIZE >> > (
208 template void parallel_init_for_list<1>(void* lists, void* elements, size_t ele_size, DArray<uint>& index);
209 template void parallel_init_for_list<2>(void* lists, void* elements, size_t ele_size, DArray<uint>& index);
210 template void parallel_init_for_list<3>(void* lists, void* elements, size_t ele_size, DArray<uint>& index);
211 template void parallel_init_for_list<4>(void* lists, void* elements, size_t ele_size, DArray<uint>& index);
212 template void parallel_init_for_list<5>(void* lists, void* elements, size_t ele_size, DArray<uint>& index);
213 template void parallel_init_for_list<6>(void* lists, void* elements, size_t ele_size, DArray<uint>& index);
214 template void parallel_init_for_list<7>(void* lists, void* elements, size_t ele_size, DArray<uint>& index);
215 template void parallel_init_for_list<8>(void* lists, void* elements, size_t ele_size, DArray<uint>& index);
217 template void parallel_init_for_list<9>(void* lists, void* elements, size_t ele_size, DArray<uint>& index);
218 template void parallel_init_for_list<10>(void* lists, void* elements, size_t ele_size, DArray<uint>& index);
219 template void parallel_init_for_list<11>(void* lists, void* elements, size_t ele_size, DArray<uint>& index);
220 template void parallel_init_for_list<12>(void* lists, void* elements, size_t ele_size, DArray<uint>& index);
221 template void parallel_init_for_list<13>(void* lists, void* elements, size_t ele_size, DArray<uint>& index);
222 template void parallel_init_for_list<14>(void* lists, void* elements, size_t ele_size, DArray<uint>& index);
223 template void parallel_init_for_list<15>(void* lists, void* elements, size_t ele_size, DArray<uint>& index);
224 template void parallel_init_for_list<16>(void* lists, void* elements, size_t ele_size, DArray<uint>& index);
226 template void parallel_init_for_list<17>(void* lists, void* elements, size_t ele_size, DArray<uint>& index);
227 template void parallel_init_for_list<18>(void* lists, void* elements, size_t ele_size, DArray<uint>& index);
228 template void parallel_init_for_list<19>(void* lists, void* elements, size_t ele_size, DArray<uint>& index);
229 template void parallel_init_for_list<20>(void* lists, void* elements, size_t ele_size, DArray<uint>& index);
230 template void parallel_init_for_list<21>(void* lists, void* elements, size_t ele_size, DArray<uint>& index);
231 template void parallel_init_for_list<22>(void* lists, void* elements, size_t ele_size, DArray<uint>& index);
232 template void parallel_init_for_list<23>(void* lists, void* elements, size_t ele_size, DArray<uint>& index);
233 template void parallel_init_for_list<24>(void* lists, void* elements, size_t ele_size, DArray<uint>& index);
235 template void parallel_init_for_list<25>(void* lists, void* elements, size_t ele_size, DArray<uint>& index);
236 template void parallel_init_for_list<26>(void* lists, void* elements, size_t ele_size, DArray<uint>& index);
237 template void parallel_init_for_list<27>(void* lists, void* elements, size_t ele_size, DArray<uint>& index);
238 template void parallel_init_for_list<28>(void* lists, void* elements, size_t ele_size, DArray<uint>& index);
239 template void parallel_init_for_list<29>(void* lists, void* elements, size_t ele_size, DArray<uint>& index);
240 template void parallel_init_for_list<30>(void* lists, void* elements, size_t ele_size, DArray<uint>& index);
241 template void parallel_init_for_list<31>(void* lists, void* elements, size_t ele_size, DArray<uint>& index);
242 template void parallel_init_for_list<32>(void* lists, void* elements, size_t ele_size, DArray<uint>& index);
244 template void parallel_init_for_list<33>(void* lists, void* elements, size_t ele_size, DArray<uint>& index);
245 template void parallel_init_for_list<34>(void* lists, void* elements, size_t ele_size, DArray<uint>& index);
246 template void parallel_init_for_list<35>(void* lists, void* elements, size_t ele_size, DArray<uint>& index);
247 template void parallel_init_for_list<36>(void* lists, void* elements, size_t ele_size, DArray<uint>& index);
248 template void parallel_init_for_list<37>(void* lists, void* elements, size_t ele_size, DArray<uint>& index);
249 template void parallel_init_for_list<38>(void* lists, void* elements, size_t ele_size, DArray<uint>& index);
250 template void parallel_init_for_list<39>(void* lists, void* elements, size_t ele_size, DArray<uint>& index);
251 template void parallel_init_for_list<40>(void* lists, void* elements, size_t ele_size, DArray<uint>& index);
253 template void parallel_init_for_list<41>(void* lists, void* elements, size_t ele_size, DArray<uint>& index);
254 template void parallel_init_for_list<42>(void* lists, void* elements, size_t ele_size, DArray<uint>& index);
255 template void parallel_init_for_list<43>(void* lists, void* elements, size_t ele_size, DArray<uint>& index);
256 template void parallel_init_for_list<44>(void* lists, void* elements, size_t ele_size, DArray<uint>& index);
257 template void parallel_init_for_list<45>(void* lists, void* elements, size_t ele_size, DArray<uint>& index);
258 template void parallel_init_for_list<46>(void* lists, void* elements, size_t ele_size, DArray<uint>& index);
259 template void parallel_init_for_list<47>(void* lists, void* elements, size_t ele_size, DArray<uint>& index);
260 template void parallel_init_for_list<48>(void* lists, void* elements, size_t ele_size, DArray<uint>& index);
262 template void parallel_init_for_list<49>(void* lists, void* elements, size_t ele_size, DArray<uint>& index);
263 template void parallel_init_for_list<50>(void* lists, void* elements, size_t ele_size, DArray<uint>& index);
264 template void parallel_init_for_list<51>(void* lists, void* elements, size_t ele_size, DArray<uint>& index);
265 template void parallel_init_for_list<52>(void* lists, void* elements, size_t ele_size, DArray<uint>& index);
266 template void parallel_init_for_list<53>(void* lists, void* elements, size_t ele_size, DArray<uint>& index);
267 template void parallel_init_for_list<54>(void* lists, void* elements, size_t ele_size, DArray<uint>& index);
268 template void parallel_init_for_list<55>(void* lists, void* elements, size_t ele_size, DArray<uint>& index);
269 template void parallel_init_for_list<56>(void* lists, void* elements, size_t ele_size, DArray<uint>& index);
270 template void parallel_init_for_list<57>(void* lists, void* elements, size_t ele_size, DArray<uint>& index);
271 template void parallel_init_for_list<58>(void* lists, void* elements, size_t ele_size, DArray<uint>& index);
272 template void parallel_init_for_list<59>(void* lists, void* elements, size_t ele_size, DArray<uint>& index);
273 template void parallel_init_for_list<60>(void* lists, void* elements, size_t ele_size, DArray<uint>& index);
278 __global__ void AT_Allocate_Map(
284 uint tId = threadIdx.x + (blockIdx.x * blockDim.x);
285 if (tId >= index.size()) return;
287 Map<uint,SpaceHolder<N>>* mapPtr = (Map<uint,SpaceHolder<N>>*)maps;
288 Pair<uint,SpaceHolder<N>>* elementsPtr = (Pair<uint,SpaceHolder<N>>*)elements;
290 uint count = tId == index.size() - 1 ? ele_size - index[index.size() - 1] : index[tId + 1] - index[tId];
292 Map<uint,SpaceHolder<N>> map;
293 map.reserve(elementsPtr + index[tId], count);
299 void parallel_allocate_for_map(void* maps, void* elements, size_t ele_size, DArray<uint>& index)
301 uint pDims = cudaGridSize(index.size(), BLOCK_SIZE);
302 AT_Allocate_Map<N> << <pDims, BLOCK_SIZE >> > (
310 template void parallel_allocate_for_map<1>(void* maps, void* elements, size_t ele_size, DArray<uint>& index);
311 template void parallel_allocate_for_map<2>(void* maps, void* elements, size_t ele_size, DArray<uint>& index);
312 template void parallel_allocate_for_map<3>(void* maps, void* elements, size_t ele_size, DArray<uint>& index);
313 template void parallel_allocate_for_map<4>(void* maps, void* elements, size_t ele_size, DArray<uint>& index);
314 template void parallel_allocate_for_map<5>(void* maps, void* elements, size_t ele_size, DArray<uint>& index);
315 template void parallel_allocate_for_map<6>(void* maps, void* elements, size_t ele_size, DArray<uint>& index);
316 template void parallel_allocate_for_map<7>(void* maps, void* elements, size_t ele_size, DArray<uint>& index);
317 template void parallel_allocate_for_map<8>(void* maps, void* elements, size_t ele_size, DArray<uint>& index);
319 template void parallel_allocate_for_map<9>(void* maps, void* elements, size_t ele_size, DArray<uint>& index);
320 template void parallel_allocate_for_map<10>(void* maps, void* elements, size_t ele_size, DArray<uint>& index);
321 template void parallel_allocate_for_map<11>(void* maps, void* elements, size_t ele_size, DArray<uint>& index);
322 template void parallel_allocate_for_map<12>(void* maps, void* elements, size_t ele_size, DArray<uint>& index);
323 template void parallel_allocate_for_map<13>(void* maps, void* elements, size_t ele_size, DArray<uint>& index);
324 template void parallel_allocate_for_map<14>(void* maps, void* elements, size_t ele_size, DArray<uint>& index);
325 template void parallel_allocate_for_map<15>(void* maps, void* elements, size_t ele_size, DArray<uint>& index);
326 template void parallel_allocate_for_map<16>(void* maps, void* elements, size_t ele_size, DArray<uint>& index);
328 template void parallel_allocate_for_map<17>(void* maps, void* elements, size_t ele_size, DArray<uint>& index);
329 template void parallel_allocate_for_map<18>(void* maps, void* elements, size_t ele_size, DArray<uint>& index);
330 template void parallel_allocate_for_map<19>(void* maps, void* elements, size_t ele_size, DArray<uint>& index);
331 template void parallel_allocate_for_map<20>(void* maps, void* elements, size_t ele_size, DArray<uint>& index);
332 template void parallel_allocate_for_map<21>(void* maps, void* elements, size_t ele_size, DArray<uint>& index);
333 template void parallel_allocate_for_map<22>(void* maps, void* elements, size_t ele_size, DArray<uint>& index);
334 template void parallel_allocate_for_map<23>(void* maps, void* elements, size_t ele_size, DArray<uint>& index);
335 template void parallel_allocate_for_map<24>(void* maps, void* elements, size_t ele_size, DArray<uint>& index);
337 template void parallel_allocate_for_map<25>(void* maps, void* elements, size_t ele_size, DArray<uint>& index);
338 template void parallel_allocate_for_map<26>(void* maps, void* elements, size_t ele_size, DArray<uint>& index);
339 template void parallel_allocate_for_map<27>(void* maps, void* elements, size_t ele_size, DArray<uint>& index);
340 template void parallel_allocate_for_map<28>(void* maps, void* elements, size_t ele_size, DArray<uint>& index);
341 template void parallel_allocate_for_map<29>(void* maps, void* elements, size_t ele_size, DArray<uint>& index);
342 template void parallel_allocate_for_map<30>(void* maps, void* elements, size_t ele_size, DArray<uint>& index);
343 template void parallel_allocate_for_map<31>(void* maps, void* elements, size_t ele_size, DArray<uint>& index);
344 template void parallel_allocate_for_map<32>(void* maps, void* elements, size_t ele_size, DArray<uint>& index);
346 template void parallel_allocate_for_map<33>(void* maps, void* elements, size_t ele_size, DArray<uint>& index);
347 template void parallel_allocate_for_map<34>(void* maps, void* elements, size_t ele_size, DArray<uint>& index);
348 template void parallel_allocate_for_map<35>(void* maps, void* elements, size_t ele_size, DArray<uint>& index);
349 template void parallel_allocate_for_map<36>(void* maps, void* elements, size_t ele_size, DArray<uint>& index);
350 template void parallel_allocate_for_map<37>(void* maps, void* elements, size_t ele_size, DArray<uint>& index);
351 template void parallel_allocate_for_map<38>(void* maps, void* elements, size_t ele_size, DArray<uint>& index);
352 template void parallel_allocate_for_map<39>(void* maps, void* elements, size_t ele_size, DArray<uint>& index);
353 template void parallel_allocate_for_map<40>(void* maps, void* elements, size_t ele_size, DArray<uint>& index);
355 template void parallel_allocate_for_map<41>(void* maps, void* elements, size_t ele_size, DArray<uint>& index);
356 template void parallel_allocate_for_map<42>(void* maps, void* elements, size_t ele_size, DArray<uint>& index);
357 template void parallel_allocate_for_map<43>(void* maps, void* elements, size_t ele_size, DArray<uint>& index);
358 template void parallel_allocate_for_map<44>(void* maps, void* elements, size_t ele_size, DArray<uint>& index);
359 template void parallel_allocate_for_map<45>(void* maps, void* elements, size_t ele_size, DArray<uint>& index);
360 template void parallel_allocate_for_map<46>(void* maps, void* elements, size_t ele_size, DArray<uint>& index);
361 template void parallel_allocate_for_map<47>(void* maps, void* elements, size_t ele_size, DArray<uint>& index);
362 template void parallel_allocate_for_map<48>(void* maps, void* elements, size_t ele_size, DArray<uint>& index);
365 __global__ void AT_Assign_Map(
371 uint tId = threadIdx.x + (blockIdx.x * blockDim.x);
372 if (tId >= index.size()) return;
374 Map<uint,SpaceHolder<N>>* mapStartPtr = (Map<uint,SpaceHolder<N>>*)maps;
375 Pair<uint,SpaceHolder<N>>* elementsPtr = (Pair<uint,SpaceHolder<N>>*)elements;
377 uint count = tId == index.size() - 1 ? ele_size - index[index.size() - 1] : index[tId + 1] - index[tId];
379 Map<uint,SpaceHolder<N>> map = *(mapStartPtr + tId);
380 map.reserve(elementsPtr + index[tId], count);
382 mapStartPtr[tId] = map;
384 //printf("parallel_init_for_map: ArrayTools the ptrpair is: %x \n\n", elementsPtr + index[tId]);
388 void parallel_init_for_map(void* maps, void* elements, size_t ele_size, DArray<uint>& index)
390 uint pDims = cudaGridSize(index.size(), BLOCK_SIZE);
391 AT_Assign_Map<N> << <pDims, BLOCK_SIZE >> > (
399 template void parallel_init_for_map<1>(void* maps, void* elements, size_t ele_size, DArray<uint>& index);
400 template void parallel_init_for_map<2>(void* maps, void* elements, size_t ele_size, DArray<uint>& index);
401 template void parallel_init_for_map<3>(void* maps, void* elements, size_t ele_size, DArray<uint>& index);
402 template void parallel_init_for_map<4>(void* maps, void* elements, size_t ele_size, DArray<uint>& index);
403 template void parallel_init_for_map<5>(void* maps, void* elements, size_t ele_size, DArray<uint>& index);
404 template void parallel_init_for_map<6>(void* maps, void* elements, size_t ele_size, DArray<uint>& index);
405 template void parallel_init_for_map<7>(void* maps, void* elements, size_t ele_size, DArray<uint>& index);
406 template void parallel_init_for_map<8>(void* maps, void* elements, size_t ele_size, DArray<uint>& index);
408 template void parallel_init_for_map<9>(void* maps, void* elements, size_t ele_size, DArray<uint>& index);
409 template void parallel_init_for_map<10>(void* maps, void* elements, size_t ele_size, DArray<uint>& index);
410 template void parallel_init_for_map<11>(void* maps, void* elements, size_t ele_size, DArray<uint>& index);
411 template void parallel_init_for_map<12>(void* maps, void* elements, size_t ele_size, DArray<uint>& index);
412 template void parallel_init_for_map<13>(void* maps, void* elements, size_t ele_size, DArray<uint>& index);
413 template void parallel_init_for_map<14>(void* maps, void* elements, size_t ele_size, DArray<uint>& index);
414 template void parallel_init_for_map<15>(void* maps, void* elements, size_t ele_size, DArray<uint>& index);
415 template void parallel_init_for_map<16>(void* maps, void* elements, size_t ele_size, DArray<uint>& index);
417 template void parallel_init_for_map<17>(void* maps, void* elements, size_t ele_size, DArray<uint>& index);
418 template void parallel_init_for_map<18>(void* maps, void* elements, size_t ele_size, DArray<uint>& index);
419 template void parallel_init_for_map<19>(void* maps, void* elements, size_t ele_size, DArray<uint>& index);
420 template void parallel_init_for_map<20>(void* maps, void* elements, size_t ele_size, DArray<uint>& index);
421 template void parallel_init_for_map<21>(void* maps, void* elements, size_t ele_size, DArray<uint>& index);
422 template void parallel_init_for_map<22>(void* maps, void* elements, size_t ele_size, DArray<uint>& index);
423 template void parallel_init_for_map<23>(void* maps, void* elements, size_t ele_size, DArray<uint>& index);
424 template void parallel_init_for_map<24>(void* maps, void* elements, size_t ele_size, DArray<uint>& index);
426 template void parallel_init_for_map<25>(void* maps, void* elements, size_t ele_size, DArray<uint>& index);
427 template void parallel_init_for_map<26>(void* maps, void* elements, size_t ele_size, DArray<uint>& index);
428 template void parallel_init_for_map<27>(void* maps, void* elements, size_t ele_size, DArray<uint>& index);
429 template void parallel_init_for_map<28>(void* maps, void* elements, size_t ele_size, DArray<uint>& index);
430 template void parallel_init_for_map<29>(void* maps, void* elements, size_t ele_size, DArray<uint>& index);
431 template void parallel_init_for_map<30>(void* maps, void* elements, size_t ele_size, DArray<uint>& index);
432 template void parallel_init_for_map<31>(void* maps, void* elements, size_t ele_size, DArray<uint>& index);
433 template void parallel_init_for_map<32>(void* maps, void* elements, size_t ele_size, DArray<uint>& index);
435 template void parallel_init_for_map<33>(void* maps, void* elements, size_t ele_size, DArray<uint>& index);
436 template void parallel_init_for_map<34>(void* maps, void* elements, size_t ele_size, DArray<uint>& index);
437 template void parallel_init_for_map<35>(void* maps, void* elements, size_t ele_size, DArray<uint>& index);
438 template void parallel_init_for_map<36>(void* maps, void* elements, size_t ele_size, DArray<uint>& index);
439 template void parallel_init_for_map<37>(void* maps, void* elements, size_t ele_size, DArray<uint>& index);
440 template void parallel_init_for_map<38>(void* maps, void* elements, size_t ele_size, DArray<uint>& index);
441 template void parallel_init_for_map<39>(void* maps, void* elements, size_t ele_size, DArray<uint>& index);
442 template void parallel_init_for_map<40>(void* maps, void* elements, size_t ele_size, DArray<uint>& index);
444 template void parallel_init_for_map<41>(void* maps, void* elements, size_t ele_size, DArray<uint>& index);
445 template void parallel_init_for_map<42>(void* maps, void* elements, size_t ele_size, DArray<uint>& index);
446 template void parallel_init_for_map<43>(void* maps, void* elements, size_t ele_size, DArray<uint>& index);
447 template void parallel_init_for_map<44>(void* maps, void* elements, size_t ele_size, DArray<uint>& index);
448 template void parallel_init_for_map<45>(void* maps, void* elements, size_t ele_size, DArray<uint>& index);
449 template void parallel_init_for_map<46>(void* maps, void* elements, size_t ele_size, DArray<uint>& index);
450 template void parallel_init_for_map<47>(void* maps, void* elements, size_t ele_size, DArray<uint>& index);
451 template void parallel_init_for_map<48>(void* maps, void* elements, size_t ele_size, DArray<uint>& index);