Uploaded image for project: 'SystemDS'
  1. SystemDS
  2. SYSTEMDS-1321 Compiler feature extensions
  3. SYSTEMDS-1349

Parfor optimizer support for shared reads (lower memory req)

    XMLWordPrintableJSON

Details

    • Sub-task
    • Status: Closed
    • Major
    • Resolution: Fixed
    • None
    • SystemML 1.2
    • Compiler
    • None

    Description

      Let's assume the following example script and focus on local parfor with a memory budget of 10GB and k=16 threads (but this issue similarly applies to parfor spark).

      X = rand(rows=1000000, cols=1000); #8GB
      parfor(i in 1:ncol(X)) 
          print(sum(X[,i]));
      

      The memory estimate of the right indexing operation is 8GB and the parfor optimizer tries to set k=min(floor(10GB/8GB), 16) and hence falls back to a single-threaded plan with k=1. However, this is completely unnecessary because X is a shared-read (i.e., variable that is never updated in the parfor body). Accordingly, we should determine the degree of parallelism as k=min(floor((10GB-8GB)/8MB), 16).

      The challenge is to do this for arbitrary control flow and multiple shared reads of different dimension and sparsity.

      Attachments

        Issue Links

          Activity

            People

              mboehm7 Matthias Boehm
              mboehm7 Matthias Boehm
              Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: