charm.git
9 years agofix in infi_CmiFree the case in standalone mode for SMP.
Gengbin Zheng [Sun, 8 Jul 2012 23:01:23 +0000 (18:01 -0500)]
fix in infi_CmiFree  the case in standalone mode for SMP.

9 years agoMerge branch 'charm' of charmgit:charm into charm
Yanhua Sun [Sun, 8 Jul 2012 18:41:39 +0000 (13:41 -0500)]
Merge branch 'charm' of charmgit:charm into charm

9 years agominor
Yanhua Sun [Sun, 8 Jul 2012 18:41:10 +0000 (13:41 -0500)]
minor

9 years agoFinally, a first version of parallel recovery with scalable collectives.
Esteban Meneses [Sat, 7 Jul 2012 23:26:53 +0000 (18:26 -0500)]
Finally, a first version of parallel recovery with scalable collectives.

9 years agoAdding support for emigrant objects at reduction manager.
Esteban Meneses [Sat, 7 Jul 2012 22:06:01 +0000 (17:06 -0500)]
Adding support for emigrant objects at reduction manager.

9 years agoMerge branch 'charm' of charmgit:charm into charm
Esteban Meneses [Sat, 7 Jul 2012 21:01:26 +0000 (16:01 -0500)]
Merge branch 'charm' of charmgit:charm into charm

9 years agoSending back recovering objects for parallel recovery.
Esteban Meneses [Sat, 7 Jul 2012 21:01:06 +0000 (16:01 -0500)]
Sending back recovering objects for parallel recovery.

9 years agotests/charm++/pingpong: (1) removed a memory leak in pipelined test
Lukasz Wesolowski [Sat, 7 Jul 2012 05:58:02 +0000 (00:58 -0500)]
tests/charm++/pingpong: (1) removed a memory leak in pipelined test
(2) modified the pipeline scheme w/ memcpy to include
the time for allocating a buffer on the receive side.

how memory allocations are done in the pipelined test so

9 years agouse CMK_IBV_PORT_ATTR_HAS_LINK_LAYER to protect use of link_layer field
Gengbin Zheng [Sat, 7 Jul 2012 05:40:52 +0000 (00:40 -0500)]
use CMK_IBV_PORT_ATTR_HAS_LINK_LAYER to protect use of link_layer field

9 years agoupdated
Gengbin Zheng [Sat, 7 Jul 2012 05:30:53 +0000 (00:30 -0500)]
updated

9 years agotest if ibverbs port_attr has link_layer field
Gengbin Zheng [Sat, 7 Jul 2012 05:29:44 +0000 (00:29 -0500)]
test if ibverbs port_attr has link_layer field

9 years agoChare Arrays: Add interface to signal online dynamic element insertion
Phil Miller [Fri, 6 Jul 2012 18:05:31 +0000 (18:05 +0000)]
Chare Arrays: Add interface to signal online dynamic element insertion

The AMR benchmark code was having trouble with hangs around
AtSync-triggered load balancing, apparently related to the fact that
it was inserting new chare array elements after startup. In
discussions with Gengbin, we figured that this arose because the
additional elements were interfering with the count of local elements
used to determine when a processor's objects had all reached AtSync
and thus it could contribute its LB stats.

The backend infrastructure had interfaces to 'pause' the LB barrier
while new elements were being inserted, but this had never been
surfaced in a way usable by client code. Add a `beginInserting()`
method as an analogue to the existing `doneInserting()` method that
was already required at startup to surface that code.

Tested to resolve at least one kind of hang in the AMR code on BG/Q.

9 years agotests/charm++/pingpong: for group pinpong, (1) added pipelined run
Lukasz Wesolowski [Thu, 5 Jul 2012 22:54:50 +0000 (17:54 -0500)]
tests/charm++/pingpong: for group pinpong, (1) added pipelined run
without allocation of fragment messages, (2) added warm up iteration
that does not get timed

9 years agoAdding support in central load balancer for restoring objects after parallel recovery.
Esteban Meneses [Thu, 5 Jul 2012 22:27:47 +0000 (17:27 -0500)]
Adding support in central load balancer for restoring objects after parallel recovery.

9 years agoMerge branch 'charm' of charmgit:charm into charm
Esteban Meneses [Thu, 5 Jul 2012 03:31:01 +0000 (22:31 -0500)]
Merge branch 'charm' of charmgit:charm into charm

9 years agoSolving bug in collective operations with parallel recovery.
Esteban Meneses [Thu, 5 Jul 2012 03:30:37 +0000 (22:30 -0500)]
Solving bug in collective operations with parallel recovery.

9 years agotests/charm++/pingpong: added pipelined test for groups
Lukasz Wesolowski [Thu, 5 Jul 2012 01:56:52 +0000 (20:56 -0500)]
tests/charm++/pingpong: added pipelined test for groups

9 years agoFixing the way to handle immigrant recovering objects.
Esteban Meneses [Wed, 4 Jul 2012 23:01:59 +0000 (18:01 -0500)]
Fixing the way to handle immigrant recovering objects.

9 years agoRemoving debug comments.
Esteban Meneses [Wed, 4 Jul 2012 19:24:03 +0000 (14:24 -0500)]
Removing debug comments.

9 years agoAdding support for bypassing message logging layer.
Esteban Meneses [Tue, 3 Jul 2012 16:04:20 +0000 (11:04 -0500)]
Adding support for bypassing message logging layer.

9 years agoModifying debug command.
Esteban Meneses [Mon, 2 Jul 2012 21:27:25 +0000 (16:27 -0500)]
Modifying debug command.

9 years agockhashtable: disambiguate non-dependent template member emenese2/liveVizFix
Ramprasad Venkataraman [Thu, 28 Jun 2012 18:35:23 +0000 (18:35 +0000)]
ckhashtable: disambiguate non-dependent template member

flagged as error by bgxlC -qlanglvl=extended0x

9 years agobuild: -optimize now defaults to -O2 instead of -O
Ramprasad Venkataraman [Thu, 28 Jun 2012 17:49:34 +0000 (17:49 +0000)]
build: -optimize now defaults to -O2 instead of -O

9 years agobuild: update compiler paths to latest on vesta
Ramprasad Venkataraman [Thu, 28 Jun 2012 17:48:17 +0000 (17:48 +0000)]
build: update compiler paths to latest on vesta

9 years agobuild: set flags to enable c11/cpp11 support on bgq/xlc
Ramprasad Venkataraman [Thu, 28 Jun 2012 17:29:55 +0000 (17:29 +0000)]
build: set flags to enable c11/cpp11 support on bgq/xlc

9 years agomsgQ test: Adjust test parameters (num priorities, numiters)
Ramprasad Venkataraman [Wed, 27 Jun 2012 16:12:09 +0000 (11:12 -0500)]
msgQ test: Adjust test parameters (num priorities, numiters)

9 years agomsgQ test: separate the unit tests for the STL variant from charm's default q tests
Ramprasad Venkataraman [Sat, 23 Jun 2012 07:15:59 +0000 (02:15 -0500)]
msgQ test: separate the unit tests for the STL variant from charm's default q tests

9 years agomsgQ test: implement enumerate() for STL msgq
Ramprasad Venkataraman [Thu, 28 Jun 2012 15:32:50 +0000 (10:32 -0500)]
msgQ test: implement enumerate() for STL msgq

9 years agomsgQ test: Add a correctness test for the stl q
Ramprasad Venkataraman [Thu, 21 Jun 2012 04:34:54 +0000 (23:34 -0500)]
msgQ test: Add a correctness test for the stl q

9 years agomsgQ test: Test performance along two axes...
Ramprasad Venkataraman [Wed, 20 Jun 2012 22:53:13 +0000 (17:53 -0500)]
msgQ test: Test performance along two axes...

number of different priority values
total number of items in container

9 years agomsgQ test: Use unordered_map (supported by C++11 std) if available
Ramprasad Venkataraman [Tue, 19 Jun 2012 16:53:26 +0000 (11:53 -0500)]
msgQ test: Use unordered_map (supported by C++11 std) if available

9 years agomsgQ test: Now also reports performance of STL-based variant of msg Q
Ramprasad Venkataraman [Mon, 18 Jun 2012 21:45:53 +0000 (16:45 -0500)]
msgQ test: Now also reports performance of STL-based variant of msg Q

Charm uses a custom message queue that handles arbitrary bitvector priorities.
Underneath, it implements three separate queues for -ve, +ve and zero priorities.

The test now includes a simple, STL-based implementation of similar functionality,
so that we can compare charm's msg q performance against a simple STL version.
Monitoring these numbers should help guide optimizations.

