Skip to content

tee rewrite rule position in programrewrite #352

@j143

Description

@j143

Overall expectation

(START)
   |
   v
[Read X (from Disk)] --> [Read y (from Disk)]
   |                          |
   v                          v
[OOC rblk (Start Streaming X)] [CP rblk (Load y to Memory)]
   |
   +-----------------------+
   |                       |
   v                       v
[OOC tee (Split Stream)]   |
   |                       |
   +--> [Stream 1]          +--> [Stream 2]
   |                       |
   v                       v
[OOC tsmm]              [OOC r' (Transpose)]
   |                       |
   v                       v
[XtX (Small, in Memory)]  [t(X) Stream] ----+
   |                                        |
   |                                        v
   +----------------------------------> [CP ba+* (Multiply)]
                                          |
                                          v
                                        [Xty (Small, in Memory)]
                                          |
                                          |
   +------------------------------------->+
   |
   v
[CP solve]
   |
   v
[Write R (to Disk)]
   |
   v
(END)

option 1: Rewrite rule order

if( staticRewrites )
		{
			//add static HOP DAG rewrite rules
			_dagRuleSet.add(     new RewriteRemoveReadAfterWrite()               ); //dependency: before blocksize
			_dagRuleSet.add(     new RewriteBlockSizeAndReblock()                );
			_dagRuleSet.add(     new RewriteInjectOOCTee()                       );
			if( OptimizerUtils.ALLOW_ALGEBRAIC_SIMPLIFICATION )
				_dagRuleSet.add( new RewriteRemoveUnnecessaryCasts()             );

plan

PROGRAM ( size CP/MR = 26/0 )
--MAIN PROGRAM
----GENERIC (lines 22-28) [recompile=false]
------CP createvar pREADX target/testTemp/functions/ooc/lmDSTest/in/X false MATRIX binary 2000 2000 1000 2800370 copy
------CP createvar pREADy target/testTemp/functions/ooc/lmDSTest/in/v false MATRIX binary 2000 1 1000 2000 copy
------CP createvar _mVar0 target\testTemp\functions\ooc\lmDSTest\lmDS/target/scratch_space//_p30140_10.89.140.127//_t0/temp0 true MATRIX binary 2000 2000 1000 2800370 copy
------OOC rblk pREADX.MATRIX.FP64 _mVar0.MATRIX.FP64 1000 true
------CP createvar _mVar1 target\testTemp\functions\ooc\lmDSTest\lmDS/target/scratch_space//_p30140_10.89.140.127//_t0/temp1 true MATRIX binary 2000 2000 1000 2800370 copy
------OOC tee _mVar0.MATRIX.FP64 tee_out_X_0.MATRIX.FP64 tee_out_X_1.MATRIX.FP64
------CP rmvar _mVar0
------CP createvar _mVar2 target\testTemp\functions\ooc\lmDSTest\lmDS/target/scratch_space//_p30140_10.89.140.127//_t0/temp2 true MATRIX binary 2000 2000 1000 2800370 copy
------OOC r' tee_out_X_0.MATRIX.FP64 _mVar2.MATRIX.FP64
------CP rmvar tee_out_X_0
------CP createvar _mVar3 target\testTemp\functions\ooc\lmDSTest\lmDS/target/scratch_space//_p30140_10.89.140.127//_t0/temp3 true MATRIX binary 2000 2000 1000 -1 copy
------OOC ba+* _mVar2.MATRIX.FP64 tee_out_X_1.MATRIX.FP64 _mVar3.MATRIX.FP64 8
------CP rmvar _mVar2 tee_out_X_1
------CP createvar _mVar4 target\testTemp\functions\ooc\lmDSTest\lmDS/target/scratch_space//_p30140_10.89.140.127//_t0/temp4 true MATRIX binary 2000 1 1000 2000 copy
------OOC rblk pREADy.MATRIX.FP64 _mVar4.MATRIX.FP64 1000 true
------CP createvar _mVar5 target\testTemp\functions\ooc\lmDSTest\lmDS/target/scratch_space//_p30140_10.89.140.127//_t0/temp5 true MATRIX binary 1 2000 1000 2000 copy
------CP r' _mVar4.MATRIX.FP64 _mVar5.MATRIX.FP64 8
------CP rmvar _mVar4
------CP createvar _mVar6 target\testTemp\functions\ooc\lmDSTest\lmDS/target/scratch_space//_p30140_10.89.140.127//_t0/temp6 true MATRIX binary 1 2000 1000 -1 copy
------OOC ba+* _mVar5.MATRIX.FP64 tee_out_X_2.MATRIX.FP64 _mVar6.MATRIX.FP64 8
------CP rmvar _mVar5 tee_out_X_2
------CP createvar _mVar7 target\testTemp\functions\ooc\lmDSTest\lmDS/target/scratch_space//_p30140_10.89.140.127//_t0/temp7 true MATRIX binary 2000 1 1000 -1 copy
------CP r' _mVar6.MATRIX.FP64 _mVar7.MATRIX.FP64 8
------CP rmvar _mVar6
------CP createvar _mVar8 target\testTemp\functions\ooc\lmDSTest\lmDS/target/scratch_space//_p30140_10.89.140.127//_t0/temp8 true MATRIX binary 2000 1 1000 -1 copy
------CP solve _mVar3.MATRIX.FP64 _mVar7.MATRIX.FP64 _mVar8.MATRIX.FP64 8
------CP rmvar _mVar3 _mVar7
------CP write _mVar8.MATRIX.FP64 target/testTemp/functions/ooc/lmDSTest/out/res.SCALAR.STRING.true binary.SCALAR.STRING.true .SCALAR.STRING.true 1000
------CP rmvar _mVar8
------CP cpvar _mVar1 tee_out_X_0
------CP cpvar _mVar1 tee_out_X_1
------CP mvvar _mVar1 tee_out_X_2

option 2: Rewrite rule order

               if( OptimizerUtils.ALLOW_AUTO_VECTORIZATION )
				_dagRuleSet.add( new RewriteIndexingVectorization()              ); //dependency: cse, simplifications
			_dagRuleSet.add(     new RewriteInjectOOCTee()                       );
			_dagRuleSet.add( new RewriteInjectSparkPReadCheckpointing()          ); //dependency: reblock

plan

PROGRAM ( size CP/MR = 25/0 )
--MAIN PROGRAM
----GENERIC (lines 22-28) [recompile=false]
------CP createvar pREADX target/testTemp/functions/ooc/lmDSTest/in/X false MATRIX binary 2000 2000 1000 2800370 copy
------CP createvar pREADy target/testTemp/functions/ooc/lmDSTest/in/v false MATRIX binary 2000 1 1000 2000 copy
------CP createvar _mVar0 target\testTemp\functions\ooc\lmDSTest\lmDS/target/scratch_space//_p37620_10.89.140.127//_t0/temp0 true MATRIX binary 2000 2000 1000 2800370 copy
------OOC rblk pREADX.MATRIX.FP64 _mVar0.MATRIX.FP64 1000 true
------CP createvar _mVar1 target\testTemp\functions\ooc\lmDSTest\lmDS/target/scratch_space//_p37620_10.89.140.127//_t0/temp1 true MATRIX binary 2000 2000 1000 2800370 copy
------OOC tee _mVar0.MATRIX.FP64 tee_out_X_0.MATRIX.FP64 tee_out_X_1.MATRIX.FP64
------CP rmvar _mVar0
------CP createvar _mVar2 target\testTemp\functions\ooc\lmDSTest\lmDS/target/scratch_space//_p37620_10.89.140.127//_t0/temp2 true MATRIX binary 2000 2000 1000 2800370 copy
------OOC r' tee_out_X_0.MATRIX.FP64 _mVar2.MATRIX.FP64
------CP createvar _mVar3 target\testTemp\functions\ooc\lmDSTest\lmDS/target/scratch_space//_p37620_10.89.140.127//_t0/temp3 true MATRIX binary 2000 2000 1000 -1 copy
------OOC ba+* _mVar2.MATRIX.FP64 tee_out_X_1.MATRIX.FP64 _mVar3.MATRIX.FP64 8
------CP rmvar _mVar2 tee_out_X_1
------CP createvar _mVar4 target\testTemp\functions\ooc\lmDSTest\lmDS/target/scratch_space//_p37620_10.89.140.127//_t0/temp4 true MATRIX binary 2000 1 1000 2000 copy
------OOC rblk pREADy.MATRIX.FP64 _mVar4.MATRIX.FP64 1000 true
------CP createvar _mVar5 target\testTemp\functions\ooc\lmDSTest\lmDS/target/scratch_space//_p37620_10.89.140.127//_t0/temp5 true MATRIX binary 1 2000 1000 2000 copy
------CP r' _mVar4.MATRIX.FP64 _mVar5.MATRIX.FP64 8
------CP rmvar _mVar4
------CP createvar _mVar6 target\testTemp\functions\ooc\lmDSTest\lmDS/target/scratch_space//_p37620_10.89.140.127//_t0/temp6 true MATRIX binary 1 2000 1000 -1 copy
------OOC ba+* _mVar5.MATRIX.FP64 tee_out_X_0.MATRIX.FP64 _mVar6.MATRIX.FP64 8
------CP rmvar _mVar5 tee_out_X_0
------CP createvar _mVar7 target\testTemp\functions\ooc\lmDSTest\lmDS/target/scratch_space//_p37620_10.89.140.127//_t0/temp7 true MATRIX binary 2000 1 1000 -1 copy
------CP r' _mVar6.MATRIX.FP64 _mVar7.MATRIX.FP64 8
------CP rmvar _mVar6
------CP createvar _mVar8 target\testTemp\functions\ooc\lmDSTest\lmDS/target/scratch_space//_p37620_10.89.140.127//_t0/temp8 true MATRIX binary 2000 1 1000 -1 copy
------CP solve _mVar3.MATRIX.FP64 _mVar7.MATRIX.FP64 _mVar8.MATRIX.FP64 8
------CP rmvar _mVar3 _mVar7
------CP write _mVar8.MATRIX.FP64 target/testTemp/functions/ooc/lmDSTest/out/res.SCALAR.STRING.true binary.SCALAR.STRING.true .SCALAR.STRING.true 1000
------CP rmvar _mVar8
------CP cpvar _mVar1 tee_out_X_0
------CP cpvar _mVar1 tee_out_X_1
------CP rmvar _mVar1

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions