Skip to content

optimizer = "bfgs" causes segfault in GCV lambda selection #2

@AlePalu

Description

@AlePalu

When using BFGS as optimization method, the R wrapper crashes with cause 'memory not mapped'

MWE

data("unit_square", package = "fdaPDE2")
unit_square <- Mesh(unit_square)
df <- ## some data...

model <- SRPDE(y ~ f, domain = unit_square, data = df)
## fit with BFGS optimization
model$fit(lambda = gcv(
    optimizer = "bfgs",
    lambda = 1e-4,
    step = 1e-6
))

The problem is releated to the R wrapper, as performing a BFGS optimization of the GCV from the C++ layer does not cause any segfault.

You can reproduce the test gcv_srpde_newton_test, laplacian_nonparametric_samplingatnodes_newton_fd_exact with BFGS in place of Netwon, and obtain the correct result using a wolfe line search approach for the adaptive step.

auto GCV = model.gcv<ExactEDF>();
GCV.set_step(4e-08);
// optimize GCV
BFGS<fdapde::Dynamic> opt(10, 0.05, 1);
DVector<double> pt = SVector<1>(6.25e-06);
opt.optimize(GCV, pt, WolfeLineSearch());

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions