<node id="628115">
  <nid>628115</nid>
  <type>event</type>
  <uid>
    <user id="27707"><![CDATA[27707]]></user>
  </uid>
  <created>1572268792</created>
  <changed>1572268792</changed>
  <title><![CDATA[PhD Proposal by Chao Chen]]></title>
  <body><![CDATA[<p>Title: Lightweight Resiliency Mechanism via Compiler Techniques</p>

<p>&nbsp;</p>

<p>Chao Chen</p>

<p>Ph.D. Student in Computer Science</p>

<p>School of Computer Science&nbsp;</p>

<p>College of Computing</p>

<p>Georgia Institute of Technology</p>

<p>&nbsp;</p>

<p>Date: Monday, November 4, 2019</p>

<p>Time: 10:30 - 12:00 (EST)</p>

<p>Location: KACB 3126</p>

<p>&nbsp;</p>

<p>&nbsp;</p>

<p>Committee:</p>

<p>------------</p>

<p>Dr. Santosh Pande (Advisor, School of Computer Science, Georgia Institute of Technology)</p>

<p>Dr. Greg Eisenhauer (Advisor,&nbsp;School of Computer Science, Georgia Institute of Technology)</p>

<p>Dr. Ling Liu (School of Computer Science, Georgia Institute of Technology)</p>

<p>Dr. Vivek Sarkar (School of Computer Science,&nbsp; Georgia Institute of Technology)</p>

<p>&nbsp;</p>

<p>Abstract:</p>

<p>-----------</p>

<p>Transient&nbsp; faults&nbsp; are&nbsp; a&nbsp; significant&nbsp; concern&nbsp; for&nbsp; emerging&nbsp; extreme-scale&nbsp; high&nbsp; performance computing (HPC) systems. &nbsp;</p>

<p>This nascent problem is exacerbated by technology&nbsp; trends&nbsp; toward&nbsp; smaller&nbsp; transistor&nbsp; size,&nbsp; higher&nbsp; circuit&nbsp; density&nbsp; and &nbsp;</p>

<p>he&nbsp; use&nbsp; of near-threshold voltage techniques to save power.&nbsp; While transient faults in memories&nbsp; can&nbsp; be&nbsp; managed&nbsp; with &nbsp;</p>

<p>parity&nbsp; techniques,&nbsp; faults&nbsp; in&nbsp; processing&nbsp; components&nbsp; are not so easily detectable&nbsp;and manageable.&nbsp; These faults can&nbsp;</p>

<p>cause major problems for HPC applications.&nbsp; Faults in different CPU components manifest differently and are best&nbsp;</p>

<p>approached in different ways.&nbsp; Faults manifested in floating point units are highly likely to corrupt applications&rsquo; state&nbsp;</p>

<p>without any warnings and lead to incorrect outputs (called Silent Data corruptions or SDCs), and faults in the integer&nbsp;</p>

<p>computations are more likely to cause control problems and/or manifest themselves as addressing faults which cause&nbsp;</p>

<p>application termination (named Soft Failures or SFs), because integer instructions tend to dominate control and address&nbsp;</p>

<p>calculations in HPC applications.&nbsp; While SDCs harm the confidence in computations and could lead to inaccurate scientific&nbsp;</p>

<p>insights, SFs degrade system efficiency and performance; SFs require the impacted jobs to be restarted from&nbsp;</p>

<p>their checkpoints and recomputing lost computations before continuing the normal operation.&nbsp; To address these&nbsp;</p>

<p>challenges, this thesis proposes a set of lightweight techniques to mitigate the impact of transient faults by both&nbsp;</p>

<p>exploiting application properties for SDC detection, and by leveraging compiler techniques for recovery.&nbsp; This work&nbsp;</p>

<p>makes the following contributions:&nbsp;</p>

<p>&nbsp;</p>

<p>First, this thesis proposes LADR, a low-cost application-level SDC detector for scientific applications. LADR protects&nbsp;</p>

<p>scientific applications from SDCs by watching for&nbsp; data&nbsp; anomalies in their state&nbsp; variables.&nbsp; It&nbsp; employs&nbsp; compile-time &nbsp;</p>

<p>data-flow analysis to minimize the number of monitored variables, thereby reducing runtime and memory overheads&nbsp;</p>

<p>while maintaining a high level of fault coverage with low false positive rates.</p>

<p>&nbsp;</p>

<p>Second, this thesis proposes CARE, a light-weight compiler-assisted technique for on-the-fly repair of processes crashed&nbsp;</p>

<p>by transient faults in the address path.&nbsp; The goal of CARE is to facilitate repaired processes&nbsp;to simply continue their executions&nbsp;</p>

<p>instead of being terminated and restarted. During the compilation of applications, CARE constructs a recovery kernel for each&nbsp;</p>

<p>load/store. It traps segmentation faults caused by the use of corrupted addresses, extracts appropriate state from the suspended&nbsp;</p>

<p>process and uses the recovery kernels to attempt to recreate a correct version of the address, so that it&nbsp; can&nbsp; retry&nbsp; the&nbsp; faulted &nbsp;</p>

<p>load/store&nbsp; and&nbsp; continue&nbsp; the&nbsp; application.&nbsp; CARE,&nbsp; leveraging compile-time preparation and using segmentation faults as&nbsp;</p>

<p>a detection mechanism, ensures that there is no run-time overhead under non-faulty execution and spends&nbsp;</p>

<p>minimal time in recovery under a runtime fault.</p>

<p>&nbsp;</p>

<p>Finally, despite the promising results achieved by CARE, the scope of recovery is very challenging for important runtime&nbsp;</p>

<p>artifacts such as&nbsp;induction variable updates, which cause a significant portion of failures in many other scientific workloads.</p>

<p>To address this challenge, we look into the code optimization techniques in modern compilers, and found that some of these&nbsp;</p>

<p>techniques, such as strength-reduction, can open up opportunities by turning&nbsp; array&nbsp; accesses&nbsp; into&nbsp; strength-reduced&nbsp; pointers &nbsp;</p>

<p>which are&nbsp; updated&nbsp; independently&nbsp; in&nbsp; lockstep. &nbsp; Modified induction-variable-based strength-reduction allows&nbsp;independent&nbsp; but&nbsp;&nbsp;</p>

<p>equivalent&nbsp; computations (patterns) so that&nbsp;a correct value for the corrupted pointer can be inferred from the value of&nbsp;another.&nbsp;</p>

<p>Thus, smarter recovery kernels are designed to&nbsp; recover from&nbsp; a broader range of&nbsp; soft&nbsp; failures by exploiting&nbsp;&ldquo;accidental&rdquo;&nbsp;</p>

<p>redundancy introduced by code optimization techniques with no impact on code speed.</p>

<p>&nbsp;</p>
]]></body>
  <field_summary_sentence>
    <item>
      <value><![CDATA[Lightweight Resiliency Mechanism via Compiler Techniques]]></value>
    </item>
  </field_summary_sentence>
  <field_summary>
    <item>
      <value><![CDATA[]]></value>
    </item>
  </field_summary>
  <field_time>
    <item>
      <value><![CDATA[2019-11-04T10:30:00-05:00]]></value>
      <value2><![CDATA[2019-11-04T12:00:00-05:00]]></value2>
      <rrule><![CDATA[]]></rrule>
      <timezone><![CDATA[America/New_York]]></timezone>
    </item>
  </field_time>
  <field_fee>
    <item>
      <value><![CDATA[]]></value>
    </item>
  </field_fee>
  <field_extras>
      </field_extras>
  <field_audience>
          <item>
        <value><![CDATA[Faculty/Staff]]></value>
      </item>
          <item>
        <value><![CDATA[Public]]></value>
      </item>
          <item>
        <value><![CDATA[Graduate students]]></value>
      </item>
          <item>
        <value><![CDATA[Undergraduate students]]></value>
      </item>
      </field_audience>
  <field_media>
      </field_media>
  <field_contact>
    <item>
      <value><![CDATA[]]></value>
    </item>
  </field_contact>
  <field_location>
    <item>
      <value><![CDATA[]]></value>
    </item>
  </field_location>
  <field_sidebar>
    <item>
      <value><![CDATA[]]></value>
    </item>
  </field_sidebar>
  <field_phone>
    <item>
      <value><![CDATA[]]></value>
    </item>
  </field_phone>
  <field_url>
    <item>
      <url><![CDATA[]]></url>
      <title><![CDATA[]]></title>
            <attributes><![CDATA[]]></attributes>
    </item>
  </field_url>
  <field_email>
    <item>
      <email><![CDATA[]]></email>
    </item>
  </field_email>
  <field_boilerplate>
    <item>
      <nid><![CDATA[]]></nid>
    </item>
  </field_boilerplate>
  <links_related>
      </links_related>
  <files>
      </files>
  <og_groups>
          <item>221981</item>
      </og_groups>
  <og_groups_both>
          <item><![CDATA[Graduate Studies]]></item>
      </og_groups_both>
  <field_categories>
          <item>
        <tid>1788</tid>
        <value><![CDATA[Other/Miscellaneous]]></value>
      </item>
      </field_categories>
  <field_keywords>
          <item>
        <tid>102851</tid>
        <value><![CDATA[Phd proposal]]></value>
      </item>
      </field_keywords>
  <field_userdata><![CDATA[]]></field_userdata>
</node>
