Skip to content

Commit

Permalink
Renamed project to charm4py. Added 0.11 release notes
Browse files Browse the repository at this point in the history
  • Loading branch information
juanjgalvez committed Nov 27, 2018
1 parent fa28ce1 commit 13c6887
Show file tree
Hide file tree
Showing 90 changed files with 462 additions and 413 deletions.
21 changes: 11 additions & 10 deletions .gitignore
@@ -1,21 +1,22 @@
#ignore build files
# ignore build files
docs/_build/
build/
charm_src/
charmpy/charmlib/*.o
charmpy/charmlib/*.so
charmpy/charmlib/charmlib_cython.c
charmpy/charmlib/_charmlib_cffi.c
charmpy/charmlib/build/
charm4py/_version.py
charm4py/charmlib/*.o
charm4py/charmlib/*.so
charm4py/charmlib/charmlib_cython.c
charm4py/charmlib/_charmlib_cffi.c
charm4py/charmlib/build/
__pycache__

#ignore some common tmp files
# ignore some common tmp files
*.swp
*.pyc

#ignore binaries
charmpy/.libs/
# ignore binaries
charm4py/.libs/
charmrun/charmrun

#ignore macOS specific files
# ignore macOS specific files
.DS_STORE
4 changes: 2 additions & 2 deletions .travis.yml
Expand Up @@ -17,9 +17,9 @@ script:
- git clone https://github.com/UIUC-PPL/charm charm_src/charm
- export CHARM_EXTRA_BUILD_OPTS="--enable-error-checking"
- export CHARM_BUILD_PROCESSES=2
- export CHARMPY_BUILD_CFFI=1
- export CHARM4PY_BUILD_CFFI=1
- python3 setup.py build_ext --inplace
- python2 setup.py build_ext --inplace
- export PYTHONPATH=`pwd`
- export CHARMPY_TEST_NUM_PROCESSES=2
- export CHARM4PY_TEST_NUM_PROCESSES=2
- python3 auto_test.py
65 changes: 48 additions & 17 deletions CHANGES.rst
Expand Up @@ -3,6 +3,37 @@ This describes the most significant changes. For more detail, see the commit
log in the source code repository.


What's new in v0.11
===================

* Changed the name of the project from CharmPy to *charm4py* (more information on why
we changed the name is in the forum).

* Not directly related to this release, but there is a new forum for charm4py discussions
(see contact details). Feel free to visit the forum for discussions, reports,
provide feedback, request features and to follow development.

* Support for interactive charm4py shell using multiple processes on one host has been added
as a *beta* feature. Please provide feedback and suggestions in the forum or GitHub.

* Uses the recent major release of Charm++ (6.9)

* C-extension module can be built on Windows. Windows binary wheels on PyPI come with
the compiled extension module.

* API change: method ``Chare.gather()`` has been removed to make the name available
for user-defined remote methods. Use ``self.contribute(data, Reducer.gather, ...)``
instead.

* Some methods of ``charm`` are now remotely callable, like ``charm.exit()``.
They can be used as any other remote method including as targets of reductions.
For example: ``self.contribute(None, None, charm.thisProxy[0].exit)``

* Can now use Python exit function instead of ``charm.exit()``

* Other small fixes and improvements.


What's new in v0.10.1
=====================

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

* Fixed reduction to Future failing when contributing numeric arrays

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

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

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

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


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

**Installation and Setup**

* CharmPy can be installed with pip (``pip install charmpy``) on regular
* Charm4py can be installed with pip (``pip install charm4py``) on regular
Linux, macOS and Windows systems

* Support setuptools to build, install, and package CharmPy
* Support setuptools to build, install, and package Charm4py

* Installation from source is much simpler (see documentation)

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

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


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

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

* Several minor performance improvements

Expand Down Expand Up @@ -92,12 +123,12 @@ What's new in v0.10

* ArrayMap: to customize initial mapping of chares to cores

* Warn if user forgot to call ``charm.start()`` when launching charmpy programs
* Warn if user forgot to call ``charm.start()`` when launching charm4py programs

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

* Exposed `LBTurnInstrumentOn/Off`__ from Charm++ to charmpy applications
* Exposed `LBTurnInstrumentOn/Off`__ from Charm++ to charm4py applications

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

Expand Down Expand Up @@ -137,8 +168,8 @@ What's new in v0.10

* Heavy code refactoring. Code simplification in several places

* Several improvements towards PEP 8 compliance of core charmpy code.
Indentation of code in ``charmpy`` package is PEP 8 compliant.
* Several improvements towards PEP 8 compliance of core charm4py code.
Indentation of code in ``charm4py`` package is PEP 8 compliant.

* Improvements to test infrastructure and added Travis CI script

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

**General**

* CharmPy is compatible with Python 3 (Python 3 is the recommended option)
* Charm4py is compatible with Python 3 (Python 3 is the recommended option)

* Added documentation (http://charmpy.readthedocs.io)
* Added documentation (http://charm4py.readthedocs.io)


**API Changes**
Expand Down Expand Up @@ -206,8 +237,8 @@ What's new in v0.9

* Improved profiling output. Profiling is disabled by default.

* Improved general error handling and output. Errors in charmpy runtime raise
``CharmPyError`` exception.
* Improved general error handling and output. Errors in charm4py runtime raise
``Charm4PyError`` exception.

* Code Examples:

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

- Add total iterations as program parameter for wave2d

* Added ``auto_test.py`` script to test charmpy
* Added ``auto_test.py`` script to test charm4py
6 changes: 3 additions & 3 deletions MANIFEST.in
@@ -1,11 +1,11 @@
include MANIFEST.in
include README.rst setup.py auto_test.py AUTHORS.md LICENSE CHANGES.rst
include README.rst setup.py auto_test.py test_config.json AUTHORS.md LICENSE CHANGES.rst

include charm_src/charm.tar.gz

exclude charmpy/charmlib/charmlib_cython.c
exclude charm4py/charmlib/charmlib_cython.c

recursive-include charmpy libcharm_version *.pxd *.pyx
recursive-include charm4py libcharm_version *.pxd *.pyx
recursive-include docs *.py Makefile *.bat *.rst *.svg
recursive-include examples *.py
recursive-include tests *.py
Expand Down
31 changes: 17 additions & 14 deletions README.rst
@@ -1,13 +1,16 @@
=======
CharmPy
=======
========
charm4py
========

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

CharmPy allows development of parallel applications that scale from laptops to
charm4py (Charm++ for Python *-formerly CharmPy-*) is a general-purpose parallel and
distributed programming framework with a simple and powerful API, based on
migratable Python objects and remote method invocation; built on top of an adaptive
C++ runtime system providing *speed*, *scalability* and *dynamic load balancing*.

charm4py allows development of parallel applications that scale from laptops to
supercomputers, using the Python language. It is built on top of `Charm++`_.

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

.. code-block:: python
from charmpy import charm, Chare, Group, Reducer
from charm4py import charm, Chare, Group, Reducer
from math import pi
import time
Expand Down Expand Up @@ -49,13 +52,13 @@ The following computes Pi in parallel, using any number of machines and processo
charm.start(main)
This is a simple example and demonstrates only a few features of CharmPy. Some things to note
This is a simple example and demonstrates only a few features of charm4py. Some things to note
from this example:

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

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

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

Main author at <jjgalvez@illinois.edu>


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

.. _Documentation: https://charmpy.readthedocs.io
.. _Documentation: https://charm4py.readthedocs.io

.. _Mailing list: charm@cs.illinois.edu
.. _forum: https://charm.discourse.group/c/charm4py
2 changes: 1 addition & 1 deletion auto_test.py
Expand Up @@ -42,7 +42,7 @@ def searchForPython(python_implementations):
CHARM_QUIET_AFTER_NUM_TESTS = 5

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

try:
import numba
Expand Down
39 changes: 39 additions & 0 deletions charm4py/__init__.py
@@ -0,0 +1,39 @@
import sys
if sys.version_info < (2, 7, 0):
raise RuntimeError("charm4py requires Python 2.7 or higher")
import atexit
import os
import subprocess


charm4py_version = "unknown"
try:
from ._version import version as charm4py_version
except:
try:
charm4py_version = subprocess.check_output(['git', 'describe'],
cwd=os.path.dirname(__file__)).rstrip().decode()
except:
pass

if os.environ.get('CHARM_NOLOAD', '0') == '0':
from .charm import charm, readonlies, Options
Reducer = charm.reducers

CkMyPe = charm.myPe
CkNumPes = charm.numPes
CkExit = charm.exit
CkAbort = charm.abort

from .entry_method import when, threaded

from .chare import Chare, Group, Array, ArrayMap


def checkCharmStarted():
if not charm.started:
print('Program is exiting but charm was not started: charm.start() was not '
'called or error happened before start')


atexit.register(checkCharmStarted)

0 comments on commit 13c6887

Please sign in to comment.