The CRTP-policy that computes a batch of cells in the alignment matrix using simd instructions.
More...
|
template<typename cell_t > |
constexpr void | compute_cell (cell_t &¤t_cell, alignment_algorithm_state< score_t > &state, score_t const score) const noexcept |
| Computes the score of the current simd cell.
|
|
constexpr score_t | convert_to_simd (trace_directions const direction) const noexcept |
| Converts a trace direction into a simd vector.
|
|
template<typename alignment_configuration_t > |
constexpr void | initialise_alignment_state (alignment_configuration_t const &config) noexcept |
| Initialise the alignment state for affine gap computation.
|
|
|
constexpr | simd_affine_gap_policy () noexcept=default |
| Defaulted.
|
|
constexpr | simd_affine_gap_policy (simd_affine_gap_policy const &) noexcept=default |
| Defaulted.
|
|
constexpr | simd_affine_gap_policy (simd_affine_gap_policy &&) noexcept=default |
| Defaulted.
|
|
constexpr simd_affine_gap_policy & | operator= (simd_affine_gap_policy const &) noexcept=default |
| Defaulted.
|
|
constexpr simd_affine_gap_policy & | operator= (simd_affine_gap_policy &&) noexcept=default |
| Defaulted.
|
|
| ~simd_affine_gap_policy () noexcept=default |
| Defaulted.
|
|
template<typename configuration_t > |
| simd_affine_gap_policy (configuration_t const &) |
| Initialise the policy.
|
|
template<typename
alignment_algorithm_t,
simd_concept score_t, typename align_local_t = std::false_type>
class seqan3::detail::simd_affine_gap_policy< alignment_algorithm_t, score_t, align_local_t >
The CRTP-policy that computes a batch of cells in the alignment matrix using simd instructions.
- Template Parameters
-
This CRTP-policy implements the recursion for the alignment algorithm with affine gaps using an inter-sequence vectorisation scheme. See Rahn, R, et al. Generic accelerated sequence alignment in SeqAn using vectorization and multi-threading. Bioinformatics 34.20 (2018): 3437-3445.
for more information.
template<typename cell_t >
|
inlineconstexprprivatenoexcept |
Computes the score of the current simd cell.
- Template Parameters
-
cell_t | The type of the current cell [for detailed information on the type see below]. |
- Parameters
-
[in,out] | current_cell | The current cell in the dynamic programming matrix. |
[in,out] | state | The state storing hot helper variables. |
[in] | score | The score of comparing the respective letters of the first and the second sequence. |
cell_t
is the result type of dereferencing the zipped iterator over the respective alignment score matrix and the alignment trace matrix used inside of the seqan3::detail::alignment_matrix_policy. The first parameter stored in the zipped tuple is the seqan3::detail::alignment_score_matrix_proxy and the second value is the seqan3::detail::alignment_trace_matrix_proxy.
In order to compute the maximum for two simd vectors, gcc implements the ternary operator such that std::max(a, b)
can be implemented as (a > b) ? a : b
, where (a > b)
returns a mask vector. This implements the compare-and-blend approach for simd vector types.