Added charm4py build target, renamed charmpy to charm4py in comments 04/4804/2
authorJuan Galvez <jjgalvez@illinois.edu>
Fri, 9 Nov 2018 19:27:52 +0000 (13:27 -0600)
committerSam White <white67@illinois.edu>
Sat, 10 Nov 2018 15:08:01 +0000 (09:08 -0600)
Change-Id: I048fc027597282cc3fe2fb8a7dfc4b1d384a40e9

14 files changed:
README.charm4py [moved from README.charmpy with 90% similarity]
build
src/ck-core/charm++.h
src/ck-core/charm.h
src/ck-core/ck.C
src/ck-core/ckcallback.C
src/ck-core/ckcallback.h
src/ck-core/ckreduction.C
src/ck-core/ckreduction.h
src/ck-core/init.C
src/ck-core/register.C
src/scripts/Makefile
src/scripts/configure.ac
src/util/cmitls.c

similarity index 90%
rename from README.charmpy
rename to README.charm4py
index 83551584027d8ed4115eb51a10aef44b2e41b2a2..50db43dc073679f1dc4536bd477e5981f004a5a3 100644 (file)
@@ -1,10 +1,10 @@
 
-Building Charm++ shared library for Charmpy
-===========================================
+Building Charm++ shared library for Charm4py
+============================================
 
-- Build libcharm for non-SMP mode using '--build-shared --enable-charmpy'
+- Build libcharm for non-SMP mode using 'charm4py' build target.
   For example, on a regular Linux machine:
-  ./build libcharm netlrts-linux-x86_64 -j8 --with-production --build-shared --enable-charmpy
+  ./build charm4py netlrts-linux-x86_64 -j8 --with-production
 
   NOTE: We are currently requiring non-smp mode because in the most common Python implementation
   (CPython), multiple threads cannot run Python code concurrently due to the Global Interpreter Lock
@@ -20,7 +20,7 @@ needs to be modified to include the module.
 Developer documentation
 =======================
 
