Chris Pickett
Hello. This is my small but functional
hole in the wall.
My name is Chris Pickett. I completed my Ph.D. in
the Sable Research Group at
McGill where I was supervised
by Clark
Verbrugge. As part of that I worked
with IBM CAS
Canada in Toronto where I was supervised by Allan Kielstra.
My thesis is about software support for speculative multithreading
(SpMT), also known as thread level speculation (TLS), implemented at
the Java virtual machine level.
In a former lifetime I was completely enamored with DJing and
electronic music. You can download a mix CD that I remastered in 2003
from one side of a mixtape originally recorded in 2001
[mp3] (~65
Mb). It's jazzy house music.
That's all for now. Hope you have a nice stay!
chris.pickett [at]
mail.mcgill.ca.
Thesis:
Christopher J. F. Pickett, "Software Method Level Speculation for Java",
Ph.D. Thesis, School of Computer Science, McGill University,
April 2012.
[pdf]
[slides]
[bib]
Teaching:
Christopher J. F. Pickett (Instructor), Jesse Doherty (TA), and
Nurudeen Lameed (TA), "COMP 520: Compiler Design",
School of Computer Science, McGill
University, September–December
2009. [homepage]
Christopher J. F. Pickett (Instructor) and Peng Zhang (TA), "COMP 520: Compiler Design",
School of Computer Science, McGill
University, September–December
2007. [homepage]
Laurie J. Hendren (Instructor) and Christopher J. F. Pickett (TA), "COMP 621: Optimizing Compilers",
School of Computer Science, McGill
University, January–April,
2005. [homepage]
[archived
2005 homepage]
Laurie J. Hendren (Instructor) and Christopher J. F. Pickett (TA), "COMP 520: Compiler Design",
School of Computer Science, McGill
University, September–December,
2004. [homepage]
[archived
2004 homepage]
Software:
SableSpMT:
a Java bytecode interpreter that supports software speculative
speculative multithreading. It is built on top
of SableVM.
TRSpMT: a Java just-in-time compiler that supports software
speculative multithreading. It is built on top of the Testarossa JIT
component of the IBM
J9 Java virtual machine.
libspmt:
a library for speculative multithreading. I built this library to
isolate the changes necessary to support SpMT / TLS as much as
possible from the host platform. It is used to share resources
between SableSpMT and TRSpMT.
SootSpMT:
a Java bytecode compiler framework to support speculative
multithreading. It is built on top
of Soot. SootSpMT is
necessary to prepare classfiles for use by SableSpMT. It also
performs the return value use and parameter dependence analyses
described in SABLE-TR-2004-6.
Check: a unit testing
framework for C. I needed a unit testing framework for libspmt and
ended up maintaining Check. It works well and is used by quite a lot
of projects.
(P)NFG: The
(Programmable) Narrative Flow Graph compiler and runtime system. This
is a system for writing and playing interactive fiction games. Its
distinguishing feature is a Petri Net backend that lends itself to
formal verification. Félix Martineau and Clark wrote the compiler, I
wrote the runtime system. Current research using (P)NFG is being
pursued by Clark and his students in
the Games Research At McGill
group.
swd:
SVN word diff, a set of scripts to integrate wdiff with
Subversion. They show deleted words in red and inserted words in
green, trim the wdiff output, and otherwise work like svn diff.
These are great for command line work on text documents with
SVN.
ALOCS:
Automated Lock Object Compiler System. This is Richard Halpert's
work in Soot that allows programmers to write safe and efficient
critical sections without specifying anything other than a single
global lock object to protect them.
Dynamic Purity Analysis for
Java. This untitled project (PureSable?) is Haiying Xu's work in
SableVM that provides various dynamic analyses for measuring method
purity and a safe implementation of automatic memoization for Java.
It is built on top of SableSpMT, although it is not inherently
speculative.
Publications:
Christopher J.F. Pickett, Clark Verbrugge, and Allan Kielstra, "Software Speculative
Multithreading for Java",
ACM Student Research Competition (SRC) at the
22nd Annual ACM SIGPLAN Conference on Object-Oriented Programming,
Systems, Languages, and Applications (OOPSLA'07),
October 2007.
[extended abstract]
[poster]
[slides]
[bib]
[SRC]
[doi]
Richard L. Halpert, Christopher J.F. Pickett, and Clark Verbrugge,
"Component-Based Lock Allocation", 16th International Conference on
Parallel Architectures and Compilation Techniques (PACT'07),
September 2007.
[pdf]
[bib]
[doi]
[conference]
[source]
[experiments]
[benchmarks]
Haiying Xu, Christopher J.F. Pickett, and Clark Verbrugge, "Dynamic
Purity Analysis for Java Programs", 7th ACM SIGPLAN-SIGSOFT Workshop on Program Analysis for
Software Tools and Engineering (PASTE'07) at FCRC'07,
June 2007.
[pdf]
[slides]
[bib]
[doi]
[workshop]
[source]
Christopher J.F. Pickett and Clark Verbrugge, "Software Thread Level
Speculation for the Java Language and Virtual Machine Environment",
18th International Workshop on
Languages and Compilers for Parallel Computing (LCPC'05),
October 2005.
[pdf]
[LNCS version (shorter)]
[slides]
[bib]
[doi]
[workshop]
Christopher J.F. Pickett and Clark Verbrugge, "SableSpMT: A Software
Framework for Analysing Speculative Multithreading in Java",
6th ACM SIGPLAN-SIGSOFT Workshop on
Program Analysis for
Software Tools and Engineering (PASTE'05) at ESEC/FSE'05,
September 2005.
[pdf]
[slides]
[bib]
[doi]
[workshop]
[source]
Christopher J.F. Pickett and Clark Verbrugge and Félix Martineau,
"(P)NFG: A Language and Runtime System for Structured Computer Narratives",
1st Annual North American Game-On
Conference (GameOn'NA 2005), August 2005.
[pdf]
[bib]
[conference]
[source]
Christopher J.F. Pickett and Clark Verbrugge, "Return Value Prediction
in a Java Virtual Machine",
Second Value-Prediction and
Value-Based Optimization Workshop (VPW2) at ASPLOS XI,
October 2004. Partly superseded by SABLE-TR-2009-1. [pdf] [slides] [bib] [workshop]
Kouichi Takahashi, Katsuyuki Yugi, Kenta Hashimoto, Yohei Yamada,
Christopher J.F. Pickett, and Masaru Tomita, "Computational
Challenges in Cell Simulation", IEEE
Intelligent Systems, September 2002. [pdf]
Technical Reports:
Christopher J.F. Pickett, Clark Verbrugge, and Allan Kielstra,
"Adaptive Software Return Value Prediction", Technical Report SABLE-TR-2010-3, Sable
Research Group, McGill University, April 2010. Submitted
to PLDI'10 and rejected. [pdf] [bib]
Christopher J.F. Pickett, Clark Verbrugge, and Allan Kielstra,
"Understanding Method Level Speculation", Technical Report SABLE-TR-2010-2, Sable
Research Group, McGill University, April 2010. Submitted
to ESOP'10 and rejected. [pdf] [bib]
Christopher J.F. Pickett, "Software Speculative Multithreading for
Java", Ph.D. Proposal, School of
Computer Science, McGill University,
November 2009.
[pdf]
[slides]
Christopher J.F. Pickett, Clark Verbrugge, and Allan Kielstra,
"Understanding Method Level Speculation", Technical Report SABLE-TR-2009-2, Sable
Research Group, McGill University, September 2009. Submitted
to POPL'10 and rejected. [pdf] [bib]
Christopher J.F. Pickett, Clark Verbrugge, and Allan Kielstra,
"Adaptive Software Return Value Prediction", Technical Report SABLE-TR-2009-1, Sable
Research Group, McGill University, June 2009. Submitted
to OOPSLA'09 and rejected. [pdf] [bib]
Christopher J.F. Pickett, Clark Verbrugge, and Allan Kielstra,
"Memory Abstractions for Speculative Multithreading", Technical Report SABLE-TR-2008-3, Sable
Research Group, McGill University, September 2008. Submitted
to MSPC'08 and rejected. Partly superseded by SABLE-TR-2009-2. [pdf] [bib] [call stack slides]
Richard L. Halpert, Christopher J.F. Pickett, and Clark Verbrugge,
"Component-Based Lock Allocation", Technical Report SABLE-TR-2007-3, Sable
Research Group, McGill University, May 2007. Submitted to
PACT'07 and accepted. Superseded by
PACT'07. [pdf] [bib] [source]
Christopher J.F. Pickett, Clark Verbrugge, and Allan Kielstra,
"libspmt: A Library for Speculative Multithreading", Technical Report SABLE-TR-2007-1, Sable
Research Group, McGill University, March 2007. Submitted to
VEE'07 and rejected. [pdf] [bib] [source]
Christopher J.F. Pickett, "Formal Verification of Computer
Narratives", Technical Report
GR@M-TR-2005-1, Games Research At McGill, McGill University,
December 2005. Final report for COMP-525, some material newer than
GameOn-NA'05. [pdf]
[slides]
[bib]
Christopher J.F. Pickett and Clark Verbrugge, "Speculative
Multithreading in a Java Virtual Machine",
Technical Report SABLE-TR-2005-1,
Sable Research Group, McGill University, March 2005. Submitted
to OOPSLA'05 and rejected. Superseded by PASTE'05 and LCPC'05. [pdf] [slides] [bib]
Christopher J.F. Pickett and Clark Verbrugge, "Compiler Analyses for
Improved Return Value Prediction",
Technical Report SABLE-TR-2004-6,
Sable Research Group, McGill University, October 2004.
Submitted to CC'05 and rejected. [pdf] [bib]
Presentations:
Christopher J.F. Pickett, Clark Verbrugge, and Allan Kielstra,
"Software Speculative Multithreading for Java",
The First McGill University School
of Computer Science (SOCS) Alumni Open House, May 2008. Same
as SRC'07 poster.
[abstract]
[poster]
Christopher J.F. Pickett, Clark Verbrugge, and Allan Kielstra,
"Software Speculative Multithreading for Java",
The Fifth McGill University
Interdisciplinary Graduate Student Research Symposium
(IGSRS'08), April 2008. Same as SRC'07 poster.
[abstract]
[poster]
Christopher J.F. Pickett, Clark Verbrugge, and Allan Kielstra,
"Software Speculative Multithreading for Java",
McGill University School of
Computer Science (SOCS) Prelude Seminar Series, April 2008.
Same as SRC'07 poster.
[abstract]
[poster]
Christopher J.F. Pickett, Richard Halpert, Haiying Xu, Clark Verbrugge
and Allan Kielstra, "An Optimistic Perspective on Speculative
Multithreading", Workshop on
Challenges for Parallel Computing (CPC'06) at IBM CASCON '06,
October 2006.
[slides]
Christopher J.F. Pickett, Clark Verbrugge and Allan Kielstra,
"Software Speculative Multithreading for Java", 5th Workshop on Compiler-Driven
Performance (CDP'06) at IBM CASCON '06, October 2006. [slides]
Christopher J.F. Pickett and Clark Verbrugge, "Optimized Return Value
Prediction for Java",
2nd Québec Programming Languages Seminar (QCPLS-II), November 2004. [slides]
Christopher J.F. Pickett and Clark Verbrugge, "Compiler Analyses for
Improved Return Value Prediction",
3rd Workshop on Compiler-Driven Performance (CDP'04) at IBM CASCON '04, October 2004. [slides]
Non-publications:
Saravanan Sundararajan and Robert E. MacKenzie, "Residues Involved in
the Mechanism of the Bifunctional Methylenetetrahydrofolate
Dehydrogenase-Cyclohydrolase", Journal of Biological Chemistry, 277(21):
pp. 18703–9, May 2002.
[pdf] (I got an
acknowledgement on this paper, working towards my B.Sc. in
Biochemistry Honours thesis. I keep it here because it was the
first real research project I was involved in.)
P.S.
My only commitments to this website are to keep it: (1) up-to-date (2)
not "under construction". Easy to do if it's small.