Phylanx Report: June 2020

The 34th month of work focused on work in the following areas:

  • Fixing build system and contiguous integration issues
    • Implement changes needed to adapt to HPX modularization
  • Jetlag:
    • Got one of Chris’s codes to run through Phylanx
    • Continued to update/improve/debug the JetLag system.
    • Made a new movie of the JetLag demo
    • Contributed the modulus operator
    • improved hpxrun.py to take a node list
    • Jetlag talk for the symposium
    • Registered for the PEARC jetlag talk
  • Traveller:
    • Re-integration of tooltip, selection, and highlighting in faster Gantt view.
    • UI improvements, including collapsible file menu to preserve screen space
    • Ordering of threads now numeric in Gantt view
    • Fixes for Jetlag integration
    • Refactoring of tooltip support in progress.
  • APEX:
    • APEX/HPX integration bugs fixed:
      • Fixed unit conversion when writing out TAU profiles
    • Added POWER9 buildbot configuration for continuous integration testing
    • Investigated, reported and resolved build / test failures from buildbot and nightly regression tests.
    • Updated buildbot continuous integration server and links from GitHub.
    • Added “untimed timers” option to support high-level timers that start and stop on different operating system threads
    • Added capture of /proc/self/status “Threads” value to observe the total number of OS threads spawned by an application
    • Added capture of OS context switches (both voluntary and nonvoluntary)
  • PyFleaux:
    • Create jupyter notebook as a getting started guide
    • Explore ways to extend Numpy to better support the Phylanx front end
  • Phylanx:
    • Implemented distributed primitives: conv1d_d, argmin_d, argmax_d
    • Implemented local primitives: mod
    • Adding 3D support for retiling, random_d, and constant_d primitives
    • Working on distributed statistics primitives
    • Improve PhySL compiler error messages
  • Tiling
    • Revised mincut paper to include regret analysis. Currently submitted to WAOA.
    • Working on setting up performance testing for existing distributed primitives.

Organizational Activities and Result

Weekly group-meeting, minutes:

Phylanx Report: May 2020

