60 #include <thrust/host_vector.h>
61 #include <thrust/device_vector.h>
62 #include <thrust/scan.h>
63 #include <thrust/sort.h>
170 while (band_len-1 < max_dist*2+1)
182 template <
typename scoring_tag>
195 typename scoring_tag,
196 typename scoring_scheme_type>
201 const scoring_scheme_type& scoring_scheme,
205 const uint32 seeding_pass,
206 const uint32 seed_queue_size,
210 template <
typename scoring_tag>
224 typename scoring_tag,
225 typename scoring_scheme_type>
230 const scoring_scheme_type& scoring_scheme,
236 const uint32 seeding_pass,
237 const uint32 seed_queue_size,
241 template <
typename scoring_tag>
253 template <
typename scoring_scheme_type>
259 const scoring_scheme_type& scoring_scheme,
264 const uint32 seed_queue_size,
267 uint64& total_alignments);
269 #if defined(__CUDACC__)
272 template <
typename iterator_type>
275 const iterator_type keys)
309 const SeedHit* hit_data,
320 #if defined(__CUDACC__)
324 template <
typename ReadBatch,
typename ScoreFunction>
326 void init_alignments_kernel(
327 const ReadBatch read_batch,
328 const ScoreFunction worst_score_fun,
334 if (thread_id >= read_batch.size())
return;
337 const uint2 read_range = read_batch.get_range( thread_id );
338 const uint32 read_len = read_range.y - read_range.x;
340 const int32 worst_score = worst_score_fun( read_len );
345 best_data[ thread_id + best_stride ] = a2;
350 template <
typename ReadBatch,
typename ScoreFunction>
351 void init_alignments(
352 const ReadBatch read_batch,
353 const ScoreFunction worst_score_fun,
354 io::Alignment* best_data,
360 init_alignments_kernel<<<blocks, BLOCKDIM>>>(
368 #endif // defined(__CUDACC__)
373 const uint32 n_active_reads,
374 const uint32* active_reads,
375 const io::Alignment* best_data,
382 io::Alignment* anchor_data,
383 io::Alignment* opposite_data,