Skip to content

Commit

Permalink
Merge pull request #2 from sshin23/project-updates
Browse files Browse the repository at this point in the history
Setup Compat in Project.toml
  • Loading branch information
Sungho Shin authored Sep 28, 2020
2 parents 18c25b0 + d88bc11 commit 9119497
Show file tree
Hide file tree
Showing 8 changed files with 974 additions and 66 deletions.
11 changes: 11 additions & 0 deletions .github/workflows/TagBot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
name: TagBot
on:
schedule:
- cron: 0 * * * *
jobs:
TagBot:
runs-on: ubuntu-latest
steps:
- uses: JuliaRegistries/TagBot@v1
with:
token: ${{ secrets.GITHUB_TOKEN }}
2 changes: 1 addition & 1 deletion .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ os:
- osx
julia:
- 1
# - nightly
- nightly
codecov: true
sudo: required
addons:
Expand Down
912 changes: 912 additions & 0 deletions Artifacts.toml

Large diffs are not rendered by default.

67 changes: 19 additions & 48 deletions OPTIONS.md
Original file line number Diff line number Diff line change
@@ -1,27 +1,25 @@
## MadNLP Options
### Interior Point Solver Options
- `linear_solver::Module = DefaultLinearSolver`:\
Linear solver used for solving primal-dual system. Valid values are: `PlasmoNLP`.{`Umfpack`, `Mumps`, `PardisoMKL`, `Ma27`, `Ma57`, `Ma77`, `Ma86`, `Ma97`, `Pardiso`, `Schur`, `Schwarz`}.
Linear solver used for solving primal-dual system. Valid values are: `MadNLP`.{`Umfpack`, `Mumps`, `PardisoMKL`, `Ma27`, `Ma57`, `Ma77`, `Ma86`, `Ma97`, `Pardiso`, `Schur`, `Schwarz`}.
- `iterator::Module = Richardson `\
Iterator used for iterative refinement. Valid values are: `PlasmoNLP`.{`Richardson`,`Krylov`}.
Iterator used for iterative refinement. Valid values are: `MadNLP`.{`Richardson`,`Krylov`}.
- `Richardson` uses [Richardson iteration](https://en.wikipedia.org/wiki/Modified_Richardson_iteration)
- `Krylov` uses [restarted Generalized Minimal Residual](https://en.wikipedia.org/wiki/Generalized_minimal_residual_method) method implemented in [IterativeSolvers.jl](https://github.com/JuliaMath/IterativeSolvers.jl).
- `linear_system_scaler::Module = DummyModule`\
Linear system scaling routine used for scaling primal-dual system. `DummyModule` does not scale the system. Valid values are {`DummyModule`,`PlasmoNLP.Mc19`}.
Linear system scaling routine used for scaling primal-dual system. `DummyModule` does not scale the system. Valid values are {`DummyModule`,`MadNLP.Mc19`}.
- `blas_num_threads::Int = Threads.nthreads()`\
Number of threads used for BLAS routines. Valid range is ``[1,\infty)``.
- `disable_garbage_collector::Bool = false `\
If `true`, Julia garbage collector is temporarily disabled while solving the problem, and then enabled back once the solution is complete.
- `rethrow_error::Bool = true `\
If `false`, any internal error thrown by `PlasmoNLP` and interruption exception (triggered by the user via `^C`) is catched, and not rethrown. If an error is catched, the solver terminates with an error message.
- `log_level::String = "info"`\
Log level for PlasmoNLP. The log level set here is propagated down to the submodules (e.g., `PlasmoNLP`.{`Richardson`, `Ma57`}). Valid values are: {`"trace"`, `"debug"`, `"info"`, `"notice"`, `"warn"`, `"error"`}.
- `print_level::String = "trace"`\
`stdout` print level. Any message with level less than `print_level` is not printed on `stdout`. Valid values are: {`"trace"`, `"debug"`, `"info"`, `"notice"`, `"warn"`, `"error"`}.
- `output_file::String = ""`\
If `false`, any internal ERROR thrown by `MadNLP` and interruption exception (triggered by the user via `^C`) is catched, and not rethrown. If an ERROR is catched, the solver terminates with an ERROR message.
- `print_level::String = MadNLP.INFO`\
`stdout` print level. Any message with level less than `print_level` is not printed on `stdout`. Valid values are: `MadNLP`.{`TRACE`, `DEBUG`, `INFO`, `NOTICE`, `WARN`, `ERROR`}.
- `output_file::String = MadNLP.INFO`\
If not `""`, the output log is teed to the file at the path specified in `output_file`.
- `file_print_level::String = "trace"`\
File print level; any message with level less than `file_print_level` is not printed on the file specified in `output_file`. Valid values are: {`"trace"`, `"debug"`, `"info"`, `"notice"`, `"warn"`, `"error"`}.
- `file_print_level::String = "TRACE"`\
File print level; any message with level less than `file_print_level` is not printed on the file specified in `output_file`. Valid values are: `MadNLP`.{`TRACE`, `DEBUG`, `INFO`, `NOTICE`, `WARN`, `ERROR`}.
- `tol::Float64 = 1e-8`\
Termination tolerance. The solver terminates if the scaled primal, dual, complementary infeasibility is less than `tol`. Valid range is ``(0,\infty)``.
- `acceptable_tol::Float64 = 1e-6`\
Expand All @@ -34,19 +32,19 @@
Maximum number of interior point iterations. The solver terminates with exit symbol `:Maximum_Iterations_Exceeded` if the interior point iteration count exceeds `max_iter`.
- `max_wall_time::Float64 = 1e6`\
Maximum wall time for interior point solver. The solver terminates with exit symbol `:Maximum_WallTime_Exceeded` if the total solver wall time exceeds `max_wall_time`.
- `fixed_variable_treatment::String = "make_parameter"`\
Valid values are: {`"relax_bounds"`,`"make_parameter"`}.
- `fixed_variable_treatment::String = MadNLP.MAKE_PARAMETER`\
Valid values are: `MadNLP`.{`RELAX_BOUNDS`,`MAKE_PARAMETER`}.
- `jacobian_constant::Bool = false`\
If `true`, constraint Jacobian is only evaluated once and reused.
- `hessian_constant::Bool = false`\
If `true`, Lagrangian Hessian is only evaluated once and reused.
- `reduced_system::Bool = true`\
If `true`, the primal-dual system is formulated as in Greif (2014).
- `inertia_correction_method::String = "inertia_free"`\
Valid values are: {`"inertia_based"`, `"inertia_free"`, `"inertia_ignored`"}.
- `"ienrtia_based"` uses the strategy in Wächter (2006),
- `"inertia_free`" uses the strategy in Chiang (2016)
- `"inertia_ignored` simply ignores inertia information.
- `inertia_correction_method::String = MadNLP.INERTIA_AUTO`\
Valid values are: `MadNLP`.{`INERTIA_AUTO`,`INERTIA_BASED"`, `INERTIA_FREE`}.
- `MadNLP.INERTIA_BASED` uses the strategy in Ipopt.
- `MadNLP.INERTIA_FREE` uses the strategy in Chiang (2016).
- `MadNLP.INERTIA_AUTO` uses `MadNLP.INERTIA_BASED` if inertia information is available and uses `MadNLP.INERTIA_FREE` otherwise.
- `s_max::Float64 = 100.`
- `kappa_d::Float64 = 1e-5`
- `constr_mult_init_max::Float64 = 1e3`
Expand Down Expand Up @@ -92,8 +90,6 @@ Linear solver options are specific to the linear solver chosen at `linear_solver
- `ma27_liw_init_factor::Float64 = 5.`
- `ma27_la_init_factor::Float64 = 5.`
- `ma27_meminc_factor::Float64 = 2.`
- `ma27_log_level::String = ""`
Log level for submodule `PlasmoNLP.Ma27`. Valid values are: `"trace"`, `"debug"`, `"info"`, `"notice"`, `"warn"`, `"error"`.

#### Ma57
- `ma57_pivtol::Float64 = 1e-8`
Expand All @@ -104,8 +100,6 @@ Linear solver options are specific to the linear solver chosen at `linear_solver
- `ma57_block_size::Int = 16`
- `ma57_node_amalgamation::Int = 16`
- `ma57_small_pivot_flag::Int = 0`
- `ma57_log_level::String = ""`
Log level for submodule `PlasmoNLP.Ma57`. Valid values are: `"trace"`, `"debug"`, `"info"`, `"notice"`, `"warn"`, `"error"`.

#### Ma77
- `ma77_buffer_lpage::Int = 4096`
Expand All @@ -119,8 +113,7 @@ Linear solver options are specific to the linear solver chosen at `linear_solver
- `ma77_static::Float64 = 0.`
- `ma77_u::Float64 = 1e-8`
- `ma77_umax::Float64 = 1e-4`
- `ma77_log_level::String = ""`
Log level for submodule `PlasmoNLP.Ma77`. Valid values are: `"trace"`, `"debug"`, `"info"`, `"notice"`, `"warn"`, `"error"`.


#### Ma86
- `ma86_num_threads::Int = 1`
Expand All @@ -131,8 +124,6 @@ Linear solver options are specific to the linear solver chosen at `linear_solver
- `ma86_static::Float64 = 0.`
- `ma86_u::Float64 = 1e-8`
- `ma86_umax::Float64 = 1e-4`
- `ma86_log_level::String = ""`
Log level for submodule `PlasmoNLP.Ma86`. Valid values are: `"trace"`, `"debug"`, `"info"`, `"notice"`, `"warn"`, `"error"`.

#### Ma97
- `ma97_num_threads::Int = 1`
Expand All @@ -143,8 +134,6 @@ Linear solver options are specific to the linear solver chosen at `linear_solver
- `ma97_small::Float64 = 1e-20`
- `ma97_u::Float64 = 1e-8`
- `ma97_umax::Float64 = 1e-4`
- `ma97_log_level::String = ""`
Log level for submodule `PlasmoNLP.Ma97`. Valid values are: `"trace"`, `"debug"`, `"info"`, `"notice"`, `"warn"`, `"error"`.

#### Mumps
- `mumps_dep_tol::Float64 = 0.`
Expand All @@ -154,46 +143,36 @@ Linear solver options are specific to the linear solver chosen at `linear_solver
- `mumps_pivtol::Float64 = 1e-6`
- `mumps_pivtolmax::Float64 = .1`
- `mumps_scaling::Int = 77`
- `mumps_log_level::String = ""`
Log level for submodule `PlasmoNLP.Mumps`. Valid values are: `"trace"`, `"debug"`, `"info"`, `"notice"`, `"warn"`, `"error"`.

#### Umfpack
- `umfpack_pivtol::Float64 = 1e-4`
- `umfpack_pivtolmax::Float64 = 1e-1`
- `umfpack_sym_pivtol::Float64 = 1e-3`
- `umfpack_block_size::Float64 = 16`
- `umfpack_strategy::Float64 = 2.`
- `umfpack_log_level::String = ""`
Log level for submodule `PlasmoNLP.Umfpack`. Valid values are: `"trace"`, `"debug"`, `"info"`, `"notice"`, `"warn"`, `"error"`.

#### Pardiso
- `pardiso_matching_strategy::String = "coplete+2x2"`
- `pardiso_max_inner_refinement_steps::Int = 1`
- `pardiso_msglvl::Int = 0`
- `pardiso_order::Int = 2`
- `pardiso_log_level::String = ""`
Log level for submodule `PlasmoNLP.Pardiso`. Valid values are: `"trace"`, `"debug"`, `"info"`, `"notice"`, `"warn"`, `"error"`.

#### PardisoMKL
- `pardisomkl_num_threads::Int = 1`
- `pardisomkl_matching_strategy::String = "complete+2x2"`
- `pardisomkl_max_iterative_refinement_steps::Int = 1`
- `pardisomkl_msglvl::Int = 0`
- `pardisomkl_order::Int = 2`
- `pardisomkl_log_level::String = ""`
Log level for submodule `PlasmoNLP.PardisoMKL`. Valid values are: `"trace"`, `"debug"`, `"info"`, `"notice"`, `"warn"`, `"error"`.

#### LapackCUDA
- `lapackcuda_algorithm::String = "bunchkaufman"`
- `lapackcuda_log_level::String = ""`

#### LapackMKL
- `lapackmkl_algorithm::String = "bunchkaufman"`
- `lapackmkl_log_level::String = ""`

#### Schur
- `schur_subproblem_solver::Module = DefaultSubproblemSolver` \
Linear solver used for solving subproblem. Valid values are: `PlasmoNLP`.{`Umfpack`, `PardisoMKL`, `Ma27`, `Ma57`, `Ma77`, `Ma86`, `Ma97`, `Pardiso`}.
Linear solver used for solving subproblem. Valid values are: `MadNLP`.{`Umfpack`, `PardisoMKL`, `Ma27`, `Ma57`, `Ma77`, `Ma86`, `Ma97`, `Pardiso`}.
- `schur_dense_solver::Module = DefaultDenseSolver` \
Linear solver used for solving Schur complement system
- `schur_custom_partition::Bool = false` \
Expand All @@ -202,12 +181,10 @@ Linear solver options are specific to the linear solver chosen at `linear_solver
Number of parts (excluding the parent node). Valid range is ``[1,\infty)``
- `schur_part::Vector{Int} = Int[]` \
Custom partition information in a vector form. The parent node should be labeled as `0`. Only valid if `schur_custom_partition` is `true`.
- `schur_log_level::String = ""` \
Log level for submodule `PlasmoNLP.Schur`. Valid values are: `"trace"`, `"debug"`, `"info"`, `"notice"`, `"warn"`, `"error"`.

#### Schwarz
- `schwarz_subproblem_solver::Module = DefaultSubproblemSolver` \
Linear solver used for solving subproblem. Valid values are: `PlasmoNLP`.{`Umfpack`, `PardisoMKL`, `Ma27`, `Ma57`, `Ma77`, `Ma86`, `Ma97`, `Pardiso`}.
Linear solver used for solving subproblem. Valid values are: `MadNLP`.{`Umfpack`, `PardisoMKL`, `Ma27`, `Ma57`, `Ma77`, `Ma86`, `Ma97`, `Pardiso`}.
- `schwarz_custom_partition::Bool = false` \
If `false`, Schwarz solver automatically detects the partition using `Metis`. If `true`, the partition information given in `schur_part` is used. `schur_num_parts` and `schur_part` should be properly set by the user. When using with `Plasmo`, `schur_num_parts` and `schur_part` are automatically set by the `Plasmo` interface.
- `schwarz_num_parts::Int = 2` \
Expand All @@ -222,8 +199,6 @@ Linear solver options are specific to the linear solver chosen at `linear_solver
If `true`, the subproblem solvers are fully improved when the linear solver is initialized.
- `schwarz_max_expand_factor::Int = 4` \
The size of overlap is fully saturated when the `improve!` is called `schwarz_max_expand_factor-1` times. Valid range is ``[2,\infty)``.
- `schwarz_log_level::String = ""` \
Log level for submodule `PlasmoNLP.Schwarz`. Valid values are: `"trace"`, `"debug"`, `"info"`, `"notice"`, `"warn"`, `"error"`.

### Iterator Options
#### Richardson
Expand All @@ -233,8 +208,6 @@ Linear solver options are specific to the linear solver chosen at `linear_solver
Convergence tolerance of Richardson iteration. Valid range is ``(0,\infty)``.
- `richardson_acceptable_tol::Float64 = 1e-5` \
Acceptable convergence tolerance of Richardson iteration. If the Richardson iteration counter exceeds `richardson_max_iter` without satisfying the convergence criteria set with `richardson_tol`, the Richardson solver checks whether the acceptable convergence criteria set with `richardson_acceptable_tol` is satisfied; if the acceptable convergence criteria is satisfied, the computed step is used; otherwise, the augmented system is treated to be singular. Valid range is ``(0,\infty)``.
- `richardson_log_level::String = ""` \
Log level for submodule `PlasmoNLP.Richardson`. Valid values are: `"trace"`, `"debug"`, `"info"`, `"notice"`, `"warn"`, `"error"`.

#### Krylov
- `krylov_max_iter::Int = 10` \
Expand All @@ -245,8 +218,6 @@ Linear solver options are specific to the linear solver chosen at `linear_solver
Acceptable convergence tolerance of Krylov iteration. If the Krylov iteration counter exceeds `krylov_max_iter` without satisfying the convergence criteria set with `krylov_tol`, the Krylov solver checks whether the acceptable convergence criteria set with `krylov_acceptable_tol` is satisfied; if the acceptable convergence criteria is satisfied, the computed step is used; otherwise, the augmented system is treated to be singular. Valid range is ``(0,\infty)``.
- `krylov_restart::Int = 5` \
Maximum Krylov iteration before restarting. Valid range is ``[1,\infty)``.
- `krylov_log_level::String = ""` \
Log level for submodule `PlasmoNLP.Krylov`. Valid values are: `"trace"`, `"debug"`, `"info"`, `"notice"`, `"warn"`, `"error"`.

### Reference
[Bunch, 1977]: J R Bunch and L Kaufman, Some stable methods for calculating inertia and solving symmetric linear systems, Mathematics of Computation 31:137 (1977), 163-179.
Expand Down
28 changes: 20 additions & 8 deletions Project.toml
Original file line number Diff line number Diff line change
@@ -1,39 +1,51 @@
name = "MadNLP"
uuid = "2621e9c9-9eb4-46b1-8089-e8c72242dfb6"
authors = ["Sungho Shin"]
repo = "https://github.com/sshin23/MadNLP.jl.git"
version = "0.1.0"

[deps]
Pkg = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f"
BinaryProvider = "b99e7846-7c00-51b0-8f62-c81ae34c0232"
CUDA = "052768ef-5323-5732-b1bb-66c8b64840ba"
IterativeSolvers = "42fd0dbc-a981-5370-80f2-aaf504508153"
JuMP = "4076af6c-e467-56ae-b986-b466b2749572"
Libdl = "8f399da3-3557-5675-b5ff-fb832c97cbdb"
LightGraphs = "093fc24a-ae57-5d10-9952-331d41423f4d"
LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e"
METIS_jll = "d00139f3-1899-568f-a2f0-47f597d42d70"
MKL_jll = "856f044c-d86e-5d09-b602-aeab76dc8ba7"
Logging = "56ddb016-857b-54e1-b83d-db4d58db5568"
MPI = "da04e1cc-30fd-572f-bb4f-1f8673147195"
MUMPS_seq_jll = "d7ed1dd3-d0ae-5e8e-bfb4-87a502085b8d"
MathOptInterface = "b8f27783-ece8-5eb3-8dc8-9495eed66fee"
Metis = "2679e427-3c69-5b7f-982b-ece356f1e94b"
NLPModels = "a4795742-8479-5a88-8948-cc11e1c8c1a6"
OpenBLAS32_jll = "656ef2d0-ae68-5445-9ca0-591084a874a2"
Parameters = "d96e819e-fc66-5662-9728-84c9c7592b0a"
Plasmo = "d3f7391f-f14a-50cc-bbe4-76a32d1bad3c"
Printf = "de0858da-6303-5e67-8744-51eddeeeb8d7"
SolverTools = "b5612192-2639-5dc1-abfe-fbedd65fab29"
SparseArrays = "2f01184e-e22b-5df5-ae63-d93ebab69eaf"
StaticArrays = "90137ffa-7385-5640-81b9-e52037218182"
SuiteSparse = "4607b0f0-06f3-5cda-b6b1-a6196a1729e9"
Logging = "56ddb016-857b-54e1-b83d-db4d58db5568"

[compat]
METIS_jll = "4.0.3"
MUMPS_seq_jll = "4.10.0"
AmplNLReader = ">= 0.8"
BinaryProvider = "~0.5"
CUDA = "~1.3"
IterativeSolvers = "~0.8"
JuMP = "~0.21"
LightGraphs = "~1.3"
MPI = "~0.15"
MathOptInterface = "~0.9"
Metis = "~1.0"
NLPModels = "~0.13"
Parameters = "~0.12"
Plasmo = "~0.3"
SolverTools = "~0.3"
StaticArrays = "~0.12"
julia = "1"

[extras]
Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40"
AmplNLReader = "77dd3d4c-cb1d-5e09-9340-85030ff7ba66"
Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40"

[targets]
test = ["Test", "AmplNLReader"]
11 changes: 6 additions & 5 deletions deps/build.jl
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,8 @@

Sys.iswindows() && error("Windows is currently not supported.")

using BinaryProvider, METIS_jll, MUMPS_seq_jll, MKL_jll, OpenBLAS32_jll
using Pkg.Artifacts
using BinaryProvider

# Parse some basic command-line arguments
const verbose = "--verbose" in ARGS
Expand All @@ -21,10 +22,10 @@ const no_whole_archive = Sys.isapple() ? `-Wl,-noall_load` : `-Wl,--no-whole-arc
const libdir = mkpath(joinpath(@__DIR__, "lib"))
const CC = haskey(ENV,"MADNLP_CC") ? ENV["MADNLP_CC"] : `gcc`
const FC = haskey(ENV,"MADNLP_FC") ? ENV["MADNLP_FC"] : `gfortran`
const libmetis_dir = joinpath(METIS_jll.artifact_dir, "lib")
const libmetis_dir = joinpath(artifact"METIS", "lib")
const with_metis = `-L$libmetis_dir $rpath$libmetis_dir -lmetis`
const libmkl_dir = joinpath(MKL_jll.artifact_dir,"lib")
const libopenblas_dir = joinpath(OpenBLAS32_jll.artifact_dir,"lib")
const libmkl_dir = joinpath(artifact"MKL","lib")
const libopenblas_dir = joinpath(artifact"OpenBLAS32","lib")
const with_mkl = `-L$libmkl_dir $rpath$libmkl_dir -lmkl_intel_lp64 -lmkl_sequential -lmkl_core`
const with_openblas = `-L$libopenblas_dir $rpath$libopenblas_dir -lopenblas`
const openmp_flag = haskey(ENV,"MADNLP_ENABLE_OPENMP") ? ENV["MADNLP_ENABLE_OPENMP"] : `-fopenmp`
Expand Down Expand Up @@ -59,7 +60,7 @@ end

# MUMPS_seq
if is_FC
const libmumps_dir = joinpath(MUMPS_seq_jll.artifact_dir,"lib")
const libmumps_dir = joinpath(artifact"MUMPS_seq","lib")
push!(products,FileProduct(prefix,joinpath(libdir,"libmumps.$so"),:libmumps))
wait(OutputCollector(`$FC -o$(libdir)/libmumps.$so -shared $whole_archive -L$libmumps_dir $rpath$libmumps_dir -ldmumps $no_whole_archive -lmumps_common -lmpiseq -lpord $with_metis $(blasvendor == :mkl ? with_mkl : with_openblas)`,verbose=verbose))
@info "Building Mumps (sequential) $(build_succeded(products[end]))."
Expand Down
5 changes: 3 additions & 2 deletions src/MadNLP.jl
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,8 @@

module MadNLP

import IterativeSolvers, MathOptInterface, MPI, MKL_jll, OpenBLAS32_jll
import Pkg.Artifacts: @artifact_str
import IterativeSolvers, MathOptInterface, MPI
import Libdl: dlopen, dlext, RTLD_DEEPBIND, RTLD_GLOBAL
import Metis: partition
import Parameters: @with_kw
Expand Down Expand Up @@ -49,7 +50,7 @@ function __init__()
@isdefined(libmumps) && dlopen(libmumps,RTLD_DEEPBIND)
@isdefined(libhsl) && dlopen(libhsl,RTLD_DEEPBIND)
@isdefined(libpardiso) && dlopen(libpardiso,RTLD_DEEPBIND)
@isdefined(libmkl32) && dlopen.(joinpath.(MKL_jll.artifact_dir,[
@isdefined(libmkl32) && dlopen.(joinpath.(artifact"MKL",[
"lib/libmkl_core.$(dlext)",
"lib/libmkl_sequential.$(dlext)",
"lib/libmkl_intel_lp64.$(dlext)"]),RTLD_GLOBAL)
Expand Down
4 changes: 2 additions & 2 deletions src/interiorpointsolver.jl
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ end
# General options
rethrow_error::Bool = true
disable_garbage_collector::Bool = false
blas_num_threads::Int = -1
blas_num_threads::Int = Threads.nthreads()
linear_solver::Module
iterator::Module = Richardson
linear_system_scaler::Module = DummyModule
Expand Down Expand Up @@ -341,7 +341,7 @@ function Solver(nlp::NonlinearProgram;
# generic options
opt.disable_garbage_collector &&
(GC.enable(false); @warn(logger,"Julia garbage collector is temporarily disabled"))
opt.blas_num_threads == -1 || set_blas_num_threads(opt.blas_num_threads; permanent=true)
set_blas_num_threads(opt.blas_num_threads; permanent=true)

@trace(logger,"Initializing variables.")
ind_ineq = findall(nlp.gl.!=nlp.gu)
Expand Down

0 comments on commit 9119497

Please sign in to comment.