changed sections to subsections
[charm.git] / doc / faq / overview.tex
1 \section{Big Questions}
2
3 \subsubsection{What is Charm++?}
4
5 \htmladdnormallink{Charm++}{http://charm.cs.uiuc.edu/research/charm/} is
6 a runtime library to let C++ objects communicate with each other efficiently.
7 The programming model is thus very much like CORBA, Java RMI, or RPC; but
8 it is targeted towards tightly coupled, high-performance parallel machines.
9 It uses the ``single program, multiple data'' (SPMD) programming model made
10 popular by MPI.
11
12 Charm++ has demonstrated scalability up to thousands of processors,
13 and provides extremely advanced load balancing and object migration facilities.
14
15 \subsubsection{Can Charm++ parallelize my serial program automatically?}
16
17 No.
18
19 Charm++ is used to write ``explicitly parallel'' programs--we don't have
20 our own compiler, so we don't do automatic parallelization. We've found
21 automatic parallelization useful only for a small range of very regular
22 numerical applications.
23
24 However, you should { \em not} have to throw away your serial code;
25 normally only a small fraction of a large program needs to be changed to
26 enable parallel execution. In particular, Charm++'s support for object-oriented
27 programming and high-level abstractions such as Charm++ Arrays make it
28 simpler and more expressive than many other parallel languages. So you
29 will have to write some new code, but not as much as you might think. This
30 is particularly true when using one of the Charm++ \htmladdnormallink{frameworks}{http://charm.cs.uiuc.edu/research/}.
31
32 \subsubsection{I can already write parallel applications in MPI. Why should I use Charm++?}
33
34 Charm++ provides several extremely sophisticated features, such as
35 application-independent object migration, that are very difficult to provide
36 in MPI. If you have a working MPI code but have scalability problems
37 because of dynamic behavior, load imbalance, or communication costs, Charm++
38 might dramatically improve your performance. You can even run your
39 MPI code on Charm++ unchanged using \htmladdnormallink{AMPI}{http://charm.cs.uiuc.edu/research/ampi/}.
40
41 \subsubsection{Will Charm++ run on my machine?}
42
43 Yes.
44
45 Charm++ supports both shared-memory and distributed-memory machines,
46 SMPs and non-SMPs. In particular, we support serial machines, Windows
47 machines, clusters connected via Ethernet, Myrinet or Infiniband, IBM
48 SP series and BlueGene, Cray XT series, and any machine that supports MPI
49 or SHMEM. We normally do our development on Linux workstations, and
50 our testing on large parallel machines. Programs written using Charm++
51 will run on any supported machine.
52
53 No one has ported Charm++ to a vector supercomputer, but it should be
54 possible.
55
56 \subsubsection{Does anybody actually use Charm++?}
57
58 Yes.
59
60 The large, production-quality molecular dynamics application \htmladdnormallink{NAMD}{http://charm.cs.uiuc.edu/research/moldyn/}
61 is built on Charm++.\\
62 The \htmladdnormallink{Center for Simulation of Advanced Rockets}{http://www.csar.uiuc.edu/}
63 has a large physical simulation code built using Charm++.\\
64 We have significant collaborations with groups in Materials Science,
65 Chemistry, and Astrophysics in Illinios, New York, and Washington.
66
67 \subsubsection{Who created Charm++?}
68
69 Prof. \htmladdnormallink{L.V. Kale}{mailto:kale@cs.uiuc.edu}, of the
70 \htmladdnormallink{Computer Science Department}{http://www.cs.uiuc.edu/}
71 of the \htmladdnormallink{University of Illinois at Urbana-Champaign}{http://www.uiuc.edu/},
72 and his research group, the \htmladdnormallink{Parallel Programming Lab}{http://charm.cs.uiuc.edu/">Parallel}.
73 Nearly a hundred people have contributed something
74 to the project over the course of aproximately 15 years; a partial list
75 of contributors appears in the \htmladdnormallink{people}{http://charm.cs.uiuc.edu/people/}'s page.
76
77 \subsubsection{What is the future of Charm++?}
78
79 Our research group of approximately twenty people are actively engaged
80 in maintaining and extending Charm++; and in particular the Charm++ 
81 \htmladdnormallink{frameworks}{http://charm.cs.uiuc.edu/research/}.
82 Several other groups are dependent on Charm++, so we expect to continue
83 improving Charm++ indefinitely.
84
85 \subsubsection{How is Charm++ Licensed?}
86
87 Charm++ is open-source and free for research, educational, and academic
88 use. The University of Illinois retains the copyright to the software,
89 and requires a license for any commercial redistribution of our software.
90 The actual, legal license is included with Charm++ (in charm/LICENSE).
91
92 \subsubsection{I have a suggestion/feature request/bug report. Who should I send
93 it to?}
94
95 Our mailing list is \htmladdnormallink{ppl@cs.uiuc.edu}{mailto:ppl@cs.uiuc.edu}.
96 We're always glad to get feedback on our software.