Phylanx Report: May 2018

The Ninth month of work focused on work in the following areas:

  • Implementing Solvers
  • Work on HPXMP for OpenBLAS parallelization support
  • Bug fixes in APEX
  • Visualization
  • HPX-Python interactions

Organizational Activities and Results

Development Activities and Results

  • Algorithms Highlighted: Logistic Regression, ALS, K-Means
  • APEX:
    • APEX refactored to resolve open issues related to dependency tracking.  Improvements include leveraging C++ smart pointers to prevent memory leaks or accessing previously freed memory ranges.
    • Addressed issues related to APEX/HPX integration shutdown. All HPX tasks/threads are now captured, even after shutdown.
    • Parcel coalescing tests ported to NERSC Cori (Cray XC40, Haswell partition) in order to capture larger scale experiments.
    • Phylanx Buildbot server updated to 1.1.0 with support for IRC notification and build status badges for reporting on GitHub (see  Resolved link errors related to x86_64 linking with full configuration (including APEX).  Working to resolve Intel Xeon MIC (KNL) vectorization build errors with the Blaze developers.
    • Submitted a poster to ICCP on runtime adaptivity
  • Tiling:
    • Built an experimental function to annotate a simple Python AST with cost function and tiling choices
  • Traveler:
    • Added support for switching between inclusive and exclusive time in the execution tree visualization. The visualization computes these times based on the instrumentation data. See ALS example below, the toggle is the white/grey box.

Figure 1: ALS Execution Tree. Pink areas show where exclusive time is reporting a negative time. Working with the LSU team to rectify this issue.

    • The timeline visualization can now show the chain of backwards dependencies starting from a single task. Zooming and labeling features have been improved.

Figure 2: Sibling tasks marked in shades of green with parent-child relationships shown. Temporary design to show calculation of siblings from trace data.

    • In Progress
      • Execution tree: improving design for larger trees such as ALS
      • Timeline: design for showing sibling tasks
  • Primitives & Algorithms:
    • LRA and ALS have Phylanx primitive implementations
    • Implemented a linear solver primitive
    • Map primitive now supports iterating over arrays (#476)
    • Added Len primitive: Returns the length of a string or the number of elements in a list (#470)
    • HPXMP, needed to support parallelization in OpenBLAS, now compiling and running in an HPX application
    • Early implementation of read an write parallel IO
  • Python:
    • Functionalities
      • Add support for named constants.
      • Add support to lambda functions.
      • Improve the Phylanx decorator syntax.
      • Enable use of lists as iteration spaces.
      • Enable dynamic initialization of HPX from Phylanx frontend.
      • Support Python indexing for assignment to matrices.
    • Bug Fixes
      • More robust check for mapping NumPy methods to Phylanx primitives.
      • Now Phylanx correctly keeps track of compiler’s state- even if some methods were not compiled through the Phylanx decorator.

Repository Activity May 1st – May 31th:

Code statistics
Language                     files          blank        comment           code
C++                            263          11035           3734          53995
C/C++ Header                   176           3291           2405          13713
CMake                           84            751            624           3066
Python                          52            955            720           2868
YAML                             2             20             62            309
Dockerfile                       2              4             27             40
Markdown                         1             13              0             37
INI                              1              0              0              8
SUM:                           581          16069           7572          74036

Impact on Other Projects

  • Blaze Tickets:
    • Issue: Error building on Intel KNL (#167)
  • HPX Pull Requests:
    • Safeguard HPX against destruction in global contexts (#3343)
    • Making sure early logging settings don’t get mixed with others (#3334)
    • Make sure logging is up and running while modules are being discovered. (#3326)
    • Fix a missing apex thread data (wrapper) initialization (#3323)
    • Don’t overwrite user settings with defaults in registration database (#3310)
    • Add proper exception handling to run_as_hpx_thread (#3305)
Bookmark the permalink.

Leave a Reply

Your email address will not be published.