32 template <
typename in_coord_type,
typename out_coord_type>
53 template <
typename in_coord_type>
62 template <
typename in_coord_type>
71 template <
typename in_coord_type>
80 template <
typename in_coord_type>
92 template <
typename out_coord_type,
typename in_coord_type>
102 template <
typename index_type,
typename seed_functor,
typename coord_type>
128 template <
typename string_set_type,
typename seed_functor,
typename coord_type>
153 const uint32 seed_idx =
uint32( global_idx - base_offset );
155 const uint2 seed =
seeder.seed( string_len, seed_idx );
156 return project_coords<coord_type>( make_uint4( string_id, seed.x, seed.y, 0u ) );
166 template <
typename index_type,
typename seed_functor,
typename index_vector_type>
168 const index_type string_len,
169 const seed_functor seeder,
170 index_vector_type& indices)
172 typedef typename index_vector_type::value_type coord_type;
175 const index_type n_seeds = seeder( string_len );
178 indices.resize( n_seeds );
182 thrust::make_counting_iterator<index_type>(0u),
183 thrust::make_counting_iterator<index_type>(0u) + n_seeds,
192 template <
typename string_set_type,
typename seed_functor,
typename index_vector_type>
194 const string_set_type string_set,
195 const seed_functor seeder,
196 index_vector_type& indices)
199 typedef typename index_vector_type::system_tag system_tag;
200 typedef typename index_vector_type::value_type coord_type;
202 const uint32 n_strings = string_set.size();
213 seeder ) + n_strings,
217 const uint64 n_seeds = cum_seeds[ n_strings-1 ];
220 indices.resize( n_seeds );
224 thrust::make_counting_iterator<uint32>(0u),
225 thrust::make_counting_iterator<uint32>(0u) + n_seeds,