<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet type="text/xsl" href="rss.xsl"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
    <channel>
        <title>Megahertz Tools Site Blog</title>
        <link>https://megahertz-tools.netlify.app/blog</link>
        <description>Megahertz Tools Site Blog</description>
        <lastBuildDate>Wed, 06 Mar 2024 00:00:00 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <language>en</language>
        <item>
            <title><![CDATA[TALCO]]></title>
            <link>https://megahertz-tools.netlify.app/blog/TALCO</link>
            <guid>https://megahertz-tools.netlify.app/blog/TALCO</guid>
            <pubDate>Wed, 06 Mar 2024 00:00:00 GMT</pubDate>
            <description><![CDATA[TALCO: Tiling Genome Sequence Alignment using Convergence of Traceback Pointers]]></description>
            <content:encoded><![CDATA[<p><strong>TALCO: Tiling Genome Sequence Alignment using Convergence of Traceback Pointers</strong></p>
<a href="https://megahertz-tools.netlify.app/interactive/docs-Project/Pangenome/PDF/3-TALCO.pdf" target="_blank" rel="noopener noreferrer"><p>PDF</p></a>
<!-- -->
<p><a href="https://github.com/TurakhiaLab/TALCO.git" target="_blank" rel="noopener noreferrer" class="">Code</a> -</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="memory-constant-parallel-computing"><strong>Memory-constant parallel computing</strong><a href="https://megahertz-tools.netlify.app/blog/TALCO#memory-constant-parallel-computing" class="hash-link" aria-label="Direct link to memory-constant-parallel-computing" title="Direct link to memory-constant-parallel-computing" translate="no">​</a></h2>
<p>Take advantage of the “convergence” phenomenon of traceback pointers—multiple backtracking paths eventually meet at a single cell. This allows us to identify a definite point along the tile boundary, ensuring that the partitioned computation yields results identical to those obtained via a full comparison.</p>
<p>Leveraging the “different paths leading to the same outcome” property of path backtracking, complex global problems can be broken down into smaller, independently solvable sub-problems.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="1-talco-xdrop">1. TALCO XDrop<a href="https://megahertz-tools.netlify.app/blog/TALCO#1-talco-xdrop" class="hash-link" aria-label="Direct link to 1. TALCO XDrop" title="Direct link to 1. TALCO XDrop" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="dp">DP<a href="https://megahertz-tools.netlify.app/blog/TALCO#dp" class="hash-link" aria-label="Direct link to DP" title="Direct link to DP" translate="no">​</a></h3>
<p>Fill in the score matrix <strong>+</strong> record the optimal source pointer for each cell <strong>+</strong> backtrack from the endpoint along the pointers.</p>
<ul>
<li class="">NW (Needleman-Wunsch) requires a global alignment; even if only a small portion in the middle of two sequences is similar, NW still forces an alignment at both ends, potentially resulting in numerous gaps.</li>
<li class="">Smith-Waterman：SW compares only the most similar subsequence between the two sequences.</li>
</ul>
<details class="details_lb9f alert alert--info details_b_Ee" data-collapsed="true"><summary><p>DP-PE illustration</p></summary><div><div class="collapsibleContent_i85q"><img src="https://megahertz-tools.netlify.app/assets/images/DP-PE-8ef1f1e3439d08338a8b4f11251df043.png" align="center" width="1000" alt="DP-PE"></div></div></details>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="talco-adaptive">TALCO adaptive<a href="https://megahertz-tools.netlify.app/blog/TALCO#talco-adaptive" class="hash-link" aria-label="Direct link to TALCO adaptive" title="Direct link to TALCO adaptive" translate="no">​</a></h2>
<p>TALCO <strong>adapts</strong> based on data, with less redundancy when convergence (phase 2) is fast and more redundancy when convergence is slow, but never at the expense of correctness.</p>
<p>The number of frontiers calculated in Phase 2 is not fixed but <strong>determined dynamically</strong> by the data: the faster convergence, the fewer frontiers computed, resulting in less redundancy and higher efficiency. These Phase 2 frontiers are recalculated in the next tile, representing redundant computation, yet they ensure consistency with the results of the full banded algorithm.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="architecture">Architecture<a href="https://megahertz-tools.netlify.app/blog/TALCO#architecture" class="hash-link" aria-label="Direct link to Architecture" title="Direct link to Architecture" translate="no">​</a></h3>
<img src="https://megahertz-tools.netlify.app/assets/images/F6-9349c1c40dff7cf624aa7db6509cfd2f.png" align="center" width="600" alt="Architecture">
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="dp-xdrop">DP XDrop<a href="https://megahertz-tools.netlify.app/blog/TALCO#dp-xdrop" class="hash-link" aria-label="Direct link to DP XDrop" title="Direct link to DP XDrop" translate="no">​</a></h3>
<details class="details_lb9f alert alert--info details_b_Ee" data-collapsed="true"><summary><p>XDrop illustration</p></summary><div><div class="collapsibleContent_i85q"><img src="https://megahertz-tools.netlify.app/assets/images/XDrop-58bac1fc55329ed34a4374dcde039b9b.png" align="center" width="1000" alt="XDrop"></div></div></details>
<p>对于H score, 由于阵列是 systolic 的，PE[0] 分数最高，PE[NUM_PE-1] 分数最低（近似），所以只需检查最后一个 PE。
<span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>s</mi><mi>c</mi><mi>o</mi><mi>r</mi><mi>e</mi><mo>&lt;</mo><msub><mi>H</mi><mrow><mi>m</mi><mi>a</mi><mi>x</mi></mrow></msub><mo>−</mo><mi>X</mi></mrow><annotation encoding="application/x-tex">score &lt; H_{max} - X</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.5782em;vertical-align:-0.0391em"></span><span class="mord mathnormal" style="margin-right:0.0278em">scor</span><span class="mord mathnormal">e</span><span class="mspace" style="margin-right:0.2778em"></span><span class="mrel">&lt;</span><span class="mspace" style="margin-right:0.2778em"></span></span><span class="base"><span class="strut" style="height:0.8333em;vertical-align:-0.15em"></span><span class="mord"><span class="mord mathnormal" style="margin-right:0.0813em">H</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.1514em"><span style="top:-2.55em;margin-left:-0.0813em;margin-right:0.05em"><span class="pstrut" style="height:2.7em"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathnormal mtight">ma</span><span class="mord mathnormal mtight">x</span></span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.15em"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2222em"></span><span class="mbin">−</span><span class="mspace" style="margin-right:0.2222em"></span></span><span class="base"><span class="strut" style="height:0.6833em"></span><span class="mord mathnormal" style="margin-right:0.0785em">X</span></span></span></span></p>
<div class="language-verilog codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-verilog codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">assign</span><span class="token plain"> xdrop_flag </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">H_PE</span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">NUM_PE</span><span class="token operator" style="color:#393A34">-</span><span class="token number" style="color:#36acaa">1</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">+</span><span class="token plain"> xdrop_value</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">&lt;</span><span class="token plain"> ad_max_score</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"> </span><br></div></code></pre></div></div>
<p>ad_max_score 是目前为止<span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mi>H</mi><mrow><mi>m</mi><mi>a</mi><mi>x</mi></mrow></msub></mrow><annotation encoding="application/x-tex">H_{max}</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.8333em;vertical-align:-0.15em"></span><span class="mord"><span class="mord mathnormal" style="margin-right:0.0813em">H</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.1514em"><span style="top:-2.55em;margin-left:-0.0813em;margin-right:0.05em"><span class="pstrut" style="height:2.7em"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathnormal mtight">ma</span><span class="mord mathnormal mtight">x</span></span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.15em"><span></span></span></span></span></span></span></span></span></span>在当前 block 内保持，用于判断剪枝。当 <code>xdrop_flag = 1</code>时，表示整行被 X-Drop 剪枝。第一次<code>xdrop_flag</code>从<code>1 -&gt; 0</code>时，H_PE[NUM_PE-1]的 reference index 即为下一个block的起点。接着从<code>0 -&gt; 1</code>则该block结束计算。</p>
<hr>
<p><strong>D 不跨 block 继承</strong>：D 状态在每个 block 开始时强制为 -INF，因为它可以通过 H 状态重新产生（开 gap），不需要跨 block 传递。</p>
<p><code>lower_bound_value</code> 是“第一个未被剪枝的行”。在它之前的行都被 X-Drop 剪枝了。如果 block 2 从 <code>lower_bound_value</code> 开始，它需要的 <code>D(lower_bound_value - 1, j)</code> 来自被剪枝的行。这些行的分数低于 <code>ad_max_score - xdrop_value</code>，其 D 值即使存在也不可靠，不应该被继承。</p>
<p><strong>X-Drop 的核心假设是</strong>：最优路径不会经过被剪枝的区域。如果最优路径真的需要延续之前的 D 状态，那么它经过的行分数一定不会低于剪枝阈值，也就不会被剪枝。因此，在 block 边界丢弃 D 的 extend 路径，不会影响最优对齐。</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="convergence">convergence<a href="https://megahertz-tools.netlify.app/blog/TALCO#convergence" class="hash-link" aria-label="Direct link to convergence" title="Direct link to convergence" translate="no">​</a></h3>
<details class="details_lb9f alert alert--info details_b_Ee" data-collapsed="true"><summary><p>convergence illustration</p></summary><div><div class="collapsibleContent_i85q"><img src="https://megahertz-tools.netlify.app/assets/images/convergence-9e139321177e07007638ee72b89dd205.png" align="center" width="1000" alt="convergence"></div></div></details>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="reduction-tree">reduction tree<a href="https://megahertz-tools.netlify.app/blog/TALCO#reduction-tree" class="hash-link" aria-label="Direct link to reduction tree" title="Direct link to reduction tree" translate="no">​</a></h4>
<details class="details_lb9f alert alert--info details_b_Ee" data-collapsed="true"><summary><p>reduction tree illustration</p></summary><div><div class="collapsibleContent_i85q"><img src="https://megahertz-tools.netlify.app/assets/images/reduction-tree-9483308b1f7d5e7c77f438aecd517bd9.png" align="center" width="1000" alt="reduction tree"></div></div></details>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="traceback">traceback<a href="https://megahertz-tools.netlify.app/blog/TALCO#traceback" class="hash-link" aria-label="Direct link to traceback" title="Direct link to traceback" translate="no">​</a></h3>
<details class="details_lb9f alert alert--info details_b_Ee" data-collapsed="true"><summary><p>traceback illustration</p></summary><div><div class="collapsibleContent_i85q"><img src="https://megahertz-tools.netlify.app/assets/images/traceback-6aa004d036786fedc027398f1097d1af.png" align="center" width="1000" alt="traceback"></div></div></details>
<p>给定一个起始单元（由收敛检测或 X-Drop 最大分数确定），沿着 traceback_bram 中存储的方向指针，逐步回溯到比对起点 (0,0)，同时输出每一步的移动方向。</p>
<p>起始cell:</p>
<ul>
<li class="">收敛点:  （<span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>i</mi><mi>f</mi><msubsup><mi>H</mi><mrow><mi>m</mi><mi>a</mi><mi>x</mi></mrow><mi mathvariant="normal">‘</mi></msubsup><mo>&gt;</mo><mo>=</mo><msub><mi>H</mi><mrow><mi>m</mi><mi>a</mi><mi>x</mi></mrow></msub></mrow><annotation encoding="application/x-tex">if H^`_{max} &gt;= H_{max}</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:1.0961em;vertical-align:-0.247em"></span><span class="mord mathnormal">i</span><span class="mord mathnormal" style="margin-right:0.1076em">f</span><span class="mord"><span class="mord mathnormal" style="margin-right:0.0813em">H</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.8491em"><span style="top:-2.453em;margin-left:-0.0813em;margin-right:0.05em"><span class="pstrut" style="height:2.7em"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathnormal mtight">ma</span><span class="mord mathnormal mtight">x</span></span></span></span><span style="top:-3.063em;margin-right:0.05em"><span class="pstrut" style="height:2.7em"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">‘</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.247em"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2778em"></span><span class="mrel">&gt;=</span><span class="mspace" style="margin-right:0.2778em"></span></span><span class="base"><span class="strut" style="height:0.8333em;vertical-align:-0.15em"></span><span class="mord"><span class="mord mathnormal" style="margin-right:0.0813em">H</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.1514em"><span style="top:-2.55em;margin-left:-0.0813em;margin-right:0.05em"><span class="pstrut" style="height:2.7em"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathnormal mtight">ma</span><span class="mord mathnormal mtight">x</span></span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.15em"><span></span></span></span></span></span></span></span></span></span>)</li>
<li class=""><span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mi>H</mi><mrow><mi>m</mi><mi>a</mi><mi>x</mi></mrow></msub></mrow><annotation encoding="application/x-tex">H_{max}</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.8333em;vertical-align:-0.15em"></span><span class="mord"><span class="mord mathnormal" style="margin-right:0.0813em">H</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.1514em"><span style="top:-2.55em;margin-left:-0.0813em;margin-right:0.05em"><span class="pstrut" style="height:2.7em"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathnormal mtight">ma</span><span class="mord mathnormal mtight">x</span></span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.15em"><span></span></span></span></span></span></span></span></span></span> 所在的cell: （<span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>i</mi><mi>f</mi><msubsup><mi>H</mi><mrow><mi>m</mi><mi>a</mi><mi>x</mi></mrow><mi mathvariant="normal">‘</mi></msubsup><mo>&lt;</mo><msub><mi>H</mi><mrow><mi>m</mi><mi>a</mi><mi>x</mi></mrow></msub></mrow><annotation encoding="application/x-tex">if H^`_{max} &lt; H_{max}</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:1.0961em;vertical-align:-0.247em"></span><span class="mord mathnormal">i</span><span class="mord mathnormal" style="margin-right:0.1076em">f</span><span class="mord"><span class="mord mathnormal" style="margin-right:0.0813em">H</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.8491em"><span style="top:-2.453em;margin-left:-0.0813em;margin-right:0.05em"><span class="pstrut" style="height:2.7em"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathnormal mtight">ma</span><span class="mord mathnormal mtight">x</span></span></span></span><span style="top:-3.063em;margin-right:0.05em"><span class="pstrut" style="height:2.7em"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">‘</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.247em"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2778em"></span><span class="mrel">&lt;</span><span class="mspace" style="margin-right:0.2778em"></span></span><span class="base"><span class="strut" style="height:0.8333em;vertical-align:-0.15em"></span><span class="mord"><span class="mord mathnormal" style="margin-right:0.0813em">H</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.1514em"><span style="top:-2.55em;margin-left:-0.0813em;margin-right:0.05em"><span class="pstrut" style="height:2.7em"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathnormal mtight">ma</span><span class="mord mathnormal mtight">x</span></span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.15em"><span></span></span></span></span></span></span></span></span></span>)</li>
</ul>
<p><code>traceback_bram_data: {dir[PE0],dir[PE1],...,dir[PE15]}</code></p>
<p>回溯过程中需要追踪四个量：</p>
<div class="language-verilog codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-verilog codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">logic</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">LOG_NUM_PE</span><span class="token operator" style="color:#393A34">-</span><span class="token number" style="color:#36acaa">1</span><span class="token punctuation" style="color:#393A34">:</span><span class="token number" style="color:#36acaa">0</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"> query_pe_idx</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain">      </span><span class="token comment" style="color:#999988;font-style:italic">// 当前在哪个 PE 内 (0 ~ NUM_PE-1)</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">logic</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">TB_ADDR_WIDTH</span><span class="token operator" style="color:#393A34">-</span><span class="token number" style="color:#36acaa">1</span><span class="token punctuation" style="color:#393A34">:</span><span class="token number" style="color:#36acaa">0</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"> cur_blk_idx</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain">    </span><span class="token comment" style="color:#999988;font-style:italic">// 当前在哪个 block</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">logic</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">REF_LEN_WIDTH</span><span class="token operator" style="color:#393A34">-</span><span class="token number" style="color:#36acaa">1</span><span class="token punctuation" style="color:#393A34">:</span><span class="token number" style="color:#36acaa">0</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"> curr_ref_idx</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain">   </span><span class="token comment" style="color:#999988;font-style:italic">// 当前参考索引</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">logic</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token number" style="color:#36acaa">1</span><span class="token punctuation" style="color:#393A34">:</span><span class="token number" style="color:#36acaa">0</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"> cur_tb_state</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain">                 </span><span class="token comment" style="color:#999988;font-style:italic">// 当前状态 (H=0, D=1, I=2)</span><br></div></code></pre></div></div>
<p>当 <code>query_pe_idx</code> 下溢时，说明跨越了一个 PE 组，需要切换到更早的块；</p>
<p>从traceback_bram读出的数据， 包含 NUM_PE 个 PE 的指针，每个 4 位：</p>
<div class="language-verilog codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-verilog codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">assign</span><span class="token plain"> tb_ptr_read </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> tb_bram_data_out</span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">query_pe_idx</span><span class="token operator" style="color:#393A34">*</span><span class="token number" style="color:#36acaa">4</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">+</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">4</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">assign</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">{</span><span class="token plain">insert_extend</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> delete_extend</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> h_move</span><span class="token operator" style="color:#393A34">}</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> tb_ptr_read</span><span class="token punctuation" style="color:#393A34">;</span><br></div></code></pre></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="2-talco-wfaa">2. TALCO WFAA<a href="https://megahertz-tools.netlify.app/blog/TALCO#2-talco-wfaa" class="hash-link" aria-label="Direct link to 2. TALCO WFAA" title="Direct link to 2. TALCO WFAA" translate="no">​</a></h2>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[GenDP]]></title>
            <link>https://megahertz-tools.netlify.app/blog/GenDP</link>
            <guid>https://megahertz-tools.netlify.app/blog/GenDP</guid>
            <pubDate>Sat, 17 Jun 2023 00:00:00 GMT</pubDate>
            <description><![CDATA[GenDP: A Framework of Dynamic Programming Acceleration for Genome Sequencing Analysis]]></description>
            <content:encoded><![CDATA[<p><strong>GenDP: A Framework of Dynamic Programming Acceleration for Genome Sequencing Analysis</strong></p>
<a href="https://megahertz-tools.netlify.app/interactive/docs-Project/Pangenome/PDF/2-GenDP.pdf" target="_blank" rel="noopener noreferrer"><p>PDF</p></a>
<!-- -->
<p><a class="" href="https://megahertz-tools.netlify.app/docs-Project/Pangenome/Papers/GenDP">Paper</a> - <a class="" href="https://megahertz-tools.netlify.app/docs-Project/Pangenome/Notes/GenDP/DP-0">Notes</a> - <a class="" href="https://megahertz-tools.netlify.app/docs-Project/Pangenome/Key/GenDP">Key</a></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[SeGraM]]></title>
            <link>https://megahertz-tools.netlify.app/blog/SeGraM</link>
            <guid>https://megahertz-tools.netlify.app/blog/SeGraM</guid>
            <pubDate>Tue, 31 May 2022 00:00:00 GMT</pubDate>
            <description><![CDATA[SeGraM: A Universal Hardware Accelerator for Genomic Sequence-to-Graph and Sequence-to-Sequence Mapping]]></description>
            <content:encoded><![CDATA[<p><strong>SeGraM: A Universal Hardware Accelerator for Genomic Sequence-to-Graph and Sequence-to-Sequence Mapping</strong></p>
<a href="https://megahertz-tools.netlify.app/interactive/docs-Project/Pangenome/PDF/1-SeGraM.pdf" target="_blank" rel="noopener noreferrer"><p>PDF</p></a>
<p><a href="https://github.com/CMU-SAFARI/SeGraM" target="_blank" rel="noopener noreferrer" class="">code: C software implementation</a></p>
<!-- -->
<p>Due to the nascent nature of sequence-to-graph mapping, a much smaller number of software tools (and no hardware accelerators) exist for sequence-to-graph mapping compared to the traditional sequence-to-sequence mapping.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="software-tools-analysis">Software tools analysis<a href="https://megahertz-tools.netlify.app/blog/SeGraM#software-tools-analysis" class="hash-link" aria-label="Direct link to Software tools analysis" title="Direct link to Software tools analysis" translate="no">​</a></h2>
<p>we rigorously analyze two such tools, <span style="color:#ff800a;font-weight:bold">GraphAligner</span> [61] and <span style="color:#ff800a;font-weight:bold">vg</span> [36], running on an Intel Xeon E5-2630 v4 CPU [133] with 20 physical cores/40 logical cores with hyper-threading [134-137], operating at 2.20GHz, with 128GB DDR4 memory. Based on our bottleneck analysis with <span style="color:#ff800a;font-weight:bold">Intel VTune</span> [138] and <span style="color:#ff800a;font-weight:bold">Linux Perf Tools</span> [139], we make four key observations.</p>
<p>We use the cache-misses metric from Linux Perf Tools.</p>
<ul>
<li class=""><strong>Intel VTune</strong>: Intel Corp., “Intel® VTune™ Profiler.” <a href="https://www.intel.com/content/www/us/en/developer/tools/oneapi/vtune-profiler.html" target="_blank" rel="noopener noreferrer" class="">Available</a></li>
<li class=""><strong>Linux Perf Tools</strong>: WikiChip, “Perf: Linux Profiling with Performance Counters.” <a href="https://perf.wiki.kernel.org/" target="_blank" rel="noopener noreferrer" class="">Available</a></li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[minigraph]]></title>
            <link>https://megahertz-tools.netlify.app/blog/minigraph</link>
            <guid>https://megahertz-tools.netlify.app/blog/minigraph</guid>
            <pubDate>Fri, 16 Oct 2020 00:00:00 GMT</pubDate>
            <description><![CDATA[The design and construction of reference pangenome graphs with minigraph]]></description>
            <content:encoded><![CDATA[<p><strong>The design and construction of reference pangenome graphs with minigraph</strong></p>
<a href="https://megahertz-tools.netlify.app/interactive/docs-Project/Pangenome/PDF/10-minigraph.pdf" target="_blank" rel="noopener noreferrer"><p>PDF</p></a>
<p><a href="https://github.com/lh3/minigraph" target="_blank" rel="noopener noreferrer" class="">code: C++</a></p>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[GraphAligner]]></title>
            <link>https://megahertz-tools.netlify.app/blog/GraphAligner</link>
            <guid>https://megahertz-tools.netlify.app/blog/GraphAligner</guid>
            <pubDate>Thu, 24 Sep 2020 00:00:00 GMT</pubDate>
            <description><![CDATA[GraphAligner: rapid and versatile sequence-to-graph alignment]]></description>
            <content:encoded><![CDATA[<p><strong>GraphAligner: rapid and versatile sequence-to-graph alignment</strong></p>
<a href="https://megahertz-tools.netlify.app/interactive/docs-Project/Pangenome/PDF/9-GraphAligner.pdf" target="_blank" rel="noopener noreferrer"><p>PDF</p></a>
<p><a href="https://github.com/maickrau/GraphAligner" target="_blank" rel="noopener noreferrer" class="">code: C++</a></p>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[GenASM]]></title>
            <link>https://megahertz-tools.netlify.app/blog/GenASM</link>
            <guid>https://megahertz-tools.netlify.app/blog/GenASM</guid>
            <pubDate>Wed, 16 Sep 2020 00:00:00 GMT</pubDate>
            <description><![CDATA[GenASM: AHigh-Performance, Low-Power Approximate String Matching Acceleration Framework for Genome Sequence Analysis]]></description>
            <content:encoded><![CDATA[<p><strong>GenASM: AHigh-Performance, Low-Power Approximate String Matching Acceleration Framework for Genome Sequence Analysis</strong></p>
<a href="https://megahertz-tools.netlify.app/interactive/docs-Project/Pangenome/PDF/7-GenASM.pdf" target="_blank" rel="noopener noreferrer"><p>PDF</p></a>
<p><a href="https://github.com/CMU-SAFARI/GenASM" target="_blank" rel="noopener noreferrer" class="">Code: C</a></p>
<!-- -->
<p><a class="" href="https://megahertz-tools.netlify.app/docs-Project/Pangenome/Papers/GenASM">Paper</a> - <a class="" href="https://megahertz-tools.netlify.app/docs-Project/Pangenome/Notes/GenASM/Bitap/Bitap-Algorithm">Notes</a> -</p>]]></content:encoded>
        </item>
    </channel>
</rss>