Capabilities of the reference STL msgQ
- Only integer / long / compile-time fixed length priorities are directly supported
- arbitrary bitvec prios can be supported using thin wrappers to the priority type
- std::less is assumed to be available for the priority type

The STL version is still quite naive and could use optimization, but is faster than
charm's custom implementation on g++ 4.4 on net-linux-x86_64.

9 years agomsgQ test: Modify to also measure charm's underlying msgQ's enq/deq performance
Ramprasad Venkataraman [Mon, 18 Jun 2012 18:29:37 +0000 (13:29 -0500)]
msgQ test: Modify to also measure charm's underlying msgQ's enq/deq performance

9 years agobuild/charmc: -use-new-std now tests and enables any compiler support for c11 / cpp11
Ramprasad Venkataraman [Wed, 27 Jun 2012 21:42:34 +0000 (16:42 -0500)]
build/charmc: -use-new-std now tests and enables any compiler support for c11 / cpp11

charmc has learnt a new flag: -use-new-std. This has to be passed on the build
command line where its picked up by configure. configure then tests for
compiler support for the appropriate flags.

This should allow building charm with c11/cpp11 support enabled. charmc from
such a build will also respect the same flag while building applications.

9 years agobuild: configure script now checks if unordered_map (C++11) is defined
Ramprasad Venkataraman [Tue, 19 Jun 2012 21:07:18 +0000 (16:07 -0500)]
build: configure script now checks if unordered_map (C++11) is defined

The compiler option is hardcoded for g++. However, this should not cause
any failures other than setting the corresponding macro to 0.

9 years agotests/charm++/pingpong : detect quiescence prior to running first benchmark
Lukasz Wesolowski [Tue, 26 Jun 2012 23:24:50 +0000 (18:24 -0500)]
tests/charm++/pingpong : detect quiescence prior to running first benchmark
to prevent misreporting its time (due to concurrent chare insertions
and initializations)

9 years agocharj: modify jacobi test to use reduction at termination
Aaron Becker [Sat, 23 Jun 2012 03:30:43 +0000 (22:30 -0500)]
charj: modify jacobi test to use reduction at termination

9 years agoNDMeshStreamer: replaced STAGED_COMPLETION macro with a variable
Lukasz Wesolowski [Sat, 23 Jun 2012 00:00:43 +0000 (19:00 -0500)]
NDMeshStreamer: replaced STAGED_COMPLETION macro with a variable

9 years agocharmc: disable preprocessing when generating .ci file dependencies
Phil Miller [Fri, 22 Jun 2012 23:44:39 +0000 (16:44 -0700)]
charmc: disable preprocessing when generating .ci file dependencies

I'm not sure this is actually a good thing to do, but it fixes severe
build breakage over the not-quite right disablement committed yesterday,

9 years agoNDMeshStreamer: periodic flushing can now be enabled or disabled using
Lukasz Wesolowski [Fri, 22 Jun 2012 21:02:22 +0000 (16:02 -0500)]
NDMeshStreamer: periodic flushing can now be enabled or disabled using
a parameter to the init and associateCallback functions

9 years agoMerge branch 'charm' of charmgit:charm into charm
YanhuaSun [Fri, 22 Jun 2012 19:51:26 +0000 (14:51 -0500)]
Merge branch 'charm' of charmgit:charm into charm

9 years agoadded Ping test for sending K msgs per node
YanhuaSun [Fri, 22 Jun 2012 19:51:18 +0000 (14:51 -0500)]
added Ping test for sending K msgs per node

9 years agocharj: added raw access option for jacobi benchmark
Aaron Becker [Fri, 22 Jun 2012 19:37:16 +0000 (14:37 -0500)]
charj: added raw access option for jacobi benchmark

9 years agocharj: get rid of extra malloc in jacobi implementation
Aaron Becker [Fri, 22 Jun 2012 16:27:18 +0000 (11:27 -0500)]
charj: get rid of extra malloc in jacobi implementation

9 years agocharj: pup functions and deallocation fix for array library
Aaron Becker [Fri, 22 Jun 2012 14:45:55 +0000 (09:45 -0500)]
charj: pup functions and deallocation fix for array library

9 years agocharj: jacobi app with charm equivalent
Aaron Becker [Fri, 22 Jun 2012 14:43:39 +0000 (09:43 -0500)]
charj: jacobi app with charm equivalent

