<html><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">DEPARTMENT OF COMPUTER SCIENCE<div><br class="webkit-block-placeholder"></div><div>UNIVERSITY OF CHICAGO</div><div><br class="webkit-block-placeholder"></div><div>Date: Friday, April 4, 2008</div><div>Time: 2:30 p.m.</div><div>Place: Ryerson 251, 1100 E. 58th Street</div><div><br class="webkit-block-placeholder"></div><div>----------------------------------------------------------</div><div><br class="webkit-block-placeholder"></div><div>Speaker:<span class="Apple-tab-span" style="white-space: pre; ">        </span>Chi-Keung Luk</div><div><br class="webkit-block-placeholder"></div><div>From:<span class="Apple-tab-span" style="white-space: pre; ">                </span>Intel Corporation</div><div><br class="webkit-block-placeholder"></div><div>Web page:<span class="Apple-tab-span" style="white-space: pre; ">        <a href="http://www.cs.princeton.edu/~frances/">http://www.ckluk.org/ck/</a></span></div><div><br class="webkit-block-placeholder"></div><div>Title:&nbsp;Exploiting Multicore
Parallelism with Dynamic Instrumentation and Compilation</div><!--StartFragment--><div><br class="webkit-block-placeholder"></div><div>Abstract:&nbsp;The emerging multicore era has brought many opportunities and
challenges to systems research. Two of the challenges I have been focusing on
are (i) how to provide detailed analysis of parallel programs and (ii) how to
map computations in a parallel program to the underlying hardware in order to
achieve the optimal performance.</div><!--StartFragment-->



<div class="MsoNormal">&nbsp;<o:p></o:p></div>

<div class="MsoNormal">For (i), we have developed the Pin dynamic instrumentation
system, which has become very popular for writing architectural and program
analysis tools. By inserting instrumentation codes on the fly, Pin can perform
fine-grain monitoring of the architectural state of a program. As an example, I
will discuss a parallel programming tool called Thread Checker which we built
with Pin for detecting common parallel programming bugs like data races and
deadlocks. I will also discuss the dynamic compilation techniques behind Pin.
In addition, I will present an extension of Pin called PinOS, which performs
whole-system instrumentation (i.e. including both OS and applications) by using
virtualization techniques.</div>

<div class="MsoNormal">&nbsp;<o:p></o:p></div>

<div class="MsoNormal">For (ii), I have developed the Qilin parallel programming
system, which exploits the hardware parallelism available on machines with a
multicore CPU and a GPU. Qilin provides a C++ API for writing data-parallel
operations so that the compiler is alleviated from the difficult job of
extracting parallelism from serial code. At runtime, the Qilin compiler
automatically partitions these API calls into tasks and maps these tasks to the
underlying hardware using an adaptive algorithm. Preliminary results show that
our parallel system can achieve significant speedups (above 10x) over the
serial case for some important computation kernels.</div>

<div class="MsoNormal">&nbsp;<o:p></o:p></div>

<div class="MsoNormal">At the end, I will outline my future works in parallel
programming, compilation, and virtualization.</div>

<!--EndFragment-->


<p class="MsoNormal">---------------------------------------------------------</p><p class="MsoNormal">Host:<span class="Apple-tab-span" style="white-space: pre; ">        </span>John Reppy</p></body></html>