Lines Matching refs:linear

7   PetscRegressor_Linear *linear = (PetscRegressor_Linear *)regressor->data;  in PetscRegressorLinearSetFitIntercept_Linear()  local
10 linear->fit_intercept = flg; in PetscRegressorLinearSetFitIntercept_Linear()
16 PetscRegressor_Linear *linear = (PetscRegressor_Linear *)regressor->data; in PetscRegressorLinearSetType_Linear() local
19 linear->type = type; in PetscRegressorLinearSetType_Linear()
25 PetscRegressor_Linear *linear = (PetscRegressor_Linear *)regressor->data; in PetscRegressorLinearGetType_Linear() local
28 *type = linear->type; in PetscRegressorLinearGetType_Linear()
34 PetscRegressor_Linear *linear = (PetscRegressor_Linear *)regressor->data; in PetscRegressorLinearGetIntercept_Linear() local
37 *intercept = linear->intercept; in PetscRegressorLinearGetIntercept_Linear()
43 PetscRegressor_Linear *linear = (PetscRegressor_Linear *)regressor->data; in PetscRegressorLinearGetCoefficients_Linear() local
46 *coefficients = linear->coefficients; in PetscRegressorLinearGetCoefficients_Linear()
52 PetscRegressor_Linear *linear = (PetscRegressor_Linear *)regressor->data; in PetscRegressorLinearGetKSP_Linear() local
55 if (!linear->ksp) { in PetscRegressorLinearGetKSP_Linear()
56 PetscCall(KSPCreate(PetscObjectComm((PetscObject)regressor), &linear->ksp)); in PetscRegressorLinearGetKSP_Linear()
57 PetscCall(PetscObjectIncrementTabLevel((PetscObject)linear->ksp, (PetscObject)regressor, 1)); in PetscRegressorLinearGetKSP_Linear()
58 PetscCall(PetscObjectSetOptions((PetscObject)linear->ksp, ((PetscObject)regressor)->options)); in PetscRegressorLinearGetKSP_Linear()
60 *ksp = linear->ksp; in PetscRegressorLinearGetKSP_Linear()
66 PetscRegressor_Linear *linear = (PetscRegressor_Linear *)regressor->data; in PetscRegressorLinearSetUseKSP_Linear() local
69 linear->use_ksp = flg; in PetscRegressorLinearSetUseKSP_Linear()
75 PetscRegressor_Linear *linear = (PetscRegressor_Linear *)ptr; in EvaluateResidual() local
79 PetscCall(MatMult(linear->X, x, f)); in EvaluateResidual()
80 PetscCall(VecAXPY(f, -1.0, linear->rhs)); in EvaluateResidual()
95 PetscRegressor_Linear *linear = (PetscRegressor_Linear *)regressor->data; in PetscRegressorSetUp_Linear() local
102 if (linear->fit_intercept) { in PetscRegressorSetUp_Linear()
108 …PetscCall(MatCreateCentering(PetscObjectComm((PetscObject)regressor), PETSC_DECIDE, M, &linear->C)… in PetscRegressorSetUp_Linear()
109 PetscCall(MatCreate(PetscObjectComm((PetscObject)regressor), &linear->X)); in PetscRegressorSetUp_Linear()
110 PetscCall(MatSetSizes(linear->X, PETSC_DECIDE, PETSC_DECIDE, M, N)); in PetscRegressorSetUp_Linear()
111 PetscCall(MatSetType(linear->X, MATCOMPOSITE)); in PetscRegressorSetUp_Linear()
112 PetscCall(MatCompositeSetType(linear->X, MAT_COMPOSITE_MULTIPLICATIVE)); in PetscRegressorSetUp_Linear()
113 PetscCall(MatCompositeAddMat(linear->X, regressor->training)); in PetscRegressorSetUp_Linear()
114 PetscCall(MatCompositeAddMat(linear->X, linear->C)); in PetscRegressorSetUp_Linear()
115 PetscCall(VecDuplicate(regressor->target, &linear->rhs)); in PetscRegressorSetUp_Linear()
116 PetscCall(MatMult(linear->C, regressor->target, linear->rhs)); in PetscRegressorSetUp_Linear()
119 linear->X = regressor->training; in PetscRegressorSetUp_Linear()
120 linear->rhs = regressor->target; in PetscRegressorSetUp_Linear()
122 PetscCall(PetscObjectReference((PetscObject)linear->X)); in PetscRegressorSetUp_Linear()
123 PetscCall(PetscObjectReference((PetscObject)linear->rhs)); in PetscRegressorSetUp_Linear()
126 if (linear->coefficients) PetscCall(VecDestroy(&linear->coefficients)); in PetscRegressorSetUp_Linear()
128 if (linear->use_ksp) { in PetscRegressorSetUp_Linear()
129 …PetscCheck(linear->type == REGRESSOR_LINEAR_OLS, PetscObjectComm((PetscObject)regressor), PETSC_ER… in PetscRegressorSetUp_Linear()
131 if (!linear->ksp) PetscCall(PetscRegressorLinearGetKSP(regressor, &linear->ksp)); in PetscRegressorSetUp_Linear()
132 ksp = linear->ksp; in PetscRegressorSetUp_Linear()
134 PetscCall(MatCreateVecs(linear->X, &linear->coefficients, NULL)); in PetscRegressorSetUp_Linear()
136 PetscCall(MatCreateNormal(linear->X, &linear->XtX)); in PetscRegressorSetUp_Linear()
138 PetscCall(KSPSetOperators(ksp, linear->X, linear->XtX)); in PetscRegressorSetUp_Linear()
149 PetscCall(MatCreateVecs(linear->X, &linear->coefficients, &linear->residual)); in PetscRegressorSetUp_Linear()
152 PetscCall(TaoSetSolution(tao, linear->coefficients)); in PetscRegressorSetUp_Linear()
153 PetscCall(TaoSetResidualRoutine(tao, linear->residual, EvaluateResidual, linear)); in PetscRegressorSetUp_Linear()
154 PetscCall(TaoSetJacobianResidualRoutine(tao, linear->X, linear->X, EvaluateJacobian, linear)); in PetscRegressorSetUp_Linear()
161 switch (linear->type) { in PetscRegressorSetUp_Linear()
174 … if (!linear->use_ksp) PetscCall(TaoBRGNSetRegularizerWeight(tao, regressor->regularizer_weight)); in PetscRegressorSetUp_Linear()
182 PetscRegressor_Linear *linear = (PetscRegressor_Linear *)regressor->data; in PetscRegressorReset_Linear() local
186 linear->ksp_its = 0; in PetscRegressorReset_Linear()
187 linear->ksp_tot_its = 0; in PetscRegressorReset_Linear()
189 PetscCall(MatDestroy(&linear->X)); in PetscRegressorReset_Linear()
190 PetscCall(MatDestroy(&linear->XtX)); in PetscRegressorReset_Linear()
191 PetscCall(MatDestroy(&linear->C)); in PetscRegressorReset_Linear()
192 PetscCall(KSPDestroy(&linear->ksp)); in PetscRegressorReset_Linear()
193 PetscCall(VecDestroy(&linear->coefficients)); in PetscRegressorReset_Linear()
194 PetscCall(VecDestroy(&linear->rhs)); in PetscRegressorReset_Linear()
195 PetscCall(VecDestroy(&linear->residual)); in PetscRegressorReset_Linear()
293 PetscRegressor_Linear *linear = (PetscRegressor_Linear *)regressor->data; in PetscRegressorSetFromOptions_Linear() local
301 …gressorLinearTypes", PetscRegressorLinearTypes, (PetscEnum)linear->type, (PetscEnum *)&linear->typ… in PetscRegressorSetFromOptions_Linear()
309 PetscRegressor_Linear *linear = (PetscRegressor_Linear *)regressor->data; in PetscRegressorView_Linear() local
315 …rASCIIPrintf(viewer, "PetscRegressor Linear Type: %s\n", PetscRegressorLinearTypes[linear->type])); in PetscRegressorView_Linear()
316 if (linear->ksp) { in PetscRegressorView_Linear()
317 PetscCall(KSPView(linear->ksp, viewer)); in PetscRegressorView_Linear()
318 …PetscCall(PetscViewerASCIIPrintf(viewer, "total KSP iterations: %" PetscInt_FMT "\n", linear->ksp_… in PetscRegressorView_Linear()
320 …if (linear->fit_intercept) PetscCall(PetscViewerASCIIPrintf(viewer, "Intercept=%g\n", (double)line… in PetscRegressorView_Linear()
452 PetscRegressor_Linear *linear = (PetscRegressor_Linear *)regressor->data; in PetscRegressorFit_Linear() local
459 if (linear->use_ksp) PetscCall(PetscRegressorLinearGetKSP(regressor, &linear->ksp)); in PetscRegressorFit_Linear()
460 ksp = linear->ksp; in PetscRegressorFit_Linear()
463 if (linear->use_ksp) { in PetscRegressorFit_Linear()
464 PetscCall(KSPSolve(ksp, linear->rhs, linear->coefficients)); in PetscRegressorFit_Linear()
466 linear->ksp_its += kspits; in PetscRegressorFit_Linear()
467 linear->ksp_tot_its += kspits; in PetscRegressorFit_Linear()
473 if (linear->fit_intercept) { in PetscRegressorFit_Linear()
486 PetscCall(VecDuplicate(linear->coefficients, &column_means)); in PetscRegressorFit_Linear()
492 PetscCall(VecDot(column_means, linear->coefficients, &column_means_dot_coefficients)); in PetscRegressorFit_Linear()
495 linear->intercept = target_mean - column_means_dot_coefficients; in PetscRegressorFit_Linear()
497 linear->intercept = 0.0; in PetscRegressorFit_Linear()
504 PetscRegressor_Linear *linear = (PetscRegressor_Linear *)regressor->data; in PetscRegressorPredict_Linear() local
507 PetscCall(MatMult(X, linear->coefficients, y)); in PetscRegressorPredict_Linear()
508 PetscCall(VecShift(y, linear->intercept)); in PetscRegressorPredict_Linear()
532 PetscRegressor_Linear *linear; in PetscRegressorCreate_Linear() local
535 PetscCall(PetscNew(&linear)); in PetscRegressorCreate_Linear()
536 regressor->data = (void *)linear; in PetscRegressorCreate_Linear()
546 linear->intercept = 0.0; in PetscRegressorCreate_Linear()
547 linear->fit_intercept = PETSC_TRUE; /* Default to calculating the intercept. */ in PetscRegressorCreate_Linear()
548linear->use_ksp = PETSC_FALSE; /* Do not default to using KSP for solving the model-fitting … in PetscRegressorCreate_Linear()
549 linear->type = REGRESSOR_LINEAR_OLS; in PetscRegressorCreate_Linear()