head	1.45;
access;
symbols
	charm6_1:1.45
	charm_6_0_1:1.45
	charm6_0_1:1.45
	charm6_0:1.44
	ChaNGa_1-0:1.43
	charm5_9:1.42
	charm_5-4-2:1.11
	charm_5-4-1:1.8;
locks; strict;
comment	@# @;


1.45
date	2008.11.22.03.58.25;	author cheelee;	state Exp;
branches;
next	1.44;
commitid	FSz2ZeuEX9fxIyrt;

1.44
date	2007.06.06.22.00.11;	author gzheng;	state Exp;
branches;
next	1.43;
commitid	14f546672e5f4567;

1.43
date	2006.09.26.19.24.29;	author gioachin;	state Exp;
branches;
next	1.42;
commitid	7aa845197e644567;

1.42
date	2004.12.25.06.33.35;	author gzheng;	state Exp;
branches;
next	1.41;

1.41
date	2004.10.22.19.35.58;	author gzheng;	state Exp;
branches;
next	1.40;

1.40
date	2004.06.14.20.45.55;	author cvs;	state Exp;
branches;
next	1.39;

1.39
date	2004.06.14.20.45.00;	author cvs;	state Exp;
branches;
next	1.38;

1.38
date	2004.06.14.20.44.42;	author cvs;	state Exp;
branches;
next	1.37;

1.37
date	2004.06.14.20.44.21;	author cvs;	state Exp;
branches;
next	1.36;

1.36
date	2004.06.14.20.41.32;	author cvs;	state Exp;
branches;
next	1.35;

1.35
date	2004.06.14.20.35.26;	author cvs;	state Exp;
branches;
next	1.34;

1.34
date	2004.06.14.20.32.42;	author cvs;	state Exp;
branches;
next	1.33;

1.33
date	2004.06.14.20.29.54;	author cvs;	state Exp;
branches;
next	1.32;

1.32
date	2004.06.14.20.28.43;	author cvs;	state Exp;
branches;
next	1.31;

1.31
date	2004.06.14.20.26.36;	author cvs;	state Exp;
branches;
next	1.30;

1.30
date	2004.06.14.20.06.21;	author cvs;	state Exp;
branches;
next	1.29;

1.29
date	2004.06.14.20.02.39;	author cvs;	state Exp;
branches;
next	1.28;

1.28
date	2004.06.14.20.02.04;	author cvs;	state Exp;
branches;
next	1.27;

1.27
date	2004.06.14.20.01.24;	author cvs;	state Exp;
branches;
next	1.26;

1.26
date	2004.06.14.20.00.32;	author cvs;	state Exp;
branches;
next	1.25;

1.25
date	2004.06.14.19.54.49;	author cvs;	state Exp;
branches;
next	1.24;

1.24
date	2004.03.16.05.57.11;	author gzheng;	state Exp;
branches;
next	1.23;

1.23
date	2003.09.17.00.51.45;	author gzheng;	state Exp;
branches;
next	1.22;

1.22
date	2003.08.18.21.04.18;	author olawlor;	state Exp;
branches;
next	1.21;

1.21
date	2003.08.14.03.22.13;	author gzheng;	state Exp;
branches;
next	1.20;

1.20
date	2003.08.10.18.09.08;	author gzheng;	state Exp;
branches;
next	1.19;

1.19
date	2002.08.02.16.11.25;	author olawlor;	state Exp;
branches;
next	1.18;

1.18
date	2002.06.11.18.41.09;	author olawlor;	state Exp;
branches;
next	1.17;

1.17
date	2002.03.18.01.32.29;	author gzheng;	state Exp;
branches;
next	1.16;

1.16
date	2002.03.17.18.14.06;	author olawlor;	state Exp;
branches;
next	1.15;

1.15
date	2002.03.17.18.07.50;	author checkout;	state Exp;
branches;
next	1.14;

1.14
date	2001.12.11.20.53.42;	author olawlor;	state Exp;
branches;
next	1.13;

1.13
date	2001.08.30.18.25.21;	author jdesouza;	state Exp;
branches;
next	1.12;

1.12
date	2001.05.08.15.51.14;	author gzheng;	state Exp;
branches;
next	1.11;

1.11
date	2001.05.06.01.00.13;	author gzheng;	state Exp;
branches;
next	1.10;

1.10
date	2001.04.30.18.46.36;	author milind;	state Exp;
branches;
next	1.9;

1.9
date	2001.04.27.06.20.08;	author gzheng;	state Exp;
branches;
next	1.8;

1.8
date	2001.03.05.02.03.45;	author gzheng;	state Exp;
branches;
next	1.7;

1.7
date	2001.03.02.21.24.43;	author milind;	state Exp;
branches;
next	1.6;

1.6
date	2001.03.02.20.52.24;	author jdesouza;	state Exp;
branches;
next	1.5;

1.5
date	2001.02.28.06.44.35;	author milind;	state Exp;
branches;
next	1.4;

1.4
date	2001.02.23.06.08.46;	author gzheng;	state Exp;
branches;
next	1.3;

1.3
date	2000.12.21.06.14.33;	author milind;	state Exp;
branches;
next	1.2;

1.2
date	2000.12.02.06.51.36;	author milind;	state Exp;
branches;
next	1.1;

1.1
date	2000.12.02.05.30.42;	author olawlor;	state Exp;
branches;
next	;


desc
@@


1.45
log
@Modifications for TAU tracing in the Charm++ framework.
@
text
@                           Charm++ CVS Version

       Copyright (C) 1989-2000 Regents of the University of Illinois

INTRODUCTION
============

Charm++ is a message-passing parallel language and runtime system.
It is implemented as a set of libraries for C++, is efficient,
and is portable to a wide variety of parallel machines.
Source code is provided, and non-commercial use is free.


GETTING THE LATEST CHARM SOURCE
===============================

You can use our anonymous cvs server to checkout the latest charm++ source code.
(It may not be the latest stable version though) 
What you need to do is as following:

1. login the cvs server:

      cvs -d :pserver:checkout@@charm.cs.uiuc.edu:/cvsroot login

      when CVS password is prompted, just press enter.
2. checkout charm:

      cvs co -P charm

      You should get latest charm source tree.
3. logout the cvs server:

      cvs logout


PICKING A VERSION
=================

First, you need to decide which version of charm++ to use. The "build" 
script in charm source directory takes several command line options to
compile Charm++. The command line syntax is:

build <target> <version> [options ...] [--basedir=dir] [--libdir=dir] [--incdir=dir] [charmc-options ...]

for detailed help messages, use -h or --help to the build script, i.e.
./build --help

REQUIRED:
---------
<target> specifies the parts of Charm++ to compile.  The most often used 
  <target> is "charm++", which will compile the key Charm++ executables and 
  runtime libraries.  Other common targets are "AMPI" and "FEM".
<versions> defines the CPU, OS and Communication layer of the machines.  See 
  "How to choose a <version>" below for details.

OPTIONAL:
---------
<options> defines more detailed information of the compilations, including 
  compilers, features to support, etc.  See "How to choose <option>"
  below.
[--libdir=dir] specify additional lib paths for building Charm++.
[--incdir=dir] specify additional include paths for building Charm++.
[--basedir=dir] a shortcut to specify additional include and lib paths for 
               building Charm++, the include path is dir/include and lib path 
               is dir/lib.


Running build script, a directory of the name of combination of version and 
options like "<version>-<option1>-<option2>-..." will be created and 
the build script will compile Charm++ under this directory.

For example, on an ordinary Linux PC:

   ./build charm++ net-linux

will build charm++ in the directory: net-linux/.  The communication
defaults to UDP packets and the compiler to gcc.

For a more complex example, on a Scyld workstation with the Intel C++ 
compiler, where you want the communication to happen over TCP sockets:

   ./build charm++ net-linux scyld icc tcp

will build charm++ in the directory: net-linux-scyld-tcp-icc/.

You can specify multiple options, however you can use at most one compiler 
option. The sequence of the options are not important given in build script, 
only one directory name will be generated, following the rules:
1. compiler option will be at the end;
2. other options are sorted alphabetically.

**** How to choose a <version> ****

Here is the table for choosing correct version. The default setting of compiler
in Charm version is gcc/g++. However, one can use <options> to specify other 
compilers. See the detailed explanation of the <options> below.
(Note: this isn't a complete list.  Run ./build for a complete listing)

Charm version          OS        Communication    Default Compiler  
-------------       ---------    --------------   --------------------
net-linux            PC Linux       UDP/Myrinet   GNU compiler
net-sol              Solaris        UDP           GNU compiler
net-win32            Win32          UDP           MS Visual C++
net-cygwin           Win32/cygwin   UDP           GNU compiler
mpi-sp               IBM A/IX       MPI           A/IX xlC Compiler 
mpi-origin           Origin2000     MPI           SGI C++ compiler

net-ppc-darwin       MacOS X        UDP           GNU C++ compiler
net-linux-ia64       IA64 Linux     UDP/Myrinet   GNU compiler
net-linux-amd64      Opteron Linux  UDP           GNU compiler
net-irix             IRIX	    UDP           GNU compiler
net-axp              Alpha          UDP           GNU compiler
net-hp               HP-UX          UDP           GNU compiler
mpi-linux            PC Linux       MPI           GNU compiler
mpi-ppc-darwin       MacOS X        MPI           GNU C++ compiler
mpi-linux-ia64       IA64 Linux     MPI           GNU compiler
mpi-linux-amd64      Opteron Linux  MPI           GNU compiler
mpi-axp              Alpha          MPI           GNU compiler
mpi-linux-axp        Alpha Linux    MPI           GNU compiler
origin2000           Origin2000  shared-mem       SGI C++ compiler
t3e                  Cray T3E    shared-mem       Cray C++ compiler


To choose <version>, your choice is determined by three options:

1.)  The way a parallel program written in Charm++ will communicate:

	"net-" Charm++ communicates using the regular TCP/IP stack
(UDP packets), which works everywhere but is fairly slow.  Use this
option for networks of workstations, clusters, or single-machine 
development and testing.

	"mpi-" Charm++ communicates using MPI calls.  Use this for
machines with a good MPI implementation (such as the Origin 2000).

	"exemplar", "ncube-2", "paragon-red", "sp3", and "t3e" Charm++
communicates using direct calls to the machine's communication primitives.

	"sim-" and "uth-" are not actively maintained.  These are
single-processor versions: "uth-" simulates processors as user-level
threads; "sim-" switches between processors and counts communications.


2.)  Your operating system:

	"linux"   Linux 
	"win32"   MS Windows with MS Visual C++ compiler
	"cygwin"  MS Windows with Cygnus' Cygwin Unix layer
	"irix"    SGI IRIX
	"origin"  SGI Origin 2000 IRIX
	"sol"     Solaris
	"sun"     SunOS
	"rs6k"    IBM R/S 6000 A/IX 
	"sp"      IBM SP A/IX
	"hp"      Hewlett-Packard HP-UX
	"axp"     DEC Alpha DECUNIX
	

3.)  Some operating systems have other options, such as:
	"-x86"     For Solaris, use PC hardware (instead of Sun).
	"-axp"     For Linux, use Alpha hardware (instead of PC).
        "-ia64"    Use Itanium(tm) instructions (instead of x86).
        "-amd64"   Use AMD Opteron instructions (instead of x86).

Your Charm++ version is made by concatenating the options, e.g.:

"net-linux"     Charm++ for a network of Linux workstations, compiled
                using g++.
"mpi-origin"    Charm++ for SGI Origin 2000, compiled using SGI CC.


**** How to choose <options> ****

<version> above defines the most important OS, CPU and Communication of 
your machine, and most of time, it use the GNU gcc as default compiler. 
To use different compiler or demand additional special feature support, you 
need to choose <options> from the following list:

* gcc3  - GNU GCC/G++ version 3
* acc  - HP aC++ compiler
* cc  - For Sun WorkShop C++ compilers;
* cc64 - For 64 bits Sun WorkShop C++ or IBM xlC compilers;
* cxx - DIGITAL C++ compiler;
* kcc - KAI C++ compiler;
* pgcc - Portland Group's C++ compiler;
* icc - Intel C/C++ compiler for Linux IA32
* ecc - Intel C/C++ compiler for Linux IA64
* mpcc - SUN Solaris C++ compiler for MPI.

* scyld - support Beowulf Scyld based on bproc;
* clustermatic - for Clustermatic Beowulf cluster based on bproc;
* gm - support MyriCom's Myrinet GM library;
* vmi - support NCSA's VMI library;

* tcp - for net- version, default communication is via UDP. Using option
        tcp will switch to TCP. TCP version of CHarm++ is usually slower
        than UDP, but it is more reliable.
* smp - Enable direct SMP support.  An "smp" version communicates using
        shared memory within a machine; but normal message passing across 
        machines. Because of locking, "smp" may slightly impact non-SMP 
        performance. Try your application to decide if enabling smp mode 
        improves performance.

* bluegene - compile Charm++ as running on Blue Gene emulator.
* help - show supported options for a version. For example, for net-linux, 
         running:
         > ./build charm++ net-linux help
         will give:
         supported options: gcc3 gm icc kcc pgcc scyld smp bluegene tcp


BUILDING THE SOURCE
===================

If you have downloaded a binary version of Charm++, you can skip
this step-- Charm++ should already be compiled.  For win32/win64 systems,
see README.win; for Cygwin version, see README.cygwin; for net- version, 
see README.net.

Once you have decided on a version, unpack Charm++, cd into charm,
and run

     > ./build <target> <version> <opts>

<target> is one of
	"charm++"  The basic Charm++ language.
	"AMPI"     An implementation of MPI on top of Charm++
	"FEM"      A Finite-Element framework on top of Charm++
	"Tau"      TAU's performance profiling/tracing

<version> is described above

<opts> are build-time options (such as the compiler or "smp"), 
or command line options passed to the charmc compile script.
Common compile time options such as -g, -O, -Ipath, -Lpath, -llib are 
accepted.

For example, on a Linux machine, you would run
     > ./build charm++ net-linux -O

This will construct a net-linux directory, link over all
the Charm++ source code into net-linux/tmp, build the entire
Charm++ runtime system in net-linux/tmp, and link sample programs 
into net-linux/pgms.

Several #define's control the compilation of Charm++.  Some of these
#define's can be found in src/<version>/conv-mach.h.  #define's can
also be specified on the command line, using the -D option.  For
example,
    > ./build charm++ net-linux -O -DCMK_OPTIMIZE=1

CMK_OPTIMIZE: Turn on optimizations in Charm++/Converse. This disables most of
the run-time checking performed by Converse and Charm++ runtime. This option
should be used only after the program has been debugged. Also, this option
disables Converse/Charm++ tracing mechanisms such as projections and summary.

When Charm++ is built successfully, the diretory structure under the
target directory will look like:

net-linux/
   |
   ---  bin/			# all executables
   |
   ---  doc/			# documentations
   |
   ---  include/		# header files
   |
   ---  lib/			# libraries
   |
   ---  lib_so/			# dynamic libraries
   |
   ---  examples/		# all example programs
   |
   ---  tests/			# all test programs
   |
   ---  tmp/			# Charm++ build directory

BUILDING A PROGRAM
==================

To make a sample program, cd into pgms/charm++/queens/.
This program solves the N-queens problem-- find how many ways there 
are to arrange N queens on an NxN chess board such that none may 
attack another.

To build the program, type make.  You should get an
executable named "pgm".


RUNNING A PROGRAM
==================

Following the previous example, to run the program on two processors, type

     > ./charmrun ./pgm 12 6 +p2

This should run for a few seconds, and print out:
There are 14200 Solutions to 12 queens. Finish time=4.030000

Charmrun is used to provide a uniform interface to run charm programs.
On some platforms, charmrun is just a shell script which calls the 
platform-specific start program, such as mpirun on mpi versions.

For net- version, charmrun is an executable which invokes rsh or ssh to start 
node programs on remote machines. You should set up a ~/.nodelist that 
enumerates all the machines you want to run jobs on, otherwise it will
create a default ~/.nodelist for you that contains only localhost. Here is a 
typical .nodelist file:

group main ++shell /bin/ssh
host <machinename>

The default remote shell program is rsh, but you can define different remote 
shell you like to start remote processes in the ++shell option. You should 
also make sure that you can rsh or ssh to these machines without password 
authentication. Just type following command to verify:
     > rsh <machinename> date
If this gives you current date immediately, your running environment with this 
node has been setup correctly.

Now, for test running purpose, net- version charmrun comes with an easy-to-use 
"++local" options. No remote shell invocation is needed in this case. It starts
node programs right on your local machine. This could be useful if you just 
want to run program on only one machine, for example, your laptop. This
can save you all the hassle of setting up rsh/ssh or charmd daemons.
To use this option, just type:
     
     > ./charmrun ++local ./pgm 12 100 +p2

However, for best performance, you should launch one node program per processor.

For more detailed information, please check the "INSTALLATION MANUAL" and "RUN MANUAL" 
under doc/install.


Build Charm++ in Dynamic libraries
=============================

In order to compile Charm++ into dynamic libraries, one need to specify
"-build-shared" option as one of the Charm compiler script "charmc" 
at link time. For example, to compile Charm++ under net-linux/tmp, run

make charm++ OPTS='-O -build-shared'

Charm++'s dynamic libraries are compiled into lib_so/ directory. 
Typically, they are with ".so" suffix.

Note, "-build-shared" option is automatically turned on when building 
Charm++ using "build" script. So you don't need to pass "-build-shared" 
option to "build".

One can compile a Charm++ applicaiton linking against Charm++ dynamic 
libraries, run charmc with "-charm-shared" as one of the link options.
For example:

charmc -o pgm pgm.o -charm-shared

You can then run the program as usual.
Note, linking against Charm++ dynamic libraries produces much smaller size
binaries and takes much less linking time.

FOR MORE INFORMATION
====================

The Charm++ web page, with documentation, more programs,
and the latest version of Charm++, is at
	http://charm.cs.uiuc.edu/

The Charm++ mailing list, for questions, comments, suggestions, 
improvements, or bug reports is
	ppl@@cs.uiuc.edu


AUTHORS
=======

Charm++ was created and is maintained by the Parallel Programming Lab, 
in the Computer Science department at the University of Illinois at
Urbana-Champaign.  Our managing professor is Dr. L.V. Kale; students
have included (in rough time order) Wennie Shu, Kevin Nomura, Wayne
Fenton, Balkrishna Ramkumar, Vikram Saletore, Amitabh B. Sinha, Manish
Gupta, Attila Gursoy, Balkrishna Ramkumar, Amitabh B. Sinha, Nimish
Shah, Sanjeev Krishnan, Jayant DeSouza, Parthasarathy Ramachandran,
Jeff Wright, Michael Lang, Jackie Wang, Fang Hu, Michael Denardo,
Joshua Yelon, Narain Jagathesan, Zehra Sura, Krishnan Varadarajan, 
Sameer Paranjpye, Milind Bhandarkar, Robert Brunner and Jayant Desouza. 
Current developers include Terry Wilmarth, Gengbin Zheng, Orion Lawlor, 
Karthik Mahesh, and Neelam Saboo.


@


1.44
log
@added win64
@
text
@d229 1
@


1.43
log
@nothing really
@
text
@d216 2
a217 2
this step-- Charm++ should already be compiled.  For win32 systems,
see README.win32; for Cygwin version, see README.cygwin; for net- version, 
@


1.42
log
@updated
@
text
@d389 1
@


1.41
log
@fixed description of directory layout
@
text
@d110 1
d117 1
d162 2
a163 1
        "-ia64"    Use Itanium(tm) instructions (instead of x86)
@


1.40
log
@test
@
text
@d114 1
d268 3
a270 1
   ---  pgms/			# all sample programs
d381 4
a384 13
Joshua Yelon, Narain Jagathesan, Zehra Sura, Krishnan Varadarajan, and
Sameer Paranjpye.  Current developers include Milind Bhandarkar,
Robert Brunner, Terry Wilmarth, Gengbin Zheng, Jayant Desouza, Orion
Lawlor, Karthik Mahesh, and Neelam Saboo.









@


1.39
log
@test
@
text
@d389 3
@


1.38
log
@test
@
text
@d388 1
@


1.37
log
@old
@
text
@d387 1
@


1.36
log
@test
@
text
@d386 1
@


1.35
log
@test
@
text
@d385 1
@


1.34
log
@test
@
text
@d384 1
@


1.33
log
@test
@
text
@a383 1

@


1.32
log
@test
@
text
@a384 1

@


1.31
log
@test
@
text
@d385 1
@


1.30
log
@test
@
text
@d384 1
@


1.29
log
@test
@
text
@a383 1

@


1.28
log
@test
@
text
@d384 1
@


1.27
log
@test
@
text
@d383 1
@


1.26
log
@test for write permission
@
text
@a382 1

@


1.25
log
@test for cvs permission.
@
text
@a383 1

@


1.24
log
@a fix for queens example.
@
text
@a384 1

@


1.23
log
@added instructions about how to use dynamic libraries of charm.
@
text
@d288 1
a288 1
     > ./charmrun ./pgm 12 100 +p2
@


1.22
log
@cc64 works for xlC as well.
@
text
@d252 18
d328 26
@


1.21
log
@added clustermatic in help page.
not show vmi in arch list.
@
text
@d178 1
a178 1
* cc64 - For 64 bits Sun WorkShop C++ compilers;
@


1.20
log
@added -h, --help option to display a much detailed help page.
@
text
@d186 2
a187 1
* scyld - support Beowulf Scyld;
@


1.19
log
@Clarify most common case-- Linux PC.
@
text
@d45 3
@


1.18
log
@Removed version numbers from README's, since the CVS version
is now far beyond 5.4.
@
text
@d48 2
a49 2
  <target> is charm++, which will compile the key Charm++ executables and 
  runtime libraries.
d66 2
a67 3
options like "<version>-<option1>-<option2>-..." will be created and build 
script will compiler Charm++ under this directory.
For example:
d69 1
a69 1
./build charm++ net-linux scyld icc tcp
d71 1
a71 3
will build charm++ in a directory: net-linux-scyld-tcp-icc/.
for Linux version on Scyld using TCP for communication, compiled with 
Intel C++ compiler.
d73 11
a83 1
You can specify multiple options, however you should only give one compiler 
d87 1
a87 1
2. other options are shorted alphabetically.
d96 1
a96 1
Charm version          OS        Communication     Compiler  
d99 7
d107 1
a108 4
net-cygwin           Win32/cygwin   UDP           GNU compiler
net-win32            Win32          UDP           MS Visual C++
net-sol              Solaris        UDP           GNU compiler
net-irix             IRIX	    UDP           GNU compiler
a109 1
net-ppc-darwin       MacOS X        UDP           GNU C++ compiler
d114 1
a114 3
mpi-origin           Origin2000     MPI           C++ compiler
mpi-sp               AIX            MPI           AIX xlC Compiler 
origin2000           Origin2000  shared-mem       SGI C++ compiler     
d156 1
@


1.17
log
@updated.
@
text
@d1 1
a1 1
                              Charm++ 5.6
@


1.16
log
@Just double-checking that ordinary user checkins still work.
@
text
@d43 1
a43 1
build <target> <version> [options ...] [charmc-options ...]
d45 2
d50 5
a54 2
<versions> defines the CPU, OS and Communication of the machines.  See 
  "How to choose a <version>" below.
d58 23
d84 3
a86 2
Here is a table for choosing correct version, for the detailed explanation
of the options see the comments following the table.
d93 1
a93 1
net-axp-cc           Alpha          UDP           DIGITAL C++ compiler
a95 1
net-sol-cc           Solaris        UDP           Sun WorkShop C++ Compiler
d97 1
a97 2
net-irix             IRIX	    UDP           SGI C++ compiler
net-irix-64          IRIX           UDP           SGI 64bits C++ compiler
a98 2
net-hp-cc            HP-UX          UDP           HP-UX C++ compiler
net-hp-acc           HP-UX          UDP           HP-UX aC++ compiler
d101 2
a102 1
mpi-axp-cc           Alpha          MPI           DIGITAL C++ compiler  
a147 1
	"-64"      For IRIX, use -64 instead of -32. 
d163 2
d170 3
a172 1
* icc - Intel C/C++ compiler
d178 3
d182 11
a192 8
shared memory within a machine; but normal message passing across machines.
Because of locking, "smp" may slightly impact non-SMP performance.  Try
your application to decide if enabling smp mode improves performance.

For a specific version, for example: net-linux, you can use following command 
to display the supported <options> on this platform:
> ./build charm++ net-linux help
supported options: gm icc pgcc scyld smp
@


1.15
log
@Reordered dependency list.  Also a test to see if "checkout" account
can actually check stuff in.
@
text
@d58 1
a58 2
(Note: this table doesn't necessarily include all the current supported version,
run ./build in charm top directory to check the latest versions.)
@


1.14
log
@Minor rewording; a few updates (like "net-linux-smp" becoming "net-linux smp").
@
text
@a64 3
mpi-linux            PC Linux       MPI           GNU compiler
mpi-axp-cc           Alpha          MPI           DIGITAL C++ compiler  
mpi-linux-axp        Alpha Linux    MPI           GNU compiler
a71 2
origin2000           Origin2000  shared-mem       SGI C++ compiler     
mpi-origin           Origin2000     MPI           C++ compiler
d75 5
d81 1
a82 1
net-ppc-darwin       Mac            UDP           GNU C++ compiler
@


1.13
log
@*** empty log message ***
@
text
@d1 1
a1 1
                              Charm++ 5.4 (Release 2)
d17 1
a17 1
You can use our anonymous cvs server to checkout the charm++ latest source code.
d23 1
a23 1
      cvs -d :pserver:checkout@@thrift.cs.uiuc.edu:/expand6/cvsroot login
d25 1
a25 1
      when CVS password is prompted, just type <Enter>.
d35 1
a64 1
net-linux-smp        PC Linux SMP workstations    GNU compiler
a70 1
net-win32-smp        Win32 SMP      UDP           MS Visual C++
d85 1
a85 1
To choose <versions>, your choice is determined by three options:
d108 2
a109 2
	"win32"   MS Windows NT/98/2k (and MS Visual C++ compiler)
	"cygwin"  MS Windows 98/NT/2k with Cygnus' Cygwin Unix layer
d125 1
a125 9
You may also choose to enable direct SMP support with a "-smp"
version, which may result in more efficient communication in
a cluster-of-SMPs.  A "-smp" version will communicate using
shared memory within a machine; but message passing across machines.
"-smp" is currently only available with "net-" versions.
Because of locking, "-smp" may slightly impact non-SMP performance.


Your Charm++ version is made by concatenating all three options, e.g.:
a128 2
"net-linux-smp" Charm++ for a network of Linux SMP workstations,
                compiled using g++.
d150 5
d158 1
a158 10
supported options: gm icc pgcc scyld


After you find all the options you need, you can use build to compile Charm++.
For example, to compile net-linux with Myrinet support, type:
./build charm++ net-linux gm

Or, to compile mpi-linux with pgcc compiler and vmi support, type:
./build charm++ mpi-linux vmi pgcc
(the sequence of options is not important)
d172 1
a172 1
     > ./build _target_ _version_ _opts_
d174 1
a174 1
Where _target_ is one of
d179 4
a182 1
And _opts_ are command line options passed to the charmc compile script.
d189 4
a192 5

This will construct a _version_ directory, link over all
the Charm++ source code into _version_/tmp, build the entire
Charm++ runtime system in _version_/tmp, and link sample programs 
into _version_/pgms.
d195 1
a195 1
#define's can be found in src/_version_/conv-mach.h.  #define's can
a204 23
CMK_THREADS_USE_ISOMALLOC: This option specifies that the user-level threads in
Converse/Charm++ be migratable using a method called isomalloc. The
isomalloc-based threads make sure that the thread's stack spans a unique range
of virtual addresses across all the processors. Thus, references to stack
remain valid even when a thread migrates to different processor.

CMK_THREADS_USE_COPY_STACK: This option specifies that the user-level threads
in Converse/Charm++ be migratable by using a method where the used portion of a
thread's stack is copied in and out of a main stack on context-switch. Since
the main (process) stack spans the same range of virtual addresses in all
processes in a homogeneous cluster, references to stack remain valid across all
the processors even after a thread migrates.

CMK_THREADS_USE_PTHREADS: This is an alternate implementation of
Converse/Charm++ user-level threads that use Posix threads. They have higher
(about 10 times) context-switching costs over the default implementation of
threads in Converse. However, they are more portable. In particular, they avoid
some of the known problems in the way current linuxthreads implementation
interacts with the default user-level threads in Converse. Also, memory
debugging tools such as purify are incompatible with Converse's default
user-level threads. The implementation based on posix threads can be used for
memory debugging with purify.

d209 1
a209 1
To make a sample program, cd into _version_/pgms/charm++/queens/.
d212 1
a212 1
attack another.  
d228 3
a230 4
Charmrun is now available on all platforms. Depending on what platform you are 
running charm program, charmrun could be just a shell script which is a wrapper
 for mpirun, for example, in mpi- version. The idea of charmrun is trying to 
provide a uniform parameters across all platforms.
d233 2
a234 1
node programs on remote machines. Remember that you should set up a ~/.nodelist that enumerates all the machines you want to run jobs on, otherwise it will
d239 1
a239 1
host machinename
d245 1
a245 1
     > rsh(ssh) machinename date
d251 1
a251 1
 node programs right on your local machine. This could be useful if you just 
d260 2
a261 8
Command-line Options:

+truecrash: The net-* version of Converse trap a number of signals such as
SIGSEGV and SIGBUS to gracefully handle premature termination of Converse
programs. The downside to this is that these signals do not produce core dumps
for post-mortem debugging. Specifying +truecrash while running
Converse/Charm++ programs on these machines allows core dumps to be produced 
on abnormal terminations.
a262 1
For more detailed information, please check the "INSTALLATION MANUAL" and "RUN MANUAL" under doc/install.
d279 2
a280 2
Charm++ is written and maintained by the Parallel Programming Lab, in
the Computer Science department at the University of Illinois at
d291 3
@


1.12
log
@updated to Charm V5.4R2
@
text
@d25 1
a25 1
      when CVS passwd is prompted, just type <Enter>.
d44 8
a51 7
<taget> specify the parts of Charm++ to compile, the most oftenly used 
<target> is charm++, it will compile most the key Charm++ executables and 
runtime libraries.
<versions> defines the CPU, OS and Communication of the machines, see 
"How to choose a <version>" below;
<options> defines more detailed information of the compilations including 
compilers and features to support, etc. see "How to choose <option>" below.
d161 1
a161 1
For s specific version, for example: net-linux, you can use following command 
d213 1
a213 1
CMK_OPTIMIZE: Turn on optimizations in Charm++/Converse. This disbles most of
d218 1
a218 1
CMK_THREADS_USE_ISOMALLOC: Ths option specifies that the user-level threads in
d228 2
a229 2
processes in a homogeneous cluster, references to stack remain valid across al
te processors even after a thread migrates.
d237 1
a237 1
debugging tols such as purify are incompatible with Converse's default
d277 1
a277 1
The default remote shell program is rsh, but you can define differnt remote 
d279 1
a279 1
also make sure that you can rsh or ssh to these machines without passwd 
d296 1
a296 1
Commandline Options:
@


1.11
log
@update build descriptions.
@
text
@d1 1
a1 1
                              Charm++ 5.4 (Release 1)
@


1.10
log
@Made CMK_TRUECRASH a command-line flag +truecrash to avoid recompiling.
@
text
@d38 16
a53 1
First, you need to decide which version of charm++ to use. 
a62 3
net-linux-kcc        PC Linux       UDP           KAI C++ compiler
net-linux-pgcc       PC Linux       UDP           Portland Group's C++ compiler
net-linux-scyld      PC Linux     Scyld/UDP       GNU compiler
a66 1
mpi-linux-axp-cxx    Alpha Linux    MPI           DIGITAL C++ compiler
d70 1
d85 1
a85 1
Your choice is determined by three options:
d120 1
a120 11
3.)  Your compiler and other options.  Charm++ normally picks an
appropriate compiler for the system, but you may select another
compiler:

	"-cc"      The OEM C/C++ compiler.  When given, this
will override the choice of the GNU C/C++ compiler.
	"-kcc"     Kuck & Associates C++ compiler.
	"-acc"     Uses HP's aCC instead of CC.
	"-pgcc"    Portland Group's ANSI and K&R C compiler.

Some operating systems have other options, such as:
a123 2
	"-scyld"   For Beowulf Cluster with Scyld.
	"-vmi"	   For NCSA's Virtual Machine Interface.
a136 2
"net-linux-kcc" Charm++ for a network of Linux workstations, compiled
                using Kuck & Associates C++ compiler.
a138 2
"net-sol-cc"    Charm++ for a network of Sun workstations, 
                compiled using Sun CC.
d141 32
@


1.9
log
@updated CHANGES README for new changes.
@
text
@a211 6
CMK_TRUECRASH: The net-* version of Converse trap a number of signals such as
SIGSEGV and SIGBUS to gracefully handle premature termination of Converse
programs. The downside to this is that these signals do not produce core dumps
for post-mortem debugging. Setting CMK_TRUECRASH to 1 while building
Converse/Charm++ on these machines allows core dumps to be produced on abnormal
terminations.
d266 9
@


1.8
log
@make a table for most versions with easy format, not cover all versions though.
@
text
@d46 2
a47 1
net-linux            PC Linux       UDP           GNU compiler
d70 1
@


1.7
log
@Added some more description of the build-time flags not documented
elsewhere.
@
text
@d38 34
a71 2
First, you need to decide which version of charm++ to use.  Your
choice is determined by three options:
d114 1
d120 2
@


1.6
log
@Added note about #define's.
@
text
@d147 4
a150 1
CMK_OPTIMIZE: Turn on optimizations in Charm++.
d152 29
@


1.5
log
@updated version number.
@
text
@d141 7
d221 13
a233 12
Charm++ is written and maintained by the Parallel Programming
Lab, in the Computer Science department at the University of 
Illinois at Urbana-Champaign.  Our managing professor is
Dr. L.V. Kale; students have included (in rough time order)
Wennie Shu, Kevin Nomura, Wayne Fenton, Balkrishna Ramkumar,
Vikram Saletore, Amitabh B. Sinha, Manish Gupta, Attila Gursoy, 
Balkrishna Ramkumar, Amitabh B. Sinha, Nimish Shah, Sanjeev 
Krishnan, Parthasarathy Ramachandran, Jeff Wright, Michael Lang, 
Jackie Wang, Fang Hu, Michael Denardo, Joshua Yelon, Narain Jagathesan,
Zehra Sura, Krishnan Varadarajan, and Sameer Paranjpye.  Current developers
include Milind Bhandarkar, Robert Brunner, Terry Wilmarth, Gengbin Zheng, 
Jayant Desouza, Orion Lawlor, Karthik Mahesh, and Neelam Saboo.
@


1.4
log
@added cvs server usage and charmrun information in README.
@
text
@d1 1
a1 1
                              Charm++ 5.5
@


1.3
log
@Renamed super_install as build.
@
text
@d14 21
d63 1
a63 1
	"cygwin"  MS Windows with Cygnus' Cygwin Unix layer
d115 2
a116 1
see README.win32; for net- version, see README.net
d154 7
a160 2
To run the program on two processors, type
     > ./charmrun pgm 12 100 +p2
d165 31
d197 1
@


1.2
log
@Added passing options to SUPER_INSTALL.
@
text
@d99 1
a99 1
     > ./SUPER_INSTALL _target_ _version_ _opts_
d111 1
a111 1
     > ./SUPER_INSTALL charm++ net-linux -O
@


1.1
log
@Created for 5.5 release.
@
text
@d99 1
a99 1
     > ./SUPER_INSTALL _target_ _version_
d106 4
d111 1
a111 1
     > ./SUPER_INSTALL charm++ net-linux
@

