Skip to content

Commit 13c6887

Browse files
authored
Renamed project to charm4py. Added 0.11 release notes
1 parent fa28ce1 commit 13c6887

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

90 files changed

+462
-413
lines changed

.gitignore

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,22 @@
1-
#ignore build files
1+
# ignore build files
22
docs/_build/
33
build/
44
charm_src/
5-
charmpy/charmlib/*.o
6-
charmpy/charmlib/*.so
7-
charmpy/charmlib/charmlib_cython.c
8-
charmpy/charmlib/_charmlib_cffi.c
9-
charmpy/charmlib/build/
5+
charm4py/_version.py
6+
charm4py/charmlib/*.o
7+
charm4py/charmlib/*.so
8+
charm4py/charmlib/charmlib_cython.c
9+
charm4py/charmlib/_charmlib_cffi.c
10+
charm4py/charmlib/build/
1011
__pycache__
1112

12-
#ignore some common tmp files
13+
# ignore some common tmp files
1314
*.swp
1415
*.pyc
1516

16-
#ignore binaries
17-
charmpy/.libs/
17+
# ignore binaries
18+
charm4py/.libs/
1819
charmrun/charmrun
1920

20-
#ignore macOS specific files
21+
# ignore macOS specific files
2122
.DS_STORE

.travis.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,9 @@ script:
1717
- git clone https://github.com/UIUC-PPL/charm charm_src/charm
1818
- export CHARM_EXTRA_BUILD_OPTS="--enable-error-checking"
1919
- export CHARM_BUILD_PROCESSES=2
20-
- export CHARMPY_BUILD_CFFI=1
20+
- export CHARM4PY_BUILD_CFFI=1
2121
- python3 setup.py build_ext --inplace
2222
- python2 setup.py build_ext --inplace
2323
- export PYTHONPATH=`pwd`
24-
- export CHARMPY_TEST_NUM_PROCESSES=2
24+
- export CHARM4PY_TEST_NUM_PROCESSES=2
2525
- python3 auto_test.py

CHANGES.rst

Lines changed: 48 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,37 @@ This describes the most significant changes. For more detail, see the commit
33
log in the source code repository.
44

55

6+
What's new in v0.11
7+
===================
8+
9+
* Changed the name of the project from CharmPy to *charm4py* (more information on why
10+
we changed the name is in the forum).
11+
12+
* Not directly related to this release, but there is a new forum for charm4py discussions
13+
(see contact details). Feel free to visit the forum for discussions, reports,
14+
provide feedback, request features and to follow development.
15+
16+
* Support for interactive charm4py shell using multiple processes on one host has been added
17+
as a *beta* feature. Please provide feedback and suggestions in the forum or GitHub.
18+
19+
* Uses the recent major release of Charm++ (6.9)
20+
21+
* C-extension module can be built on Windows. Windows binary wheels on PyPI come with
22+
the compiled extension module.
23+
24+
* API change: method ``Chare.gather()`` has been removed to make the name available
25+
for user-defined remote methods. Use ``self.contribute(data, Reducer.gather, ...)``
26+
instead.
27+
28+
* Some methods of ``charm`` are now remotely callable, like ``charm.exit()``.
29+
They can be used as any other remote method including as targets of reductions.
30+
For example: ``self.contribute(None, None, charm.thisProxy[0].exit)``
31+
32+
* Can now use Python exit function instead of ``charm.exit()``
33+
34+
* Other small fixes and improvements.
35+
36+
637
What's new in v0.10.1
738
=====================
839

@@ -12,16 +43,16 @@ This is a bugfix and documentation release:
1243

1344
* Fixed reduction to Future failing when contributing numeric arrays
1445

15-
* CharmPy now requires Charm++ version >= ``6.8.2-890`` which, among other things,
46+
* Charm4py now requires Charm++ version >= ``6.8.2-890`` which, among other things,
1647
includes fixes for the following Windows issues:
1748

1849
- Running an application without ``charmrun`` on Windows would crash
1950

20-
- Abort messages were sometimes not displayed on exit. On CharmPy,
51+
- Abort messages were sometimes not displayed on exit. On Charm4py,
2152
this had the effect that Python runtime errors were sometimes not shown.
2253

2354
- If running with charmrun, any output prior to charm.start()
24-
would not be shown. On CharmPy, this had the effect that Python
55+
would not be shown. On Charm4py, this had the effect that Python
2556
syntax errors were not shown.
2657

2758

@@ -30,17 +61,17 @@ What's new in v0.10
3061

3162
**Installation and Setup**
3263

33-
* CharmPy can be installed with pip (``pip install charmpy``) on regular
64+
* Charm4py can be installed with pip (``pip install charm4py``) on regular
3465
Linux, macOS and Windows systems
3566

36-
* Support setuptools to build, install, and package CharmPy
67+
* Support setuptools to build, install, and package Charm4py
3768

3869
* Installation from source is much simpler (see documentation)
3970

40-
* charmpy builds include the charm++ library and are relocatable. ``LD_LIBRARY_PATH`` or
71+
* charm4py builds include the charm++ library and are relocatable. ``LD_LIBRARY_PATH`` or
4172
similar schemes are no longer needed.
4273

43-
* charmpy does not need a configuration file anymore (it will automatically
74+
* charm4py does not need a configuration file anymore (it will automatically
4475
select the best available interface layer at runtime).
4576

4677

@@ -53,7 +84,7 @@ What's new in v0.10
5384
**Performance**
5485

5586
* Added Cython-based C-extension module to considerably speed up the interface with
56-
the Charm++ library and critical parts of charmpy (currently only with Python 3+).
87+
the Charm++ library and critical parts of charm4py (currently only with Python 3+).
5788

5889
* Several minor performance improvements
5990

@@ -92,12 +123,12 @@ What's new in v0.10
92123

93124
* ArrayMap: to customize initial mapping of chares to cores
94125

95-
* Warn if user forgot to call ``charm.start()`` when launching charmpy programs
126+
* Warn if user forgot to call ``charm.start()`` when launching charm4py programs
96127

97128
* Exposed ``migrateMe(toPe)`` method of chares to manually migrate a chare to indicated
98129
PE
99130

100-
* Exposed `LBTurnInstrumentOn/Off`__ from Charm++ to charmpy applications
131+
* Exposed `LBTurnInstrumentOn/Off`__ from Charm++ to charm4py applications
101132

102133
* Interface to construct topology-aware trees of nodes/PEs
103134

@@ -137,8 +168,8 @@ What's new in v0.10
137168

138169
* Heavy code refactoring. Code simplification in several places
139170

140-
* Several improvements towards PEP 8 compliance of core charmpy code.
141-
Indentation of code in ``charmpy`` package is PEP 8 compliant.
171+
* Several improvements towards PEP 8 compliance of core charm4py code.
172+
Indentation of code in ``charm4py`` package is PEP 8 compliant.
142173

143174
* Improvements to test infrastructure and added Travis CI script
144175

@@ -152,9 +183,9 @@ What's new in v0.9
152183

153184
**General**
154185

155-
* CharmPy is compatible with Python 3 (Python 3 is the recommended option)
186+
* Charm4py is compatible with Python 3 (Python 3 is the recommended option)
156187

157-
* Added documentation (http://charmpy.readthedocs.io)
188+
* Added documentation (http://charm4py.readthedocs.io)
158189

159190

160191
**API Changes**
@@ -206,8 +237,8 @@ What's new in v0.9
206237

207238
* Improved profiling output. Profiling is disabled by default.
208239

209-
* Improved general error handling and output. Errors in charmpy runtime raise
210-
``CharmPyError`` exception.
240+
* Improved general error handling and output. Errors in charm4py runtime raise
241+
``Charm4PyError`` exception.
211242

212243
* Code Examples:
213244

@@ -217,4 +248,4 @@ What's new in v0.9
217248

218249
- Add total iterations as program parameter for wave2d
219250

220-
* Added ``auto_test.py`` script to test charmpy
251+
* Added ``auto_test.py`` script to test charm4py

MANIFEST.in

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
include MANIFEST.in
2-
include README.rst setup.py auto_test.py AUTHORS.md LICENSE CHANGES.rst
2+
include README.rst setup.py auto_test.py test_config.json AUTHORS.md LICENSE CHANGES.rst
33

44
include charm_src/charm.tar.gz
55

6-
exclude charmpy/charmlib/charmlib_cython.c
6+
exclude charm4py/charmlib/charmlib_cython.c
77

8-
recursive-include charmpy libcharm_version *.pxd *.pyx
8+
recursive-include charm4py libcharm_version *.pxd *.pyx
99
recursive-include docs *.py Makefile *.bat *.rst *.svg
1010
recursive-include examples *.py
1111
recursive-include tests *.py

README.rst

Lines changed: 17 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,16 @@
1-
=======
2-
CharmPy
3-
=======
1+
========
2+
charm4py
3+
========
44

5-
CharmPy is a general-purpose parallel and distributed programming framework with a
6-
simple and powerful API, based on migratable Python objects and remote method
7-
invocation; built on top of an adaptive C++ runtime system providing *speed*,
8-
*scalability* and *dynamic load balancing*.
5+
(NOTE: With release v0.11 we have changed the name of the project to charm4py. See
6+
the `forum`_ for more information.)
97

10-
CharmPy allows development of parallel applications that scale from laptops to
8+
charm4py (Charm++ for Python *-formerly CharmPy-*) is a general-purpose parallel and
9+
distributed programming framework with a simple and powerful API, based on
10+
migratable Python objects and remote method invocation; built on top of an adaptive
11+
C++ runtime system providing *speed*, *scalability* and *dynamic load balancing*.
12+
13+
charm4py allows development of parallel applications that scale from laptops to
1114
supercomputers, using the Python language. It is built on top of `Charm++`_.
1215

1316
Please see the Documentation_.
@@ -19,7 +22,7 @@ The following computes Pi in parallel, using any number of machines and processo
1922

2023
.. code-block:: python
2124
22-
from charmpy import charm, Chare, Group, Reducer
25+
from charm4py import charm, Chare, Group, Reducer
2326
from math import pi
2427
import time
2528
@@ -49,13 +52,13 @@ The following computes Pi in parallel, using any number of machines and processo
4952
charm.start(main)
5053
5154
52-
This is a simple example and demonstrates only a few features of CharmPy. Some things to note
55+
This is a simple example and demonstrates only a few features of charm4py. Some things to note
5356
from this example:
5457

5558
- *Chares* are distributed Python objects.
5659
- A *Group* is a type of distributed collection where one instance of the specified
5760
chare type is created on each processor.
58-
- Remote method invocation in CharmPy is *asynchronous*.
61+
- Remote method invocation in charm4py is *asynchronous*.
5962

6063
In this example, there is only one chare per processor, but multiple chares (of the same
6164
or different type) can exist on any given processor, which can bring performance
@@ -65,13 +68,13 @@ benefits. Please refer to the documentation_ for more information.
6568
Contact
6669
-------
6770

68-
`Mailing list`_
71+
We want feedback from the community. If you have feature suggestions, support questions or general comments, please visit our `forum`_.
6972

7073
Main author at <[email protected]>
7174

7275

7376
.. _Charm++: https://github.com/UIUC-PPL/charm
7477

75-
.. _Documentation: https://charmpy.readthedocs.io
78+
.. _Documentation: https://charm4py.readthedocs.io
7679

77-
.. _Mailing list: charm@cs.illinois.edu
80+
.. _forum: https://charm.discourse.group/c/charm4py

auto_test.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ def searchForPython(python_implementations):
4242
CHARM_QUIET_AFTER_NUM_TESTS = 5
4343

4444
commonArgs = ['++local']
45-
default_num_processes = int(os.environ.get('CHARMPY_TEST_NUM_PROCESSES', 4))
45+
default_num_processes = int(os.environ.get('CHARM4PY_TEST_NUM_PROCESSES', 4))
4646

4747
try:
4848
import numba

charm4py/__init__.py

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
import sys
2+
if sys.version_info < (2, 7, 0):
3+
raise RuntimeError("charm4py requires Python 2.7 or higher")
4+
import atexit
5+
import os
6+
import subprocess
7+
8+
9+
charm4py_version = "unknown"
10+
try:
11+
from ._version import version as charm4py_version
12+
except:
13+
try:
14+
charm4py_version = subprocess.check_output(['git', 'describe'],
15+
cwd=os.path.dirname(__file__)).rstrip().decode()
16+
except:
17+
pass
18+
19+
if os.environ.get('CHARM_NOLOAD', '0') == '0':
20+
from .charm import charm, readonlies, Options
21+
Reducer = charm.reducers
22+
23+
CkMyPe = charm.myPe
24+
CkNumPes = charm.numPes
25+
CkExit = charm.exit
26+
CkAbort = charm.abort
27+
28+
from .entry_method import when, threaded
29+
30+
from .chare import Chare, Group, Array, ArrayMap
31+
32+
33+
def checkCharmStarted():
34+
if not charm.started:
35+
print('Program is exiting but charm was not started: charm.start() was not '
36+
'called or error happened before start')
37+
38+
39+
atexit.register(checkCharmStarted)

0 commit comments

Comments
 (0)