The 33rd month of work focused on work in the following areas:

  • Fixing build system and contiguous integration issues
  • Jetlag:
    • JetLag video has been recreated after many technical hurdles
      • Traveler bug
      • Machine outages
      • Bugs in Phylanx
      • Some issues remain. The system is not 100% reliable.
    • Added capabilities to Phylanx:
      • doc_str to run physl code directly in Python
    • PEARC20 paper camera ready copy submitted
  • Traveller:
    • Rendering performance improvements to Traveler-Integrated now merged to master.
    • Backend improvements for Jetlag support in-progress.
    • Documentation improvements.
  • APEX:
    • APEX/HPX integration bugs fixed:
    • Fixed Windows support (PR #122)
    • Fixed annotation for internal APEX processing
    • Investigated, reported and resolved build / test failures from buildbot and nightly regression tests.
    • Updated buildbot continuous integration server and links from GitHub.
    • Updated the task graph output from APEX with additional annotations on nodes
    • Helped diagnose and test HPX MPI distributed executions
    • Helped diagnose and fix annotations within HPX.
    • Helped diagnose Phylanx test failures for Release builds
  • PyFleaux:
    • pytiramisu was integrated in phyfleaux.
    • Essential Tiramisu functionality exposed in Python
    • pytiramisu is the polyhedral backend of phyfleaux
  • Phylanx:
    • Added inverse_d(), slice_d(), expand_dim_d(), diag_d(), shape_d() primitives
    • Fixing annotate_d(),
    • Adding 3D kmeans algorithm
    • Updating to changes in HPX (build system and #include changes)

Organizational Activities and Results

  • Weekly group-meeting, minutes:
    • May 6th, May 13th, May 20th, April 27th: https://drive.google.com/drive/folders/0B-L3qi_kGiCLN0NRaHZDU3d4Q1k

Repository Activity May 1st – May 31st:

Impact on Other Projects

  • HPX Pull Requests:
    • Adding scatter_to/scatter_from collective operations (#4676)
    • Adding C++20 latch API (#4635)
    • Making sure APEX is linked into every application, if needed (#4653)
    • Update get_function_annotation (#4651)
    • Adding C++20 counting semaphore API (#4634)
    • Adding C++20 barrier (#4636)
    • Making sure the thread-local lock registration data is moving to the core the suspended HPX thread is resumed on (#4610)

Phylanx Report: April 2020

The 32nd  month of work focused on work in the following areas:

  • Fixing build system and contiguous integration issues
  • Jetlag:
    • PEARC20 paper was accepted
    • Get Jetlag working (Traveler cannot parse data files), also, fixing Rostam issues
    • Get distributed examples working (Lack of support so far, but some experiments have been performed and some bug reports files),
    • Raspberry PI for Presync conference (still being attempted).
  • Traveller:
    • New Canvas-based rendering for Gantt charts and Performance Counters (currently in branch)
    • UI fixes/improvements for Traveler-Integrated (master branch)
  • APEX:
    • Updated APEX to launch processing on local locality only
    • Updated APEX to use integrated concurrent queue object from HPX when available
    • Updated build on POWER9
    • Collected 160-thread trace of lra_csv with additional PAPI counters for Traveler scaling tests
    • Maintained nightly CI tests and performance regression tests
  • PyFleaux:
    • pytiramisu was integrated in phyfleaux.
    • Essential Tiramisu functionality exposed in Python
    • pytiramisu is the polyhedral backend of phyfleaux
  • Phylanx:
    • Added retile(), identity_d(), random_d() primitives
    • Added more tests for cannon product primitive

Organizational Activities and Results

  • Weekly group-meeting, minutes:
    • April 1st, April 8th, April 15th, April 22nd, April 29th: https://drive.google.com/drive/folders/0B-L3qi_kGiCLN0NRaHZDU3d4Q1k

Repository Activity April 1st – April 30th:

Impact on Other Projects

  • Blaze:
    • Issue: remove ref-qualifiers from CustomMatrix::operator=() and Customvector::operator=()
  • HPX Pull Requests:
    • Adding test macros supporting custom output stream (#4561)
    • Improve spinlock implementation to perform better in high-contention situations (#4557)
    • Fix a runtime_ptr problem at shutdown when apex is enabled (#4553)
    • Attempt to fix APEX linking in external packages again (#4510)
    • Properly dispatch exceptions thrown from hpx_main to be rethrown from hpx::init/hpx::stop (#4487)
    • Fixing an initialization order problem (#4486)

Phylanx Report: March 2020

The thirty-first month of work focused on work in the following areas:

  • Fixing build system and contiguous integration issues
  • Phylanx code base
    • Merged distributed random and constant primitives
    • Working on distributed identity and retiling primitives
  • Tiling:
    • Focused on completing the polyhedral pipeline including a new algorithm for detecting affine loop nests
    • New data and task data-structures are added to facilitate code generation and improve Phylanx support
    • Initial tiling solver algorithm will be done soon.
    • Started working on implementing parts of it.
  • Fixed APEX various bugs related to profile output
    • Fixed performance issue related to lock contention in APEX
    • Reported, resolved Phylanx nightly build errors
    • Investigating distributed trace output bugs
  • Traveler tools:
    • Updates to Traveler-Integrated to keep consistent with Jetlag pipeline
    • Front-end changes to increase rendering speed for both time series and interval data coming from traces.
    • Bug fixes in linked panning and zooming in Traveler-Integrated

Organizational Activities and Results

  • Weekly group-meeting, minutes:
    • March 4th, March 11st, March 18th, March 25th: https://drive.google.com/drive/folders/0B-L3qi_kGiCLN0NRaHZDU3d4Q1k

Repository Activity March 1st – March 31st:

Impact on Other Projects

  • HPX Pull Requests:
    • Pull request: Change C++ standard handling (#4378)
    • Pull request: Adding serialization support for std::variant (if available) and std::tuple (#4417)
    • Pull request: Fix APEX linking in dependent projects (#4451)
    • Pull request: Fixing build system to actually build variant test (#4449)

Phylanx Report: February 2020

The 30th month of work focused on work in the following areas:

  • Fixing build system and contiguous integration issues
  • Distributed calculations are beginning to be looked at. Some issues with distributed performance counters, both in Phylanx and Octotiger have been identified and fixed. Strategies for enabling users to run distributed code through Phylanx have been considered.
  • JetLag
    • A paper about Jetlag (incorporating Apex, Traveler, etc.) was submitted to the PEARC20 conference.
    • Working with the creator of Agave to make a standalone Agave that we can run inside a firewall with minimal effort
  • APEX:
    • APEX updates to CSV output, fixing timer reset behavior for use in Jupyter notebooks, cleaning up API inconsistencies, bug fixes
    • Buildbot updates resulting in stable Phylanx build and tests
    • Nightly regression tests fixed, performance investigations starting
  • Traveler tools: Traveler has continued to improve visualization:
    • PAPI counters as obtained through OTF2/Apex.
    • Making viz faster by moving some code to C
    • Start adding locality info
  • Working on Tiramisu project, parsing and optimizing source trees.
  • Tiling:
    • Theory:
      • worked on the k-server problem.
      • worked on the short labeling problem.
      • Investigated the use of a dynamic solver for the integer program / CSP arising in our tiling model.
  • Implementation:
    • worked on the associated data structure needed to implement the tiling solver.
    • worked on distributed matrix inversion.
    • Worked on distributed Tiling primitive and automated annotations.
    • Learned DFS (depth-first-search) in undirected graph and implemented DFS using an iterative way rather than a recursive way (considering python’s limited recursion)
    • Implemented the cycle equivalence algorithm to find control regions in linear time with the help of NetworkX library.
    • Learned the algorithm in the “Scop detection: a fast algorithm for industrial compilers” paper.
    • Learned the basic background about dominator tree, natural loop, and control flow.
    • Learned the source code in the Graphite implementation since the algorithm in the “Scop detection: a fast algorithm for industrial compilers” paper is improved based on it and without giving explicit explanation.

Organizational Activities and Results

  • Weekly group-meeting, minutes:

February 5th, February 12th, February 19th, February 26th: https://drive.google.com/drive/folders/0B-L3qi_kGiCLN0NRaHZDU3d4Q1k

Repository Activity February 1st – February 29th:

Impact on Other Projects

  • Vcpkg:
    • Pull request: Updating HPX to V1.4.1 (#10214)
  • HPX Pull Requests:
    • Pull request: Fixing use of allocator for C++20 (#4391)
    • Pull request: Add warning messages for using thread binding options on macOS (#4386)
    • Pull request: Adding overload for `hpx::init`/`hpx::start` for use with resource partitioner (#4374)

Phylanx Report: January 2020

The twenty-nineth month of work focused on work in the following areas:

  • Fixing build system and contiguous integration issues
  • Improving JetLag code and working on Pearc20 paper
    • stop job feature, the ability to grant/revoke permissions for users to run a JetLag app (Running Phylanx is a JetLag app) and bug fixes
  • Fixed APEX various bugs related to profile output
    • Fixed performance issue related to lock contention in APEX
    • Reported, resolved Phylanx nightly build errors
    • Developed POWER9 build tests to be deployed in Feb 2020
    • Investigating distributed trace output bugs
  • Traveler tools:
    • Alterations to Traveler-Integrated backend for Jetlag pipeline
    • Context menu support in Traveler-Integrated as guided by UI prototypes
    • Support for /proc/meminfo and related timelines from APEX data collection
  • Working on Scop detection and openScop specification and implementation of the algorithm from the program structure tree paper

Organizational Activities and Results

  • Weekly group-meeting, minutes:
    • January 8th, January 21st, Januar 28th: https://drive.google.com/drive/folders/0B-L3qi_kGiCLN0NRaHZDU3d4Q1k

Repository Activity January 1st – January 31st:

Development Activities and Results

  • Algorithms Highlighted: Logistic Regression, ALS, K-Means
  • General
  • APEX
  • Traveler
  • Tiling
  • Primitives & Algorithms
  • Python

Repository Activity December 1st – December 31st:

Impact on Other Projects

  • Vcpkg:
    • Pull request: Updating HPX to V1.4 (#9773)
  • Blaze Tickets:
    • Issue: Random number distributions (#158)
    • Issue: Name conflict with preprocessor macro (#315)
  • HighFive ticket:
    • Pull Request: Rework dependencies to be dynamic, i.e. can be overridden when using from install (+ fix when they’s targets) (#205)
  • HPX Pull Requests:
    • Pull request: Fix launch process test with APEX enabled (#4341)
    • Pull request: Undefine VT1 and VT2 after boost includes (#4322)
    • Pull request: Checks for MPI_Init being called twice (#4300)
    • Pull request: Fixing collectives locking problem (#4296)
    • Pull request: Fixing problem if 128 bit atomics are not available (#4289)
  • Blaze Tensor:
    • Pull request: Adapting to AlignmentFlag changes in blaze (#57)

 

Phylanx Report: December 2019

The twenty-eighth month of work focused on work in the following areas:

  • Performance analysis

Organizational Activities and Results

  • Weekly group-meeting, minutes:
    • December 18th: https://drive.google.com/drive/folders/0B-L3qi_kGiCLN0NRaHZDU3d4Q1k

Development Activities and Results

  • Algorithms Highlighted: Logistic Regression, ALS, K-Means
  • APEX:
    • Refactored APEX/HPX integration to eliminate circular dependency.
    • Fixed function annotation to create valid OTF2 traces
    • Fixed HPX and Phylanx build issues for buildbot testing
    • Fixed Phylanx failed tests in debug builds
    • Several APEX code and config fixes due to HPX structural changes
    • APEX 2.1.7 released to sync with HPX 1.4.0 release.
  • Tiling:
    • Theory: worked on the online cut and advice complexity paper. We expect to arxiv it soon pending verification of some proofs.
    • Distributed Infrastructure and Tiling:
    • worked on distributed read and had issues with a bug for testing his Distributed matrix multiplication algorithms.

Impact on Other Projects

  • Blaze Tickets:
  • HighFive ticket:
    • Pull Request: fixing #106: fails to open existing file with Create flag (#107)
  • HPX Pull Requests:
    • Pull Request: Delete apex.hpp #4285
    • Pull Request: Make sure APEX is linked to even when not explicitly referenced #4275
    • Pull Request: Fixing HPX/APEX linking and dependencies for external projects like Phylanx #4261
    • Pull Request: Fix apex annotation for async dispatch, #4257
    • Pull Request: Ignoring lock in all_to_all and all_reduce, #4255
  • Blaze Tensor:
    • Pull Request: Adapting for recent changes in Blaze #56

Phylanx Report: September 2019

The twenty-fifth month of work focused on work in the following areas:

  • Cross platform support for Traveler-Integrated
  • 4D primitive support
  • Improved support for Docker containers

Organizational Activities and Results

Development Activities and Results

  • Traveler
    • Refactored Traveler-Integrated to work on MacOS and Ubuntu
      • Already worked on Windows
    • Updated Atria instances to support linked highlighting and Ctrl-F search for text within the visualization
      • Stand-alone & Traveler-Integrated
    • Improvements to Traveler-Integrated Gantt view in terms of highlighting primitives of the same type.
    • Traveler-Integrated backend changes to support dependency-analysis between tasks in trace files (e.g., Gantt views)
  • Tiling
    • Theory:
      • Derived an on online sub modular function maximization with respect to a greedy algorithm
      • Some observations were made on the online min cut on random graph
    • Implementation
      • Work on the distributed matrix matrix dot operation
      • Developing windows build scripts
      • Implementing an annotation comparison operator
  • Primitives & Algorithms
    • 4D support was added to the following:
      • squeeze operation (PR #1043)
      • conv2d operation (PR #1042)
      • logical operation (PR #1039)
      • transpose operation (PR #1030)
    • Bias_add operation was added (PR #1031)
    • Updated resize_images(PR #1034) and pool2d(PR #1033) to accept 4d arrays as input
  • Python
    • Wrote utility scripts to build, run and manage docker images based on both ‘docker-compose.yml’ and ‘Dockerfile’ files
      • This will allow users to:
        • build desired environment (development, performance analysis, or release) by passing a few parameters to the script
        • Dynamically build and deploy Phylanx environments.
    • Studying performance of the blaze library and approaches to improve it.
      • Focused on BBLAS (Batched BLAS) library as an alternative back-end to Blaze
        • This will help us:
          • Achieving better performance for applications dealing with many operations on small matrices (convolution, FEM, …)
          • Gain full control over blocking for any granularity

Repository Activity September 1st – September 30st:

Code statistics

-------------------------------------------------------------------------------
Language                     files          blank        comment           code
-------------------------------------------------------------------------------
C++                            475          18638           6140          94277
C/C++ Header                   311           6925           4324          33793
Python                         137           2577           1795           6796
CMake                          109            954            791           4018
YAML                             2             24             77            670
Markdown                         2             17              0             46
Dockerfile                       2              6             28             44
CSS                              1             14             10             38
HTML                             2              5              6             22
DOS Batch                        2              0              0             12
INI                              1              0              0              8
-------------------------------------------------------------------------------
SUM:                          1044          29160          13171         139724
-------------------------------------------------------------------------------

Impact on Other Projects

  • Vcpkg:
    • [hpx] Redirect –head to `stable` (PR #8259)
  • HPX Pull Requests:
    • Moving more facilities to the collectives module (PR #4069)
    • Adding option allowing to force using Boost.FileSystem (PR #4081)
    • Making sure C++ standard is properly detected and propagated (PR #4108)
    • Fixing performance regression introduced earlier (PR #4111)
  • Blaze Tensor
    • Adding missing QuatSliceTrait to ArrayTransExpr (PR #45)
    • Fixing reduction of arrays (PR #46)
    • More fixes for 4D reductions (PR #47)
    • More work on turning QuatTrans into a view (PR #49)
    • Picking up C++ standard from HPX if HPX backend is used (PR #50)
    • Some more work on turning QuatTrans into a view (PR #51)
  • Blaze Iterative
    • Add test files for all algorithm except unmerged Preconditioned BiCGSTAB(l) (PR #9)
    • Add circle-ci config (PR #10)
    • Add tests (PR #11)
    • Add circl-ci banner (PR #12)
    • Test files (PR #13)
    • Remove un-tested PreconditionedBiCGSTABL and BiCGSTABL algorithms (PR #14)
    • Remove non-symmetric preconditioners (PR #15)