-Chares that are defined and that run outside of the C/C++ runtime (e.g. Python objects in a Charmpy
+Chares that are defined and that run outside of the C/C++ runtime (e.g. Python objects in a Charm4py
 program) require lightweight objects acting as counterpart inside the C/C++ runtime.
 These C++ objects are:
 
@@ -28,7 +28,7 @@ These C++ objects are:
 
 and their function is mainly to relay received messages to their external counterpart.
 
-To allow use of the C++ runtime from external clients (e.g. Charmpy), changes to the
+To allow use of the C++ runtime from external clients (e.g. Charm4py), changes to the
 following files have been made:
 
 charm++.h
@@ -55,7 +55,7 @@ ckarray.h/C
 init.C
   Changes to circumvent linking issues (see 'Improve/support external module linking'
   below for details)
-  NOTE: These changes are only enabled if building Charm with charmpy support.
+  NOTE: These changes are only enabled if building Charm with charm4py support.
 
 TODO
 ====
@@ -74,7 +74,7 @@ void _createTraces(char **argv);
 These are typically defined in a moduleInit.C or similar file created by charmc
 during linking of final program executable.
 
-Problem is that when accesing the Charm shared library from Charmpy, these functions
+Problem is that when accesing the Charm shared library from Charm4py, these functions
 are never defined, so I have disabled calls to them in some cases, or bypassed with alternative
 code with #if CMK_CHARMPY macro.
 
diff --git a/build b/build
index 7faf232c564f2ef6f01c6cbbc644e71549791b7f..7b1384885caf8d9badcef8a4c68bd49f90fb582a 100755 (executable)
--- a/build
+++ b/build
@@ -17,7 +17,7 @@ syntax() {
   echo ''
   echo 'Usage: build <target> <version> <options> [charmc-options ...]'
   echo ''
-  echo '<targets>: converse charm++ LIBS AMPI charmpy bigemulator msa'
+  echo '<targets>: converse charm++ LIBS AMPI charm4py bigemulator msa'
   echo '<targets>: doc ps-doc pdf-doc html-doc'
   if test $more = 1
   then
@@ -25,7 +25,7 @@ syntax() {
   echo '  charm++         compile Charm++ core only'
   echo '  AMPI            compile Adaptive MPI on top of Charm++'
   echo '  LIBS            compile additional parallel libraries with Charm++ core'
-  echo '  charmpy         compile shared library version of Charm++ for Charmpy'
+  echo '  charm4py        compile shared library version of Charm++ for charm4py'
   echo '  bigemulator     build additional BigSim libraries'
   echo '  msa             build Multiphase Shared Arrays(MSA) library'
   echo '  Tau             build the TAU tracing library for generating TAU performance data' 
@@ -658,15 +658,16 @@ then
     fi
 fi
 
-# build for Charmpy
-if [ "$PROGRAM" = "charmpy" ]; then
+# build for Charm4py
+if [ "$PROGRAM" = "charmpy" ] || [ "$PROGRAM" = "charm4py" ]; then
+
     if [ -n "$BOPTS" ] && [ "$HAS_SMP" -eq 1 ]; then
-        echo "Error: SMP mode is currently not supported with charmpy. Choose a non-smp version."
+        echo "Error: SMP mode is currently not supported with charm4py. Choose a non-smp version."
         exit 1
     fi
 
     if [ `echo "$BASEVERSION" | grep -c "multicore"` -gt 0 ]; then
-        echo "Error: multicore is currently not supported with charmpy. Choose a non-smp version."
+        echo "Error: multicore is currently not supported with charm4py. Choose a non-smp version."
         exit 1
     fi
 
index 5b9ebca93af53af92d3c4a98cf44a8e3882ed191..b00d4c82cfacf847e85d68833d92df4c1621b34c 100644 (file)
@@ -367,7 +367,7 @@ class IrrGroup : public Chare {
 extern void (*GroupMsgRecvExtCallback)(int, int, int, char *, int);        // callback to forward received msg to external Group chare
 extern void (*ChareMsgRecvExtCallback)(int, void*, int, int, char *, int); // callback to forward received msg to external Chare
 
-/// Supports readonlies outside of the C/C++ runtime. See README.charmpy
+/// Supports readonlies outside of the C/C++ runtime. See README.charm4py
 class ReadOnlyExt {
 public:
   static void *ro_data; // on PE 0, points to the readonly data that is broadcast to every PE
@@ -378,7 +378,7 @@ public:
 };
 
 /// Lightweight object to support mainchares defined outside of the C/C++ runtime.
-/// Relays messages to appropiate external chare. See README.charmpy
+/// Relays messages to appropiate external chare. See README.charm4py
 class MainchareExt: public Chare {
 public:
   MainchareExt(CkArgMsg *m);
@@ -1131,7 +1131,7 @@ typedef CProxySection_Group CProxySection_IrrGroup;
 #include "ckreduction.h"
 
 /// Lightweight object to support chares defined outside of the C/C++ runtime
-/// Relays messages to appropiate external chare. See README.charmpy
+/// Relays messages to appropiate external chare. See README.charm4py
 class GroupExt: public Group {
 public:
   GroupExt(void *impl_msg);
index 8a89dea8918ee4dd6316b962bb5d650c03f49734..b2c11f3f974be5020f6b8fc3908c9492b24487ec 100644 (file)
@@ -112,7 +112,7 @@ extern void* CkPriorityPtr(void *msg);
 
 /******************************************************************************
  *
- * Functions be to called from external clients (e.g. CharmPy)
+ * Functions be to called from external clients (e.g. Charm4py)
  *
  *****************************************************************************/
 
index 36943e16cc56dfbe7923231a2917b526b9e53ec1..b9633ea2dd285f2c089afe4da72849d3b42e1c6f 100644 (file)
@@ -2186,14 +2186,14 @@ void CthEnqueueBigSimThread(CthThreadToken* token, int s,
                                    int pb,unsigned int *prio);
 #endif
 
-//------------------- External client support (e.g. CharmPy) ----------------
+//------------------- External client support (e.g. Charm4py) ----------------
 
 static std::vector< std::vector<char> > ext_args;
 static std::vector<char*> ext_argv;
 
 // This is just a wrapper for ConverseInit that copies command-line args into a private
 // buffer.
-// To be called from external clients like charmpy. This wrapper avoids issues with
+// To be called from external clients like charm4py. This wrapper avoids issues with
 // ctypes and cffi.
 extern "C" void StartCharmExt(int argc, char **argv) {
 #if !defined(_WIN32) && !NODE_0_IS_CONVHOST
index f1b732f1ede536b54bea6f5b5f466906f9fa8c0b..61fcf83528c8cbd0f9d9f6f7ceab30c9a2d96d62 100644 (file)
@@ -220,10 +220,10 @@ CkCallback::CkCallback(ArrayElement *p, int ep,bool doInline) {
 
 #if CMK_CHARMPY
 
-// currently this is only used with Charmpy, so we are only enabling it for that case
-// to guarantee best performance for non-charmpy applications
+// currently this is only used with Charm4py, so we are only enabling it for that case
+// to guarantee best performance for non-charm4py applications
 
-// function pointer to interact with Charmpy to generate callback msg
+// function pointer to interact with Charm4py to generate callback msg
 extern void (*CreateReductionTargetMsgExt)(void*, int, int, int, char**, int*);
 
 static void CkCallbackSendExt(const CkCallback &cb, void *msg)
index fa4d8bdf06822c1cb310480a2b05b1a2ecf01aee..80405c43aab0193f307abe9212ef7e64282ee4e5 100644 (file)
@@ -139,7 +139,7 @@ public:
        callbackType type;
        callbackData d;
 #if CMK_CHARMPY
-       // NOTE with charmpy, CkCallback objects are not pup'ed, so this field doesn't
+       // NOTE with charm4py, CkCallback objects are not pup'ed, so this field doesn't
        // need to be added to pup routine. But this could change in the future if the field
        // is used in other contexts
        bool isCkExtReductionCb = false;
index 96d32976500fd599e06b8f427a9b2a3fb4112a48..3a8f1e6e187f0102eb53686d2b4d41dff5e6b1f1 100644 (file)
@@ -1779,7 +1779,7 @@ static CkReductionMsg *external_py(int nMsgs, CkReductionMsg **msg)
         //CkPrintf("[msg %d] size: %d data: %s\n", i, msg_sizes[i], msg_data[i]);
     }
 
-    // send msg_data to CharmPy to perform reduction with Python reducer
+    // send msg_data to Charm4py to perform reduction with Python reducer
     // expected : pickle([reducer.__name__, result])
     char* reduction_result;
     int reduction_result_size = PyReductionExt(msg_data.data(), msg_sizes.data(), nMsgs, &reduction_result);
@@ -1949,7 +1949,7 @@ typedef enum : uint8_t {
     nodegroup
 } extContributorType;
 
-// Structure to store contribute parameters from external clients (e.g. CharmPy)
+// Structure to store contribute parameters from external clients (e.g. Charm4py)
 struct CkExtContributeInfo
 {
     int cbEpIdx;
@@ -1985,7 +1985,7 @@ Group* getExtContributor<Group>(CkExtContributeInfo* contribute_params)
     return (Group*)CkLocalBranch(gId);
 }
 
-// Functions to perform reduction over contributors from external clients (e.g. CharmPy)
+// Functions to perform reduction over contributors from external clients (e.g. Charm4py)
 
 // Generic function to extract CkExtContributeInfo and perform reduction
 template <class T>
@@ -2017,7 +2017,7 @@ void CkExtContributeTo(CkExtContributeInfo* contribute_params, CkCallback& cb)
         default : CkAbort("Invalid external contributor type!\n");
     }
 #else
-    CkAbort("Charmpy support must be enabled to use CkExtContributeTo");
+    CkAbort("charm4py support must be enabled to use CkExtContributeTo");
 #endif
 }
 
index 4bb2d65f00ca9d5b4223ca5585723dd7c98b563f..3c7ec9394cf32efdf04dd1811d56cf89deb580c5 100644 (file)
@@ -191,7 +191,7 @@ public:
         // Combine multiple data/reducer pairs into one reduction
         tuple,
 
-        // Perform reduction using external reducer defined in Python (for CharmPy)
+        // Perform reduction using external reducer defined in Python (for Charm4py)
         external_py
        } reducerType;
 
@@ -276,7 +276,7 @@ private:
 PUPbytes(CkReduction::reducerType)
 
 //CkReductionTypesExt struct to expose the reducerTypes for external
-//modules like CharmPy
+//modules like Charm4py
         /*  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
             !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 
index f0789a0bec1c3fb4d0815afa67856e9198059530..3c612f18a5b77c333cf6f2f24d21bd68b26c0635 100644 (file)
@@ -1343,7 +1343,7 @@ void _initCharm(int unused_argc, char **argv)
                   Load balancers are currently registered in Charm++ through a C file that is generated and
                   and compiled by charmc when making an executable. That file contains appropriate calls to
                   register whatever load balancers are being linked in.
-                  Without an executable (charmpy just uses libcharm.so), the load balancers in libcharm.so
+                  Without an executable (charm4py just uses libcharm.so), the load balancers in libcharm.so
                   have to somehow be registered during init.
                   With the planned load balancing framework, load balancer registration will hopefully go away,
                   at least for strategies used in central/hybrid, because they will stop being chares.
@@ -1359,7 +1359,7 @@ void _initCharm(int unused_argc, char **argv)
 #if !CMK_CHARMPY
                CkRegisterMainModule();
 #else
-                // CkRegisterMainModule doesn't exist in charmpy because there is no executable.
+                // CkRegisterMainModule doesn't exist in charm4py because there is no executable.
                 // Instead, we go to Python to register user chares from there
                if (CkRegisterMainModuleCallback)
                        CkRegisterMainModuleCallback();
index 77e24a6c4833308dc6966fef56c3d2459b89e19a..7d81bb851acd1d80b5a86e82fc7b3ca1c29bfea7 100644 (file)
@@ -46,7 +46,7 @@ static
 int CkRegisterEpInternal(const char *name, CkCallFnPtr call, int msgIdx, int chareIdx,
        int ck_ep_flags, bool isTemplated)
 {
-#if !CMK_CHARMPY    // charmpy can support dynamic registration of Chares after program start
+#if !CMK_CHARMPY    // charm4py can support dynamic registration of Chares after program start
   if (__registerDone) {
     CkPrintf("Charm++: late entry method registration happened after init\nEntry point: %s, addr: %p\n", name, call);
     CkAbort("Did you forget to instantiate a templated entry method in a .ci file?\n");
index a80a2b6c69ae8ac0d755972fa7c654d9b06d72ed..365630604c867f5ebc483b0ea940c201eb193925 100644 (file)
@@ -80,6 +80,8 @@ libcharm: charm++
 
 charmpy: libcharm
 
+charm4py: libcharm
+
 LIBCHARM_LIBS= libck.a libconv-core.a libconv-util.a libmemory-default.a libconv-machine.a \
                libthreads-default.a libconv-partition.a libtmgr.a libhwloc_embedded.a \
                libldb-rand.a libconv-ldb.a libmoduleGreedyRefineLB.a
index 6c598e7e73f631ab3fc435533277482c4c0a59fd..96fc3221fde661e6c106a1cc39eb5eba3d81e245 100644 (file)
@@ -345,16 +345,16 @@ fi
 
 AC_ARG_ENABLE([charmpy],
             [AS_HELP_STRING([--enable-charmpy],
-              [enable CharmPy support])],
+              [enable charm4py support])],
             [enable_charmpy=$enableval],
             [enable_charmpy=no])
 
 if test "$enable_charmpy" = "yes"
 then
-  Echo "CharmPy support is enabled"
+  Echo "charm4py support is enabled"
   AC_DEFINE_UNQUOTED(CMK_CHARMPY, 1, [enable charmpy])
 else
-  Echo "CharmPy support is disabled"
+  Echo "charm4py support is disabled"
   AC_DEFINE_UNQUOTED(CMK_CHARMPY, 0, [disable charmpy])
 fi
 
@@ -782,7 +782,7 @@ then
     OPTS_CXX="$OPTS_CXX -fno-lifetime-dse"
 fi
 
-# Determine compiler/linker flags to build libcharm.so for charmpy
+# Determine compiler/linker flags to build libcharm.so for charm4py
 if test "$enable_charmpy" = "yes"
 then
 
@@ -812,7 +812,7 @@ EOT
 
   if test -z $got_opt_whole_archive
   then
-    echo "Don't know how to build libcharm.so for Charmpy"
+    echo "Don't know how to build libcharm.so for Charm4py"
     test_finish 1
   fi
 fi
index d1acbfe44a3a9cee8f9e1f5939b795b4669b96e2..84f75b56e40e40099e13db94b8f33b4c5021c2d1 100644 (file)
@@ -56,7 +56,7 @@ void CmiTLSInit(void)
 
 #if !CMK_HAS_DL_ITERATE_PHDR
     /* Use dynamic linking in case Charm++ shared objects are used by a binary lacking
-     * conv-static.o, such as in the case of CharmPy. */
+     * conv-static.o, such as in the case of Charm4py. */
     void** pCmiExecutableStart = (void**)dlsym(RTLD_DEFAULT, "CmiExecutableStart");
     if (pCmiExecutableStart != NULL)
       CmiTLSExecutableStart = *pCmiExecutableStart;