\documentclass[titlepage,twoside,11pt]{article}

\begin{document}

\sloppy

\pagestyle{empty}

%\title{David Bryan Carpenter: R\'{e}sum\'{e}}
\title{David Bryan Carpenter: Resume}

\author{Northeast Parallel Architectures Center \\
        111 College Place \\
        Syracuse University \\
        Syracuse, NY 13244-4100 \\
        USA\\ \\
        Phone: 315 443-5068 \\
        Email: dbc@npac.syr.edu}


%\date{January 26, 1999}
\maketitle

\cleardoublepage

\pagestyle{plain}

\section*{Personal Details}

\begin{description}
\item{Born:}
15th January, 1958, Birmingham, UK
\item{Nationality:}
British
\end{description}

\section*{Skills}

Parallel computing,
computational science,
parallel languages,
parallel compilers and library support,
runtime libraries for distributed arrays,
message passing libraries (MPI),
object-oriented programming (C++ and Java),
scientific programming (Fortran),
functional programming and logic programming,
formal methods,
UNIX system programming,
theoretical physics.

\section*{Education}

\begin{description}
\item{BSc.,}
Physics, from Westfield College, London.
First Class Honours.  Degree awarded 1979.
\item{PhD.,} Theoretical High Energy Physics, also from Westfield.
Supervisor: Prof.~E.~Leader.
Thesis: {\em Lattice and Large N Studies of Two-dimensional QCD},
submitted 1983.  Degree awarded 1984.
\end{description}

%\cleardoublepage

\section*{Positions Held}

\begin{description}
\item{1996-present.}
Research Scientist, Northeast Parallel Architectures Center, Syracuse, USA.
\item{1994-95.}
Programmer, High Performance Computing Centre, Southampton, UK.
\item{1989-93.}
Research Fellow in Department of Electronics and Computer Science
(jointly with Department of Physics through 1991-92),
Southampton, UK.
\item{1989.}
Employed at ``Transputer Technology Solutions'', Southampton, UK.
\item{1985-1988.}
Research Fellow in Computational Physics Group, Southampton, UK.
\item{1985.}
Held Royal Society Overseas Fellowship at DESY, Hamburg, Germany.
\item{1983-1984.}
Research Fellow in Theoretical Physics Department,
Edinburgh University.
\end{description}

\cleardoublepage

\section*{Career Summary}

\subsection*{Physics}

     My doctoral research in theoretical physics involved applying
newly-developed computational techniques for handling lattice fermions
to a low-dimensional field theory \cite{2d}.  For the first two years
of my postdoctoral career I worked as a physicist, engaged in more or
less theoretical work on lattice gauge theories and field theory
\cite{free,block,sigma}.
At Edinburgh I worked in David Wallace's group and was exposed to one
of the early massively parallel computers---the ICL DAP.

     In 1985 I moved to Southampton, a recruit to Tony Hey's newly formed
computational physics group.  Initially working as an application
programmer, I spent several years implementing physics codes on
parallel computers---especially Transputer systems.  In close
collaboration with {\em inmos} we wrote some of the first scientific
programs to run on Transputers.  Between 1989 and 1992 I
collaborated with Prof Chris Sachrajda and a group of European
physicists on first-principles calculations of the parameters of heavy
quark systems \cite{meson1,meson2,meson3}.  Earlier collaborations with
physicists involved simulation of solid state \cite{simulation,xy} and
pure gauge theories \cite{glue}.  During this time, however, my
principal interests moved increasingly towards computational issues.

\subsection*{The Supernode Project (1985-88)}

     I have been particularly interested in design and development of
communication libraries to support data-parallel computation (and
the associated language issues).
This interest started during the ESPRIT {\em Supernode} project,
which developed a reconfigurable multi-Transputer supercomputer.  I
worked on programming paradigms for exploiting Transputer networks in
simulation of physical systems \cite{monte}.  The deliverables for that
project included {\em occam} libraries and harnesses to facilitate
distribution of grid-oriented problems \cite{supernode}.

\subsection*{The PUMA Project (1989-91)}

     During the subsequent {\em PUMA} (Parallel Universal Message-passing
Architectures) project I designed and prototyped a more advanced
collective communication library, {\em ACL} \cite{acl}.  The PUMA
project was strongly influenced by Valiant's ideas on Bulk
Synchronous Parallel (BSP) computation, which were popular at that
time.  The choice of some of the collective communication primitives in
ACL was influenced by the BSP model.  Other features of the ACL model
were high-level primitives for dynamically spawning multi-dimensional
process arrays, and the use of abstract data types to describe process
arrays and distributed data.  The subsequent work on Adlib was
influenced by this latter feature of ACL.  ACL was initially implemented
in {\em occam}.

     In the PUMA project John Merlin worked on the {\em ADAPT} system
for semi-automatic parallelisation of Fortran programs with distributed
data.  ADAPT was one of many precursors to High Performance Fortran
(HPF), and John was later involved in the HPF Forum.  During PUMA he
proposed a collective communication library called ADLIB which the
ADAPT translation tool would target.  The ADAPT system was not
completed during the PUMA project, and ADLIB as specified at that time
remained unimplemented.

\subsection*{Computer Science (1992)}

     After the PUMA project finished I returned to physics
collaboration for a year.  Also at that time I became interested in
theoretical (CSP-based) models of the dynamic channel communication
operations used in the implemention of ACL.

     In late 1992 I worked briefly with Hugh Glaser on the FAST
(Functional programming on Arrays of Transputers) project.  We
implemented a few scientific codes in the lazy functional language
Haskell, with a view, ultimately, to automatic parallelisation \cite{fast}.

\subsection*{HPF and Adlib (1993-95)}

     In 1993 HPF became fashionable.  John Merlin and I started a
collaboration to implement a prototype HPF translation system,
recycling components of the ADAPT system to build an HPF-to-Fortran
translator, with technology from ACL to implement the run-time library.
Some time into this project we obtained formal funding to continue from
the UK JISC and EPSRC councils.

     In the early stages of project I hoped we could formally specify our
translation scheme for HPF.  This proved impractical, but parts of a
translation scheme were prototyped in the logic language Prolog.

     The initial specification of the new run-time library, {\em
Adlib}, was completed in 1994.  Adlib was defined as a C++ class
library.  Unlike ACL, which was designed primarily to support an {\em
ad hoc} set of common applications and algorithms, Adlib was designed
specifically for translation of HPF.  It supported the full HPF
distributed data model, providing high-level gather/scatter and other
data remapping operations on HPF arrays.  It also provided a set of
arithmetic and reduction operations suitable for implementing the
Fortran 90 array intrinsics on distributed data.

     An initial implementation of Adlib, built on MPI, was completed
in 1995 \cite{malaga}.  Adlib was implemented in C++.  A restricted Fortran
interface, suitable as a target for the modified ADAPT translator, was
also provided.

     The associated subset HPF translation system, {\em shpf} \cite{shpf}, 
was installed at several beta test sites during 1995.  It is now maintained
by John Merlin, who has moved to the European Center for Parallel
Computing in Vienna.

\subsection*{PCRC (1996-1998)}

     In 1996 I moved to the Northeast Parallel Architectures Center
(NPAC) in Syracuse, New York.  I was employed in the ongoing Parallel
Compiler Runtime Consortium project (PCRC).  This was a DARPA-funded
project involving several leading research groups working on parallel
runtime systems and compilers.  NPAC was prime contractor.

     Through the influence of Xiaoming Li, who was visiting NPAC at that
time, the NPAC group was collaborating with universities in China to develop a
new HPF translator.  I prototyped a runtime system for the emerging
compiler on top of Adlib.  When this proved successful
\cite{PCRC_based}, it was decided to that a version of Adlib would be
adopted as one of NPAC's contributions to the runtime software to be
delivered in PCRC.  The library was redesigned and rewritten as
a standalone piece of software: the NPAC PCRC Runtime Kernel
\cite{NPAC_PCRC_kernel}.

     Under direction of Geoffrey Fox, the PCRC group was managed by Don
Leskiw and later by Xiaoming Li.  In mid 1997, Xiaoming left and I took
over as a local project leader.  At that time the NPAC PCRC group
included myself, two postdoctoral researchers from China, and two
graduate students.  I was responsible for producing reports to DARPA
for the PCRC project as a whole, as well as leading group meetings and
directing the other researchers in the NPAC group.

     The PCRC project was extended by six months, and formally finished
in July 1998.  The collected works of PCRC are available through my
Web pages at http://www.npac.syr.edu/projects/pcrc/.

\subsection*{HPJava}

     An unforseen influence on the development of PCRC was the
emergence of Java.  In 1996 the participants of the project issued a
draft white paper on the implications of Java for High Performance
Computing.  Subsequently Syracuse organized a series of workshops on
the theme of Java for Computational Science and Engineering.  This led
to the formation of the Java Grande Forum---a group aiming to promote
Java standards for communication and compute intensive applications.

     The acronym ``HPJava'' had been coined in the PCRC white paper.  NPAC
adopted the name for its Java environment for SPMD computing.  This
environment is envisaged to contain Java bindings for
distributed-array based libraries, general MIMD programming libraries,
and a preprocessor for an extended dialect of Java.

     The first useable component of the HPJava environment is our
recently released {\em mpiJava} binding of MPI \cite{mpiJava}.  At the
instigation of Geoffrey Fox we had been experimenting with Java
interfaces to native MPI since 1996
\cite{ExptsHPJava,JavaScientific}.
I specified a full Java API for MPI in late `97.  It was implemented by
graduate students under my supervision during 1998.  This API
influenced the draft API specification produced for Java
Grande, in collaboration with several groups outside NPAC, later that
year \cite{MPIposition}.

\subsection*{HPspmd (1998-present)}

     By 1997 those of us remaining in the PCRC group at NPAC were
doubtful about the prospects for producing a full HPF compiler with
useful performance.  On the other hand we had a runtime library.

     Me and Guansong Zhang, with input from Geoffrey Fox and
Yuhong Wen, suggested adopting a language model motivated in part by
one of the C++ interfaces to Adlib.  This interface provided classes to
describe distributed arrays and a few ``control construct'' macros to
simplify traversal of those arrays, but required the programmer to
explicitly specify calls to collective communication functions (rather
than relying on the compiler to insert them automatically).  The pure
C++ class library implementation of this model was very inefficient,
but the suggestion was that by shifting the distributed arrays and
distributed control constructs into the syntax of a programming
language, these inefficiencies could be removed.  Because communication
and computation placement are specified explicitly by the programmer,
this kind of language would be much easier to implement efficiently
than HPF \cite{LanguageBindings,HPspmdJava}.

     The ultimate success of this language model has yet to be proven,
but in April of 1998 I wrote a proposal with Geoffrey Fox to the
National Science Foundation \cite{HPspmd}, to explore programming
models based on advanced language bindings of runtime libraries.  The
proposal was approved and funded at a level of \$115k per annum over
three years.  The project formally started in December 1998.

     The initial implementation of our HPspmd language extensions will
be in the HPJava environment \cite{JavaSPMD,HPJava}.  The extensions
will be handled by a source to source preprocessor, under development
by Guansong Zhang and students.  The choice of Java as base language is
justified on the basis that it is a simple language with useful support
for complicated data types, but we are also considering Fortran
bindings of the same model.  Xiaoming Li, now back in China, is
interested in implementing a translator for the Fortran-based HPspmd
system in his group.

     The HPspmd language extensions are supposed to be useful
for interfaces to any distributed-array based libraries---not only the
PCRC runtime kernel.  We are collaborating with the
developers of the Global Arrays (GA) toolkit \cite{ARMCI}, and eventually
hope to incorporate an interface to GA and other libraries into our
environment.

\cleardoublepage

\begin{thebibliography}{9}

\bibitem{2d} D.B.~Carpenter, {\em Two Dimensional Lattice QCD in Quenched
Approximation.} Nucl. Phys. B228 (1983) 365.

\bibitem{free} D.B.~Carpenter and C.F.~Baillie, {\em Free Fermion Propagators
and Lattice Finite-Size Effects.} Nucl. Phys. B260 (1985) 103.

\bibitem{block} D.B.~Carpenter, {\em Blocking Transformations for Lattice
Fermions.} DESY Preprint 85-064.

\bibitem{sigma} S.J.~Hands and D.B.~Carpenter, {\em Lattice Sigma Model
and Fermion Doubling.} Nucl. Phys. B266 (1986) 285.

\bibitem{simulation} C.R.~Askew, D.B.~Carpenter, J.T.~Chalker, A.J.G.~Hey,
D.A.~Nicole and D.J.~Pritchard, {\em Simulation of Statistical Mechanical
Systems on Transputer Arrays.} Computer Physics Communications 42 (1986) 21.

\bibitem{monte} C.R.~Askew, D.B.~Carpenter, J.T.~Chalker, A.J.G.~Hey,
M.~Moore, D.A.~Nicole and D.J.~Pritchard,
{\em Monte Carlo Simulation on Transputer Arrays.}
Parallel Computing 6 (1988) 247.

\bibitem{supernode} D.B.~Carpenter and J.H.~Merlin,
{\em Gauge Field Theory Simulation on Transputer Arrays.}
ESPRIT project P1085, Workpackage 7, 3rd deliverable report (1989).

\bibitem{tsp} J.R.~Allwright and D.B.~Carpenter,
{\em A Distributed Implementation of Simulated Annealing for the
Travelling Salesman Problem.}
Parallel Computing 10 (1989) 335.

\bibitem{xy} D.B.~Carpenter and J.T.~Chalker, {\em The Phase Diagram
of a Generalised XY Model.} J. Phys: Condens. Matter I (1989) 4907.

\bibitem{glue} B.~Carpenter, C.~Michael and M.J.~Teper,
{\em $O^+$ and $2^+$ Glueball Masses from Large Lattices in SU(2)
Lattice Gauge Theory.} Phys. Lett. B198 (1987) 511.

\bibitem{decay} C.R.~Allton, D.B.~Carpenter, V.~Lubicz, L.~Maiani,
G.~Martinelli and C.T.~Sachrajda, {\em Decay Constants of Heavy Mesons.}
Nuclear Physics B (Proc. Suppl.) 20 (1991) 504.

\bibitem{meson1} M.~Bochicchio, G.~Martinelli,
C.R.~Allton, C.T.~Sachrajda, D.B.~Carpenter,
{\em Heavy-quark spectroscopy on the lattice}
Nuclear Physics B 372 (1992) 403.

\bibitem{meson2} A.~Abada, C.R.~Allton, Ph.~Boucard, D.B.~Carpenter,
M.~Crisafulli, J.~Galand, S.~G\"{u}sken, G.~Martinelli, O.~P\`{e}ne,
C.T.~Sachrajda, R.~Sarno, K.~Schilling and R.~Sommer,
{\em Meson Spectroscopy and Decay Constants with Wilson Fermions at
$\beta = 6.4$}
Nucl.Phys. B376 (1992) 172.

\bibitem{meson3} A.~Abada, C.R.~Allton, Ph.~Boucard, D.B.~Carpenter,
M.~Crisafulli, S.~G\"{u}sken, P.~Hernadez, V.~Lubicz, G.~Martinelli,
O.~P\`{e}ne, C.T.~Sachrajda, K.~Schilling, G.~Siegert and R.~Sommer,
{\em Semi-leptonic Decays of Heavy Flavours on a Fine-grained Lattice}
Nucl.Phys. B416 (1994) 675.

\bibitem{acl} D.B.~Carpenter, {\em Array Communication Library:
Introduction.} ESPRIT project PUMA, Workpackage 5.1, report (1992).

\bibitem{fast} D.B.~Carpenter and H.~Glaser,
{\em Some Lattice-Based Scientific Problems, expressed in Haskell},
Journal of Functional Programming, 6(3):419-443, May 1996.

\bibitem{malaga} D.B.~Carpenter,
{\em {\em Adlib}: A Distributed Array Library to Support HPF Translation}.
Presented at 5th Workshop on Compilers for Parallel Computers, Malaga (1995).

\bibitem{shpf}
John Merlin, Bryan Carpenter, and Tony Hey.
{\em {\em shpf}: a subset High Performance Fortran compilation system}.
Fortran Journal, pages 2--6, March 1996.

\bibitem{PCRC_based}
Guansong Zhang, Bryan Carpenter, Geoffrey Fox, Xiaoming Li, Xinying Li, and
Yuhong Wen.
{\em PCRC-based HPF compilation}.
In {\em 10th International Workshop on Languages and Compilers for
Parallel Computing}, volume 1366 of Lecture Notes in Computer Science.
Springer, 1997.

\bibitem{NPAC_PCRC_kernel}
Bryan Carpenter, Guansong Zhang, and Yuhong Wen.
{\em NPAC PCRC runtime kernel definition}.
Technical Report CRPC-TR97726, Center for Research on Parallel Computation,
1997.

\bibitem{ExptsHPJava}
Bryan Carpenter, Yuh-Jye Chang, Geoffrey Fox, Donald Leskiw, and Xiaoming Li.
{\em Experiments with HPJava}.
Concurrency: Practice and Experience, 9(6):633, 1997. 

\bibitem{JavaScientific}
Bryan Carpenter, Yuh-Jye Chang, Geoffrey Fox, and Xiaoming Li. 
{\em Java as a language for scientific parallel programming.}
In {\em 10th International Workshop on Languages and Compilers for
Parallel Computing}, volume 1366 of Lecture Notes
in Computer Science. Springer, 1997.

\bibitem{JavaSPMD}
Bryan Carpenter, Guansong Zhang, Geoffrey Fox, Xiaoming Li, Xinying Li, and
Yuhong Wen. 
{\em Towards a Java environment for SPMD programming.}
In David Pritchard and Jeff Reeve, editors,
{\em 4th International Europar Conference}, volume 1470 of Lecture
Notes in Computer Science.  Springer, 1998.

\bibitem{HPJava}
Bryan Carpenter, Guansong Zhang, Geoffrey Fox, Xinying Li, and Yuhong Wen.
{\em HPJava: Data parallel extensions to Java.}
To appear in Concurrency: Practice and Experience. 

\bibitem{LanguageBindings}
Bryan Carpenter, Geoffrey Fox, Donald Leskiw, Xinying Li, Yuhong Wen, and
Guansong Zhang.
{\em Language bindings for a data-parallel runtime.}
In Michael Gerndt and Hermann Hellwagner, editors,
{\em 3rd International Workshop on High-Level Parallel Programming Models
and Supportive Environments.}
IEEE Computer Society Press, 1998. 

\bibitem{HPspmdJava}
Guansong Zhang, Bryan Carpenter, Geoffrey Fox, Xinying Li, and Yuhong Wen.
{\em The HPspmd model and its Java Binding.}
In Rajkumar Buyya, editor, {\em High Performance Cluster Computing},
Prentice Hall.  To appear.

\bibitem{HPspmd}
Bryan Carpenter and Geoffrey Fox.
{\em HPspmd: Data Parallel SPMD Programming Models from Fortran to Java.}
Proposal to the National Science Foundation, April 1998. 

\bibitem{ARMCI}
Jarek Nieplocha and Bryan Carpenter.
{\em ARMCI: A Portable Remote Memory Copy Library for Distributed
Array Libraries and Compiler Run-time Systems.}
To be presented at
{\em 3rd Workshop on Runtime Systems for Parallel Programming},
San Juan, Puerto Rico, April 12, 1999.


\bibitem{MPIposition}
Bryan Carpenter, Vladimir Getov, Glenn Judd, Tony Skjellum and Geoffrey Fox.
{\em MPI for Java---Position Document and Draft API Specification.}
Java Grande Forum Technical Report JGF-TR-03. November 1998. 

\bibitem{mpiJava}
Mark Baker, Bryan Carpenter, Geoffrey Fox, Sung Hoon Ko, and Xinying Li.
{\em {mpiJava}: A {Java} interface to {MPI}.}
In {\em First UK Workshop on Java for High Performance Network
Computing, Europar '98}, September 1998.

\end{thebibliography}

\end{document}

