Charm++ manual reorganization
[charm.git] / doc / charm++ / credits.tex
1 \section{History}
2
3 The {\sc Charm} software was developed as a group effort of the Parallel
4 Programming Laboratory at the University of Illinois at Urbana-Champaign.
5 Researchers at the Parallel Programming Laboratory keep \charmpp\ updated for
6 the new machines, new programming paradigms, and for supporting and simplifying
7 development of emerging applications for parallel processing.  The earliest
8 prototype, Chare Kernel(1.0), was developed in the late eighties. It consisted
9 only of basic remote method invocation constructs available as a library.  The
10 second prototype, Chare Kernel(2.0), a complete re-write with major design
11 changes.  This included C language extensions to denote Chares, messages and
12 asynchronous remote method invocation.  {\sc Charm}(3.0) improved on this
13 syntax, and contained important features such as information sharing
14 abstractions, and chare groups (called Branch Office Chares).  {\sc Charm}(4.0)
15 included \charmpp\ and was released in fall 1993.  \charmpp\ in its initial
16 version consisted of syntactic changes to \CC\ and employed a special
17 translator that parsed the entire \CC\ code while translating the syntactic
18 extensions.  {\sc Charm}(4.5)  had a major change that resulted from a
19 significant shift in the research agenda of the Parallel Programming
20 Laboratory. The message-driven runtime system code of the \charmpp\ was
21 separated from the actual language implementation, resulting in an
22 interoperable parallel runtime system called {\sc
23 Converse}. The \charmpp\ runtime system was
24 retargetted on top of {\sc Converse}, and popular programming paradigms such as
25 MPI and PVM were also implemented on {\sc Converse}. This allowed
26 interoperability between these paradigms and \charmpp. This release also
27 eliminated the full-fledged \charmpp\ translator by replacing syntactic
28 extensions to \CC\ with \CC\ macros, and instead contained a small language and
29 a translator for describing the interfaces of \charmpp\ entities to the runtime
30 system.  This version of \charmpp, which, in earlier releases was known as {\em
31 Interface Translator \charmpp}, is the default version of \charmpp\ now, and
32 hence referred simply as {\bf \charmpp}.  In early 1999, the runtime system of
33 \charmpp\ 
34 %was formally named the Charm Kernel, and 
35 was rewritten in \CC.
36 Several new features were added. The interface language underwent significant
37 changes, and the macros that replaced the syntactic extensions in original
38 \charmpp, were replaced by natural \CC\ constructs. Late 1999, and early
39 2000 reflected several additions to \charmpp{}, when a load balancing
40 framework and migratable objects were added to \charmpp{}.
41
42 \section {Acknowledgements}
43
44 The Charm software was developed as a
45 group effort.  The earliest prototype, Chare Kernel(1.0), was
46 developed by Wennie Shu and Kevin Nomura working with Laxmikant
47 Kale.  The second prototype, Chare Kernel(2.0), a complete
48 re-write with major design changes, was developed by a team
49 consisting of Wayne Fenton, Balkrishna Ramkumar, Vikram Saletore,
50 Amitabh B. Sinha and Laxmikant Kale. The translator for Chare
51 Kernel(2.0) was written by Manish Gupta.  Charm(3.0), with
52 significant design changes, was developed by a team consisting of
53 Attila Gursoy, Balkrishna Ramkumar, Amitabh B.  Sinha and
54 Laxmikant Kale, with a new translator written by Nimish Shah.  The
55 \charmpp\ implementation was done by Sanjeev Krishnan.  Charm(4.0)
56 included \charmpp\ and was released in fall 1993.  Charm(4.5) was
57 developed by Attila Gursoy, Sanjeev Krishnan, Milind Bhandarkar,
58 Joshua Yelon, Narain Jagathesan and Laxmikant Kale.  Charm(4.8),
59 developed by the same team included Converse, a parallel runtime
60 system that allows interoperability among modules written using
61 different paradigms within a single application. \charmpp\ runtime
62 system was re-targetted at Converse. Syntactic extensions in
63 \charmpp\ were dropped, and a simple interface translator was
64 developed (by Sanjeev Krishnan and Jay DeSouza) that, along with
65 the \charmpp\ runtime, became the \charmpp\ language.  Charm
66 (5.4R1) included the following: a complete rewrite of the
67 \charmpp\ runtime system (using \CC) and the interface translator
68 (done by Milind Bhandarkar), several new features such as Chare
69 Arrays (developed by Robert Brunner and Orion Lawlor), various
70 libraries (written by Terry Wilmarth, Gengbin Zheng, Laxmikant
71 Kale, Zehra Sura, Milind Bhandarkar, Robert Brunner, and Krishnan
72 Varadarajan.) A coordination language ``Structured Dagger'' was
73 been implemented on top of \charmpp\ (Milind Bhandarkar), dynamic
74 seed-based load balancing (Terry Wilmarth and Joshua Yelon), a
75 client-server interface for Converse programs, and debugging
76 support by Parthasarathy Ramachandran, Jeff Wright, and Milind
77 Bhandarkar, Projections, the performance visualization and
78 analysis tool, was redesigned and rewritten using Java by Michael
79 Denardo. The test suite for \charmpp\ was developed by Michael
80 Lang, Jackie Wang, and Fang Hu. Converse was been ported to ASCI
81 Red (Joshua Yelon), Cray T3E (Robert Brunner), and SGI Origin2000
82 (Milind Bhandarkar). For the current version Charm 6.0 (R1),
83 Converse has been ported to new platforms including BlueGene/[LP]
84 (Kumar, Huang, Bhatele), Cray XT3/4 (Zheng), Apple G5, Myrinet
85 (Zheng), and Infiniband (Chakravorty).  Charm 6.0 introduces a
86 dedicated no network SMP multicore Converse layer for stand-alone
87 workstation experimenters (Zheng, Chakravorty, Kale, Jetley).
88 Charm 6.0 also includes cross platform network topology aware
89 chare placement for 3D tori and mesh networks (Kumar, Huang,
90 Bhatele, Bohm). The test suite was extended for automated testing
91 on all supported platforms by Gengbin Zheng.  The Projection tool
92 was substantially improved by Chee Wai Lee and Isaac Dooley. The
93 Control Point performance tuning framework was created by Isaac
94 Dooley. Debugging support was enhanced with memory inspection
95 features by Filippo Gioachin. The Charisma orchestration language
96 was implemented on top of Charm++ by Chao Huang and Sanjay Kale.
97 Sanjay Kale, Orion Lawlor, Gengbin Zheng, Terry Wilmarth, Filippo
98 Gioachin, Sayantan Chakravorty, Chao Huang, David Kunzman, Isaac
99 Dooley, Eric Bohm, Sameer Kumar, Chao Mei, Pritish Jetley, and
100 Abhinav Bhatele, have been responsible for the changes to the
101 system since the last release.