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.