Details
-
Sub-task
-
Status: Closed
-
Major
-
Resolution: Fixed
-
None
-
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
- is depended upon by
-
SYSTEMDS-1313 Parfor broadcast exploitation
- In Progress
- is related to
-
SYSTEMDS-2251 Improve parfor optimizer set degree of parallelism
- Closed
- relates to
-
SYSTEMDS-1879 Parfor remote spark w/ reuse of shared inputs
- Closed