Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Fixed
-
None
-
None
-
None
Description
The runtime is robust enough to allow partial variable assignments of functions with multiple outputs. For example, scale returns to output but allows
X = scale(X=X, center=TRUE, scale=TRUE)
However, the following IPA trace shows that despite all conditions being met for inlining, the inlining process exists due to mismatching number of outputs:
[DEBUG] IPA: Initial FunctionCallGraph: --MAIN PROGRAM ----.builtinNS::m_scale ----.builtinNS::m_lm ------.builtinNS::m_lmCG ------.builtinNS::m_lmDS [DEBUG] IPA: start IPA iteration 1/5. [DEBUG] IPA: Initial FunctionCallSummary: Valid functions for propagation: --.builtinNS::m_lmCG: 1 --.builtinNS::m_scale: 1 --.builtinNS::m_lm: 1 --.builtinNS::m_lmDS: 1 Valid scalars for propagation: --.builtinNS::m_lmCG: --.builtinNS::m_scale: 1:true 2:true --.builtinNS::m_lm: 2:true 3:0 4:1.0E-7 5:1.0E-7 6:0 --.builtinNS::m_lmDS: Valid #non-zeros for propagation: --.builtinNS::m_lmCG: --.builtinNS::m_scale: --.builtinNS::m_lm: --.builtinNS::m_lmDS: [DEBUG] IPA: Extended FunctionCallSummary: Valid functions for propagation: --.builtinNS::m_lmCG: 1 --.builtinNS::m_scale: 1 --.builtinNS::m_lm: 1 --.builtinNS::m_lmDS: 1 Valid scalars for propagation: --.builtinNS::m_lmCG: --.builtinNS::m_scale: 1:true 2:true --.builtinNS::m_lm: 2:true 3:0 4:1.0E-7 5:1.0E-7 6:0 --.builtinNS::m_lmDS: Valid #non-zeros for propagation: --.builtinNS::m_lmCG: --.builtinNS::m_scale: --.builtinNS::m_lm: --.builtinNS::m_lmDS: [DEBUG] IPA: FUNC flagged for recompile-once: .builtinNS::m_lmCG [DEBUG] IPA: start IPA iteration 2/5. [DEBUG] IPA: Initial FunctionCallSummary: Valid functions for propagation: --.builtinNS::m_scale: 1 --.builtinNS::m_lm: 1 --.builtinNS::m_lmDS: 1 Valid scalars for propagation: --.builtinNS::m_scale: 1:true 2:true --.builtinNS::m_lm: 2:true 3:0 4:1.0E-7 5:1.0E-7 6:0 --.builtinNS::m_lmDS: 2:0 3:1.0E-7 4:true Valid #non-zeros for propagation: --.builtinNS::m_scale: --.builtinNS::m_lm: --.builtinNS::m_lmDS: [DEBUG] IPA: Extended FunctionCallSummary: Valid functions for propagation: --.builtinNS::m_scale: 1 --.builtinNS::m_lm: 1 --.builtinNS::m_lmDS: 1 Valid scalars for propagation: --.builtinNS::m_scale: 1:true 2:true --.builtinNS::m_lm: 2:true 3:0 4:1.0E-7 5:1.0E-7 6:0 --.builtinNS::m_lmDS: 2:0 3:1.0E-7 4:true Valid #non-zeros for propagation: --.builtinNS::m_scale: --.builtinNS::m_lm: --.builtinNS::m_lmDS: [DEBUG] IPA: Removed unused function: .builtinNS::m_lmCG [DEBUG] IPA: Inline function '.builtinNS::m_scale' [DEBUG] -- inline '.builtinNS::m_scale' at line 25 [DEBUG] IPA: Forward-function-call candidate L1: '.builtinNS::m_lm' [DEBUG] IPA: Forward-function-call candidate L2: '.builtinNS::m_lm' [DEBUG] IPA: Forward-function-call: replaced '.builtinNS::m_lm' with '.builtinNS::m_lmDS' [DEBUG] IPA: start IPA iteration 3/5. [DEBUG] IPA: Initial FunctionCallSummary: Valid functions for propagation: --.builtinNS::m_scale: 1 --.builtinNS::m_lmDS: 1 Valid scalars for propagation: --.builtinNS::m_scale: 1:true 2:true --.builtinNS::m_lmDS: 2:true 3:0 4:1.0E-7 Valid #non-zeros for propagation: --.builtinNS::m_scale: --.builtinNS::m_lmDS: [DEBUG] IPA: Extended FunctionCallSummary: Valid functions for propagation: --.builtinNS::m_scale: 1 --.builtinNS::m_lmDS: 1 Valid scalars for propagation: --.builtinNS::m_scale: 1:true 2:true --.builtinNS::m_lmDS: 2:true 3:0 4:1.0E-7 Valid #non-zeros for propagation: --.builtinNS::m_scale: --.builtinNS::m_lmDS: [DEBUG] IPA: Inline function '.builtinNS::m_scale' [DEBUG] -- inline '.builtinNS::m_scale' at line 25 [DEBUG] IPA: start IPA iteration 4/5. [DEBUG] IPA: Initial FunctionCallSummary: Valid functions for propagation: --.builtinNS::m_scale: 1 --.builtinNS::m_lmDS: 1 Valid scalars for propagation: --.builtinNS::m_scale: 1:true 2:true --.builtinNS::m_lmDS: 2:true 3:0 4:1.0E-7 Valid #non-zeros for propagation: --.builtinNS::m_scale: --.builtinNS::m_lmDS: [DEBUG] IPA: Extended FunctionCallSummary: Valid functions for propagation: --.builtinNS::m_scale: 1 --.builtinNS::m_lmDS: 1 Valid scalars for propagation: --.builtinNS::m_scale: 1:true 2:true --.builtinNS::m_lmDS: 2:true 3:0 4:1.0E-7 Valid #non-zeros for propagation: --.builtinNS::m_scale: --.builtinNS::m_lmDS: [DEBUG] IPA: Inline function '.builtinNS::m_scale' [DEBUG] -- inline '.builtinNS::m_scale' at line 25 [DEBUG] IPA: Inline function '.builtinNS::m_lmDS' [DEBUG] -- inline '.builtinNS::m_lmDS' at line 26 [DEBUG] IPA: start IPA iteration 5/5. [DEBUG] IPA: Initial FunctionCallSummary: Valid functions for propagation: --.builtinNS::m_scale: 1 Valid scalars for propagation: --.builtinNS::m_scale: 1:true 2:true Valid #non-zeros for propagation: --.builtinNS::m_scale: [DEBUG] IPA: Extended FunctionCallSummary: Valid functions for propagation: --.builtinNS::m_scale: 1 Valid scalars for propagation: --.builtinNS::m_scale: 1:true 2:true Valid #non-zeros for propagation: --.builtinNS::m_scale: [DEBUG] IPA: Removed unused function: .builtinNS::m_lmDS [DEBUG] IPA: Inline function '.builtinNS::m_scale' [DEBUG] -- inline '.builtinNS::m_scale' at line 25 Workload Tree: -------------------------------------------------------------------------------- --MAIN ----BASIC_BLOCK (lines 25-25) ------FCALL (lines 35-70) --------BASIC_BLOCK (lines 39-69) ----------AggUnaryOp ua(meanC) ----------BinaryOp b(-) ----------AggUnaryOp ua(sq+C) ----------BinaryOp b(/) ----BASIC_BLOCK (lines 26-28) ------ReorgOp r(r') ------AggBinaryOp ba(+*) ------AggBinaryOp ba(+*) ------BinaryOp b(-) ------AggUnaryOp ua(+RC) ------ReorgOp r(r') ------AggBinaryOp ba(+*) -------------------------------------------------------------------------------- Workload Tree: -------------------------------------------------------------------------------- --MAIN ----BASIC_BLOCK (lines 26-28) ------AggUnaryOp ua(+RC) ------ReorgOp r(r') ------AggBinaryOp ba(+*) ------AggBinaryOp ba(+*) ------BinaryOp b(-) ------AggUnaryOp ua(+RC) ------ReorgOp r(r') ------AggBinaryOp ba(+*) -------------------------------------------------------------------------------- # EXPLAIN (RUNTIME): # Memory Budget local/remote = 5053MB/?MB/?MB/?MB # Degree of Parallelism (vcores) local/remote = 12/? PROGRAM ( size CP/SP = 162/2 ) --FUNCTIONS ----FUNCTION CALL GRAPH ------MAIN PROGRAM --------.builtinNS::m_scale ----FUNCTION .builtinNS::m_scale [recompile=false] ------GENERIC (lines 39-69) [recompile=false] --------CP createvar _mVar30 target/force_comp_scratch_space//_p2816_192.168.108.96//_t0/temp0 true MATRIX binary 1 20 1000 -1 copy --------CP uacmean X.MATRIX.FP64 _mVar30.MATRIX.FP64 12 --------CP createvar _mVar31 target/force_comp_scratch_space//_p2816_192.168.108.96//_t0/temp1 true MATRIX binary 10000 20 1000 -1 copy --------CP - X.MATRIX.FP64 _mVar30.MATRIX.FP64 _mVar31.MATRIX.FP64 12 --------CP createvar _mVar32 target/force_comp_scratch_space//_p2816_192.168.108.96//_t0/temp2 true MATRIX binary 1 20 1000 -1 copy --------CP uacsqk+ _mVar31.MATRIX.FP64 _mVar32.MATRIX.FP64 12 --------CP createvar _mVar33 target/force_comp_scratch_space//_p2816_192.168.108.96//_t0/temp3 true MATRIX binary 1 20 1000 -1 copy --------CP / _mVar32.MATRIX.FP64 9999.SCALAR.INT64.true _mVar33.MATRIX.FP64 12 --------CP rmvar _mVar32 --------CP createvar _mVar34 target/force_comp_scratch_space//_p2816_192.168.108.96//_t0/temp4 true MATRIX binary 1 20 1000 -1 copy --------CP sqrt _mVar33.MATRIX.FP64 _mVar34.MATRIX.FP64 --------CP rmvar _mVar33 --------CP createvar _mVar35 target/force_comp_scratch_space//_p2816_192.168.108.96//_t0/temp5 true MATRIX binary 1 20 1000 -1 copy --------CP replace pattern=NaN replacement=1 target=_mVar34 _mVar35.MATRIX.FP64 --------CP rmvar _mVar34 --------CP createvar _mVar36 target/force_comp_scratch_space//_p2816_192.168.108.96//_t0/temp6 true MATRIX binary 1 20 1000 -1 copy --------CP replace pattern=0 replacement=1 target=_mVar35 _mVar36.MATRIX.FP64 --------CP rmvar _mVar35 --------CP createvar _mVar37 target/force_comp_scratch_space//_p2816_192.168.108.96//_t0/temp7 true MATRIX binary 10000 20 1000 -1 copy --------CP / _mVar31.MATRIX.FP64 _mVar36.MATRIX.FP64 _mVar37.MATRIX.FP64 12 --------CP rmvar _mVar31 --------CP cpvar _mVar30 ColMean --------CP cpvar _mVar36 ScaleFactor --------CP cpvar _mVar37 Y --------CP rmvar _mVar30 _mVar36 _mVar37 X scale --MAIN PROGRAM ----GENERIC (lines 22-23) [recompile=false] ------CP createvar pREADX target/testTemp/functions/compress/WorkloadAnalysisTest/in/X false MATRIX text 10000 20 -1 -1 copy ------CP createvar pREADy target/testTemp/functions/compress/WorkloadAnalysisTest/in/y false MATRIX text 10000 1 -1 -1 copy ------CP createvar _mVar38 target/force_comp_scratch_space//_p2816_192.168.108.96//_t0/temp8 true MATRIX binary 10000 20 1000 -1 copy ------SPARK rblk pREADX.MATRIX.FP64 _mVar38.MATRIX.FP64 1000 true ------CP createvar _mVar39 target/force_comp_scratch_space//_p2816_192.168.108.96//_t0/temp9 true MATRIX binary 10000 20 1000 -1 copy ------CP compress _mVar38.MATRIX.FP64 _mVar39.MATRIX.FP64 ------CP rmvar _mVar38 ------CP createvar _mVar40 target/force_comp_scratch_space//_p2816_192.168.108.96//_t0/temp10 true MATRIX binary 10000 1 1000 -1 copy ------SPARK rblk pREADy.MATRIX.FP64 _mVar40.MATRIX.FP64 1000 true ------CP createvar _mVar41 target/force_comp_scratch_space//_p2816_192.168.108.96//_t0/temp11 true MATRIX binary 10000 1 1000 -1 copy ------CP compress _mVar40.MATRIX.FP64 _mVar41.MATRIX.FP64 ------CP rmvar _mVar40 ------CP cpvar _mVar39 X ------CP cpvar _mVar41 y ------CP rmvar _mVar39 _mVar41 ----GENERIC (lines 25-25) [recompile=false] ------CP fcall .builtinNS m_scale true 3 1 X=X.MATRIX.FP64 scale=true.SCALAR.BOOLEAN.true center=true.SCALAR.BOOLEAN.true X ----GENERIC (lines 26-28) [recompile=false] ------CP uak+ y.MATRIX.FP64 _Var42.SCALAR.FP64 12 ------CP / _Var42.SCALAR.FP64.false 10000.SCALAR.INT64.true _Var43.SCALAR.FP64 ------CP rmvar _Var42 ------CP + AVG_TOT_Y, .SCALAR.STRING.true _Var43.SCALAR.FP64.false _Var44.SCALAR.STRING ------CP + _Var44.SCALAR.STRING.false STDEV_TOT_Y, .SCALAR.STRING.true _Var45.SCALAR.STRING ------CP rmvar _Var44 ------CP createvar _mVar46 target/force_comp_scratch_space//_p2816_192.168.108.96//_t0/temp12 true MATRIX binary 1 1 1000 -1 copy ------CP tsmm y.MATRIX.FP64 _mVar46.MATRIX.FP64 LEFT 12 ------CP castdts _mVar46.MATRIX.FP64.false _Var47.SCALAR.FP64 ------CP rmvar _mVar46 ------CP ^ _Var43.SCALAR.FP64.false 2.SCALAR.INT64.true _Var48.SCALAR.FP64 ------CP rmvar _Var43 ------CP * 10000.SCALAR.INT64.true _Var48.SCALAR.FP64.false _Var49.SCALAR.FP64 ------CP rmvar _Var48 ------CP - _Var47.SCALAR.FP64.false _Var49.SCALAR.FP64.false _Var50.SCALAR.FP64 ------CP rmvar _Var49 ------CP / _Var50.SCALAR.FP64.false 9999.SCALAR.INT64.true _Var51.SCALAR.FP64 ------CP sqrt _Var51.SCALAR.FP64.false _Var52.SCALAR.FP64 ------CP + _Var45.SCALAR.STRING.false _Var52.SCALAR.FP64.false _Var53.SCALAR.STRING ------CP rmvar _Var45 _Var52 ------CP + _Var53.SCALAR.STRING.false AVG_RES_Y, .SCALAR.STRING.true _Var54.SCALAR.STRING ------CP rmvar _Var53 ------CP createvar _mVar55 target/force_comp_scratch_space//_p2816_192.168.108.96//_t0/temp13 true MATRIX binary 20 20 1000 -1 copy ------CP tsmm X.MATRIX.FP64 _mVar55.MATRIX.FP64 LEFT 12 ------CP createvar _mVar56 target/force_comp_scratch_space//_p2816_192.168.108.96//_t0/temp14 true MATRIX binary 20 1 1000 20 copy ------CP rand 20.SCALAR.INT64.true 1.SCALAR.INT64.true 1000 1.0E-7 1.0E-7 1.0 -1 uniform 1.0 12 _mVar56.MATRIX.FP64 ------CP createvar _mVar57 target/force_comp_scratch_space//_p2816_192.168.108.96//_t0/temp15 true MATRIX binary 20 20 1000 20 copy ------CP rdiag _mVar56.MATRIX.FP64 _mVar57.MATRIX.FP64 ------CP rmvar _mVar56 ------CP createvar _mVar58 target/force_comp_scratch_space//_p2816_192.168.108.96//_t0/temp16 true MATRIX binary 20 20 1000 -1 copy ------CP + _mVar55.MATRIX.FP64 _mVar57.MATRIX.FP64 _mVar58.MATRIX.FP64 12 ------CP rmvar _mVar55 _mVar57 ------CP createvar _mVar59 target/force_comp_scratch_space//_p2816_192.168.108.96//_t0/temp17 true MATRIX binary -1 -1 -1 -1 copy ------CP ba+* X.MATRIX.FP64 y.MATRIX.FP64 _mVar59.MATRIX.FP64 12 true false ------CP createvar _mVar60 target/force_comp_scratch_space//_p2816_192.168.108.96//_t0/temp18 true MATRIX binary 20 1 1000 -1 copy ------CP solve _mVar58.MATRIX.FP64 _mVar59.MATRIX.FP64 _mVar60.MATRIX.FP64 12 ------CP rmvar _mVar58 _mVar59 ------CP createvar _mVar61 target/force_comp_scratch_space//_p2816_192.168.108.96//_t0/temp19 true MATRIX binary -1 -1 -1 -1 copy ------CP ba+* X.MATRIX.FP64 _mVar60.MATRIX.FP64 _mVar61.MATRIX.FP64 12 false false ------CP createvar _mVar62 target/force_comp_scratch_space//_p2816_192.168.108.96//_t0/temp20 true MATRIX binary 10000 1 1000 -1 copy ------CP - y.MATRIX.FP64 _mVar61.MATRIX.FP64 _mVar62.MATRIX.FP64 12 ------CP rmvar _mVar61 ------CP uak+ _mVar62.MATRIX.FP64 _Var63.SCALAR.FP64 12 ------CP / _Var63.SCALAR.FP64.false 10000.SCALAR.INT64.true _Var64.SCALAR.FP64 ------CP rmvar _Var63 ------CP + _Var54.SCALAR.STRING.false _Var64.SCALAR.FP64.false _Var65.SCALAR.STRING ------CP rmvar _Var54 ------CP + _Var65.SCALAR.STRING.false STDEV_RES_Y, .SCALAR.STRING.true _Var66.SCALAR.STRING ------CP rmvar _Var65 ------CP createvar _mVar67 target/force_comp_scratch_space//_p2816_192.168.108.96//_t0/temp21 true MATRIX binary 1 1 1000 -1 copy ------CP tsmm _mVar62.MATRIX.FP64 _mVar67.MATRIX.FP64 LEFT 12 ------CP rmvar _mVar62 ------CP castdts _mVar67.MATRIX.FP64.false _Var68.SCALAR.FP64 ------CP rmvar _mVar67 ------CP ^ _Var64.SCALAR.FP64.false 2.SCALAR.INT64.true _Var69.SCALAR.FP64 ------CP rmvar _Var64 ------CP * 10000.SCALAR.INT64.true _Var69.SCALAR.FP64.false _Var70.SCALAR.FP64 ------CP rmvar _Var69 ------CP - _Var68.SCALAR.FP64.false _Var70.SCALAR.FP64.false _Var71.SCALAR.FP64 ------CP rmvar _Var70 ------CP / _Var71.SCALAR.FP64.false 9979.SCALAR.INT64.true _Var72.SCALAR.FP64 ------CP sqrt _Var72.SCALAR.FP64.false _Var73.SCALAR.FP64 ------CP + _Var66.SCALAR.STRING.false _Var73.SCALAR.FP64.false _Var74.SCALAR.STRING ------CP rmvar _Var66 _Var73 ------CP + _Var74.SCALAR.STRING.false DISPERSION, .SCALAR.STRING.true _Var75.SCALAR.STRING ------CP rmvar _Var74 ------CP / _Var68.SCALAR.FP64.false 9980.SCALAR.INT64.true _Var76.SCALAR.FP64 ------CP + _Var75.SCALAR.STRING.false _Var76.SCALAR.FP64.false _Var77.SCALAR.STRING ------CP rmvar _Var75 ------CP + _Var77.SCALAR.STRING.false R2, .SCALAR.STRING.true _Var78.SCALAR.STRING ------CP rmvar _Var77 ------CP / _Var68.SCALAR.FP64.false _Var50.SCALAR.FP64.false _Var79.SCALAR.FP64 ------CP - 1.SCALAR.INT64.true _Var79.SCALAR.FP64.false _Var80.SCALAR.FP64 ------CP rmvar _Var79 ------CP + _Var78.SCALAR.STRING.false _Var80.SCALAR.FP64.false _Var81.SCALAR.STRING ------CP rmvar _Var78 _Var80 ------CP + _Var81.SCALAR.STRING.false ADJUSTED_R2, .SCALAR.STRING.true _Var82.SCALAR.STRING ------CP rmvar _Var81 ------CP / _Var76.SCALAR.FP64.false _Var51.SCALAR.FP64.false _Var83.SCALAR.FP64 ------CP - 1.SCALAR.INT64.true _Var83.SCALAR.FP64.false _Var84.SCALAR.FP64 ------CP rmvar _Var83 ------CP + _Var82.SCALAR.STRING.false _Var84.SCALAR.FP64.false _Var85.SCALAR.STRING ------CP rmvar _Var82 _Var84 ------CP + _Var85.SCALAR.STRING.false R2_NOBIAS, .SCALAR.STRING.true _Var86.SCALAR.STRING ------CP rmvar _Var85 ------CP / _Var71.SCALAR.FP64.false _Var50.SCALAR.FP64.false _Var87.SCALAR.FP64 ------CP rmvar _Var71 _Var50 ------CP - 1.SCALAR.INT64.true _Var87.SCALAR.FP64.false _Var88.SCALAR.FP64 ------CP rmvar _Var87 ------CP + _Var86.SCALAR.STRING.false _Var88.SCALAR.FP64.false _Var89.SCALAR.STRING ------CP rmvar _Var86 _Var88 ------CP + _Var89.SCALAR.STRING.false ADJUSTED_R2_NOBIAS, .SCALAR.STRING.true _Var90.SCALAR.STRING ------CP rmvar _Var89 ------CP / _Var72.SCALAR.FP64.false _Var51.SCALAR.FP64.false _Var91.SCALAR.FP64 ------CP rmvar _Var72 _Var51 ------CP - 1.SCALAR.INT64.true _Var91.SCALAR.FP64.false _Var92.SCALAR.FP64 ------CP rmvar _Var91 ------CP + _Var90.SCALAR.STRING.false _Var92.SCALAR.FP64.false _Var93.SCALAR.STRING ------CP rmvar _Var90 _Var92 ------CP / _Var68.SCALAR.FP64.false _Var47.SCALAR.FP64.false _Var94.SCALAR.FP64 ------CP rmvar _Var68 ------CP - 1.SCALAR.INT64.true _Var94.SCALAR.FP64.false _Var95.SCALAR.FP64 ------CP rmvar _Var94 ------CP + R2_VS_0, .SCALAR.STRING.true _Var95.SCALAR.FP64.false _Var96.SCALAR.STRING ------CP rmvar _Var95 ------CP + _Var96.SCALAR.STRING.false ADJUSTED_R2_VS_0, .SCALAR.STRING.true _Var97.SCALAR.STRING ------CP rmvar _Var96 ------CP / _Var47.SCALAR.FP64.false 10000.SCALAR.INT64.true _Var98.SCALAR.FP64 ------CP rmvar _Var47 ------CP / _Var76.SCALAR.FP64.false _Var98.SCALAR.FP64.false _Var99.SCALAR.FP64 ------CP rmvar _Var76 _Var98 ------CP - 1.SCALAR.INT64.true _Var99.SCALAR.FP64.false _Var100.SCALAR.FP64 ------CP rmvar _Var99 ------CP + _Var97.SCALAR.STRING.false _Var100.SCALAR.FP64.false _Var101.SCALAR.STRING ------CP rmvar _Var97 _Var100 ------CP print Calling the Direct Solver....SCALAR.STRING.true _Var102.SCALAR.STRING ------CP print Computing the statistics....SCALAR.STRING.true _Var103.SCALAR.STRING ------CP print _Var93.SCALAR.STRING.false _Var104.SCALAR.STRING ------CP rmvar _Var93 ------CP print _Var101.SCALAR.STRING.false _Var105.SCALAR.STRING ------CP rmvar _Var101 ------CP write _mVar60.MATRIX.FP64 target/testTemp/functions/compress/WorkloadAnalysisTest/out/B.SCALAR.STRING.true text.SCALAR.STRING.true .SCALAR.STRING.true ------CP rmvar _mVar60 _Var102 _Var103 _Var104 _Var105 X y