9 years agocharj: don't try to move compiler output when we're just translating
Aaron Becker [Thu, 21 Jun 2012 23:23:29 +0000 (18:23 -0500)]
charj: don't try to move compiler output when we're just translating

9 years agoNDMeshStreamer: replaced flush to final destinations with a flush
Lukasz Wesolowski [Thu, 21 Jun 2012 23:14:17 +0000 (18:14 -0500)]
NDMeshStreamer: replaced flush to final destinations with a flush
along the dimension of the mesh when using completion detection;
removed code for flush to final destinations

9 years agoMerge branch 'charm' of charmgit:charm into charm
Aaron Becker [Thu, 21 Jun 2012 20:43:06 +0000 (15:43 -0500)]
Merge branch 'charm' of charmgit:charm into charm

9 years agocharmxi: add -count-tokens command line option
Aaron Becker [Thu, 21 Jun 2012 20:40:43 +0000 (15:40 -0500)]
charmxi: add -count-tokens command line option

charmc gets a new option -count-tokens which just reports the number of
tokens in an interface file and returns. It's a no-op for non-interface
files. This is used to compare program lengths in a more meaningful way
than lines of code.

9 years agocharj: add --count-tokens command line options
Aaron Becker [Thu, 21 Jun 2012 20:39:28 +0000 (15:39 -0500)]
charj: add --count-tokens command line options

9 years agobuild: -optimize now spouts -O3 on net-linux-x86_64
Ramprasad Venkataraman [Thu, 21 Jun 2012 15:43:46 +0000 (10:43 -0500)]
build: -optimize now spouts -O3 on net-linux-x86_64

9 years agoNDMeshStreamer: added an overloaded init function that takes a CkArrayID
Lukasz Wesolowski [Wed, 20 Jun 2012 00:17:27 +0000 (19:17 -0500)]
NDMeshStreamer: added an overloaded init function that takes a CkArrayID
as input and uses it to determine the local number of contributors in the
common case when each local array element of a single chare array
is a contributor.

9 years agoupdate compiler path for Vesta
Eric Bohm [Tue, 19 Jun 2012 19:57:25 +0000 (19:57 +0000)]
update compiler path for Vesta

9 years agoMerge branch 'charm' of charmgit:charm into charm
Aaron Becker [Tue, 19 Jun 2012 18:55:28 +0000 (13:55 -0500)]
Merge branch 'charm' of charmgit:charm into charm

9 years agoCharj: merge grammar changes for messages and reductions
Aaron Becker [Tue, 19 Jun 2012 18:54:20 +0000 (13:54 -0500)]
Charj: merge grammar changes for messages and reductions

9 years agominor clean up
Gengbin Zheng [Tue, 19 Jun 2012 17:34:48 +0000 (12:34 -0500)]
minor clean up

9 years agocharj: Fix array element access template in postanalysis
Aaron Becker [Tue, 19 Jun 2012 15:19:34 +0000 (10:19 -0500)]
charj: Fix array element access template in postanalysis

9 years agoCharj: Fix accessor function, add another overload for index, add some prints.
Jonathan Lifflander [Tue, 19 Jun 2012 01:10:29 +0000 (20:10 -0500)]
Charj: Fix accessor function, add another overload for index, add some prints.

9 years agoCharj: Construct Range when a range is given.
Jonathan Lifflander [Tue, 19 Jun 2012 00:09:52 +0000 (19:09 -0500)]
Charj: Construct Range when a range is given.

9 years agoCharj: Add new array constructors for references and single pointer.
Jonathan Lifflander [Tue, 19 Jun 2012 00:09:23 +0000 (19:09 -0500)]
Charj: Add new array constructors for references and single pointer.

9 years agoNDMeshStreamer: removing experimental code for accelerating termination
Lukasz Wesolowski [Mon, 18 Jun 2012 22:55:22 +0000 (17:55 -0500)]
NDMeshStreamer: removing experimental code for accelerating termination

9 years agoNDMeshStreamer: added GroupMeshStreamer and ArrayMeshStreamer constructors
Lukasz Wesolowski [Mon, 18 Jun 2012 22:44:58 +0000 (17:44 -0500)]
NDMeshStreamer: added GroupMeshStreamer and ArrayMeshStreamer constructors
that accept buffer size, rather than total buffering limit

9 years agoCharj: Fix problem with allocation of user types.
Jonathan Lifflander [Mon, 18 Jun 2012 17:54:56 +0000 (12:54 -0500)]
Charj: Fix problem with allocation of user types.

9 years agoCharj: Resolve array template field type and generate non-value type.
Jonathan Lifflander [Fri, 15 Jun 2012 18:53:21 +0000 (13:53 -0500)]
Charj: Resolve array template field type and generate non-value type.

9 years agoenumerate all ib devices to find IB interface
Gengbin Zheng [Thu, 14 Jun 2012 21:07:53 +0000 (17:07 -0400)]
enumerate all ib devices to find IB interface

9 years agoadded comments about high level overview if emulator
Gengbin Zheng [Thu, 14 Jun 2012 07:30:58 +0000 (02:30 -0500)]
added comments about high level overview if emulator

9 years agoexplicitly check link layer
Gengbin Zheng [Tue, 12 Jun 2012 14:02:48 +0000 (09:02 -0500)]
explicitly check link layer

9 years agoinstead of always assuming ibport as 1, actually test if the port is valid or not.
Gengbin Zheng [Mon, 11 Jun 2012 18:57:29 +0000 (13:57 -0500)]
instead of always assuming ibport as 1, actually test if the port is valid or not.

9 years agoAdding support for parallel recovery.
Esteban Meneses [Thu, 7 Jun 2012 19:43:41 +0000 (14:43 -0500)]
Adding support for parallel recovery.

9 years agoRemoving debug messages.
Esteban Meneses [Thu, 7 Jun 2012 16:34:54 +0000 (11:34 -0500)]
Removing debug messages.

9 years agoRemoving an extra message copy in message logging layer.
Esteban Meneses [Thu, 7 Jun 2012 16:24:39 +0000 (11:24 -0500)]
Removing an extra message copy in message logging layer.

9 years agoDisable the 1600MHz debug print.
Sameer Kumar [Tue, 5 Jun 2012 11:32:28 +0000 (06:32 -0500)]
Disable the 1600MHz debug print.

9 years agoMinor changes to conv-mach.h/sh
Sameer Kumar [Tue, 29 May 2012 13:04:23 +0000 (08:04 -0500)]
Minor changes to conv-mach.h/sh

9 years agoMerge optimizations/fixes/changes from pami-bgq branch.
Sameer Kumar [Tue, 29 May 2012 12:51:04 +0000 (07:51 -0500)]
Merge optimizations/fixes/changes from pami-bgq branch.

9 years agoAdding support for collectives and parallel recovery.
Esteban Meneses [Mon, 4 Jun 2012 22:17:49 +0000 (17:17 -0500)]
Adding support for collectives and parallel recovery.

9 years agoMore memory leak fixes.
Esteban Meneses [Mon, 4 Jun 2012 20:10:02 +0000 (15:10 -0500)]
More memory leak fixes.

9 years agoFixing memory leaks reported by Valgrind in message logging layer.
Esteban Meneses [Mon, 4 Jun 2012 17:02:52 +0000 (12:02 -0500)]
Fixing memory leaks reported by Valgrind in message logging layer.

9 years agoFixing memory bugs reported by valgrind.
Esteban Meneses [Sat, 2 Jun 2012 22:22:57 +0000 (17:22 -0500)]
Fixing memory bugs reported by valgrind.

9 years agochange CkAssert to CkAbort
Gengbin Zheng [Thu, 31 May 2012 23:31:49 +0000 (18:31 -0500)]
change CkAssert to CkAbort

9 years agoAdding error message when kill file is not found.
Esteban Meneses [Wed, 30 May 2012 21:07:26 +0000 (16:07 -0500)]
Adding error message when kill file is not found.

9 years agoMerge branch 'charm' of charmgit:charm into charm
Aaron Becker [Sat, 26 May 2012 02:22:21 +0000 (21:22 -0500)]
Merge branch 'charm' of charmgit:charm into charm

Conflicts:
src/langs/charj/tests/leanmd/leanmd.cj

9 years agocharj: leanmd update
Aaron Becker [Sat, 26 May 2012 02:00:26 +0000 (21:00 -0500)]
charj: leanmd update

9 years agocharj: leanmd update
Aaron Becker [Sat, 26 May 2012 02:00:26 +0000 (21:00 -0500)]
charj: leanmd update

9 years agoNDMeshStreamer: bug fix - number of local contributors was mistakenly
Lukasz Wesolowski [Fri, 25 May 2012 22:11:03 +0000 (17:11 -0500)]
NDMeshStreamer: bug fix - number of local contributors was mistakenly
assumed to be equal to number of local clients; changed init function to
take local number of contributors as input

9 years agoNDMeshStreamer: added optimization to reduce amount of computation required to process
Lukasz Wesolowski [Thu, 24 May 2012 19:51:15 +0000 (14:51 -0500)]
NDMeshStreamer: added optimization to reduce amount of computation required to process
data items at intermediate destinations, at the cost of an additional field in the message.

9 years agoNDMeshStreamer: added CkAbort in determineLocation if destinationPe
Lukasz Wesolowski [Wed, 23 May 2012 19:54:42 +0000 (14:54 -0500)]
NDMeshStreamer: added CkAbort in determineLocation if destinationPe
is the same as sender's PE.

9 years agoBigsim bare emulator examples: provide a dummy version of traceWriteSTS
Phil Miller [Tue, 22 May 2012 18:41:20 +0000 (13:41 -0500)]
Bigsim bare emulator examples: provide a dummy version of traceWriteSTS

Commit 1e05b13735befbeb78ba3ac9743f60e40047f279 made the Bigsim
emulator generate and STS file automatically, to remove the need for a
manual execution with Projections linked. That assumed that the
program running under emulation was going to link the Charm++
libraries, which doesn't hold for this small set of examples. Since an
STS file is meaningless for them (I think), provide a dummy version of
the missing function.

9 years agotranslator: enclose EP index argument to _TRACE_BEGIN_EXECUTE_DETAILED within parenth...
Pritish Jetley [Mon, 21 May 2012 20:27:31 +0000 (15:27 -0500)]
translator: enclose EP index argument to _TRACE_BEGIN_EXECUTE_DETAILED within parentheses so that preprocessor does not complain about number of arguments

9 years agoincrement minor version number to account for API changes since 6.4.0
Eric Bohm [Fri, 18 May 2012 18:01:57 +0000 (13:01 -0500)]
increment minor version number to account for API changes since 6.4.0

9 years agobigsim tutorial added to manual
Ehsan Totoni [Fri, 18 May 2012 15:15:01 +0000 (10:15 -0500)]
bigsim tutorial added to manual

9 years agoMerge branch 'charm' of charmgit:charm into charm
Edgar Solomonik [Tue, 15 May 2012 22:43:23 +0000 (22:43 +0000)]
Merge branch 'charm' of charmgit:charm into charm

9 years agoset bounds for BG/Q topology
Edgar Solomonik [Tue, 15 May 2012 22:42:53 +0000 (22:42 +0000)]
set bounds for BG/Q topology

9 years agoNDMeshStreamer: bug fixes to staged completion scheme
Lukasz Wesolowski [Tue, 15 May 2012 22:11:17 +0000 (17:11 -0500)]
NDMeshStreamer: bug fixes to staged completion scheme

9 years agoquick bigsim update no need to make sts file
Ehsan Totoni [Tue, 15 May 2012 17:32:15 +0000 (12:32 -0500)]
quick bigsim update no need to make sts file

9 years agobigsim emulator write sts file
Ehsan Totoni [Tue, 15 May 2012 17:26:11 +0000 (12:26 -0500)]
bigsim emulator write sts file

9 years agoMinor variable misnomer in BGQ build.
Edgar Solomonik [Tue, 15 May 2012 02:14:41 +0000 (02:14 +0000)]
Minor variable misnomer in BGQ build.

9 years agoNDMeshStreamer: fixing a memory leak when using more than one
Lukasz Wesolowski [Fri, 11 May 2012 19:28:29 +0000 (14:28 -0500)]
NDMeshStreamer: fixing a memory leak when using more than one
phase of streaming with staged completion.

9 years agoturn largepage off
Gengbin Zheng [Fri, 11 May 2012 16:59:09 +0000 (11:59 -0500)]
turn largepage off

9 years agoMerge branch 'charm' of charmgit:charm into charm
Yanhua Sun [Fri, 11 May 2012 05:11:30 +0000 (00:11 -0500)]
Merge branch 'charm' of charmgit:charm into charm