From 8113f6148b4ccc2c8a9168a39f9acaa2c920e4f0 Mon Sep 17 00:00:00 2001 From: odow Date: Tue, 19 Oct 2021 17:41:43 +1300 Subject: [PATCH 1/3] Build docs as a PDF --- .gitignore | 1 + docs/Project.toml | 2 +- docs/make.jl | 172 +++++++++++++++++++------------ docs/src/assets/latency.png | Bin 0 -> 25175 bytes docs/src/index.md | 12 +-- docs/src/manual/standard_form.md | 26 ++--- docs/src/tutorials/latency.md | 2 +- 7 files changed, 127 insertions(+), 88 deletions(-) create mode 100644 docs/src/assets/latency.png diff --git a/.gitignore b/.gitignore index fe01be8354..4b1315acc8 100644 --- a/.gitignore +++ b/.gitignore @@ -3,6 +3,7 @@ *.jl.mem .vscode/* docs/build/ +docs/latex_build/ docs/site/ test/Benchmarks/*.json Manifest.toml diff --git a/docs/Project.toml b/docs/Project.toml index 084be214a2..894c17310b 100644 --- a/docs/Project.toml +++ b/docs/Project.toml @@ -5,6 +5,6 @@ JSONSchema = "7d188eb4-7ad8-530c-ae41-71a32a6d4692" MathOptInterface = "b8f27783-ece8-5eb3-8dc8-9495eed66fee" [compat] -Documenter = "0.27" +Documenter = "0.27.9" JSON = "0.21" JSONSchema = "0.3" diff --git a/docs/make.jl b/docs/make.jl index 93d3030079..6aab1f9764 100644 --- a/docs/make.jl +++ b/docs/make.jl @@ -1,12 +1,85 @@ -using Documenter, MathOptInterface +import Documenter +import MathOptInterface -""" -Pass `julia docs/make.jl --fix` to rebuild the doctests. -""" +# Pass --fix` to rebuild the doctests. const _FIX = findfirst(isequal("--fix"), ARGS) !== nothing -makedocs( +# A flag to check if we are running in a GitHub action. +const _IS_GITHUB_ACTIONS = get(ENV, "GITHUB_ACTIONS", "false") == "true" + +# Pass --pdf to build the PDF. On GitHub actions, we always build the PDF. +const _PDF = findfirst(isequal("--pdf"), ARGS) !== nothing || _IS_GITHUB_ACTIONS + +# ============================================================================== +# Documentation structure +# ============================================================================== + +const _PAGES = [ + "Introduction" => "index.md", + "Background" => [ + "background/motivation.md", + "background/duality.md", + "background/naming_conventions.md", + ], + "Tutorials" => [ + "tutorials/example.md", + "tutorials/implementing.md", + "tutorials/mathprogbase.md", + "tutorials/bridging_constraint.md", + "tutorials/manipulating_expressions.md", + "tutorials/latency.md", + ], + "Manual" => [ + "manual/standard_form.md", + "manual/models.md", + "manual/variables.md", + "manual/constraints.md", + "manual/solutions.md", + "manual/modification.md", + ], + "API Reference" => [ + "reference/standard_form.md", + "reference/models.md", + "reference/variables.md", + "reference/constraints.md", + "reference/modification.md", + "reference/nonlinear.md", + "reference/callbacks.md", + "reference/errors.md", + ], + "Submodules" => [ + "Benchmarks" => [ + "Overview" => "submodules/Benchmarks/overview.md", + "API Reference" => "submodules/Benchmarks/reference.md", + ], + "Bridges" => [ + "Overview" => "submodules/Bridges/overview.md", + "Implementation" => "submodules/Bridges/implementation.md", + "API Reference" => "submodules/Bridges/reference.md", + ], + "FileFormats" => [ + "Overview" => "submodules/FileFormats/overview.md", + "API Reference" => "submodules/FileFormats/reference.md", + ], + "Utilities" => [ + "Overview" => "submodules/Utilities/overview.md", + "API Reference" => "submodules/Utilities/reference.md", + ], + "Test" => [ + "Overview" => "submodules/Test/overview.md", + "API Reference" => "submodules/Test/reference.md", + ], + ], + "Release notes" => "release_notes.md", +] + +# ============================================================================== +# Build the HTML docs +# ============================================================================== + +@time Documenter.makedocs( sitename = "MathOptInterface", + authors = "The JuMP core developers and contributors", format = Documenter.HTML( # See https://github.com/JuliaDocs/Documenter.jl/issues/868 prettyurls = get(ENV, "CI", nothing) == "true", @@ -17,67 +90,36 @@ makedocs( modules = [MathOptInterface], checkdocs = :exports, doctest = _FIX ? :fix : true, - pages = [ - "Introduction" => "index.md", - "Background" => [ - "background/motivation.md", - "background/duality.md", - "background/naming_conventions.md", - ], - "Tutorials" => [ - "tutorials/example.md", - "tutorials/implementing.md", - "tutorials/mathprogbase.md", - "tutorials/bridging_constraint.md", - "tutorials/manipulating_expressions.md", - "tutorials/latency.md", - ], - "Manual" => [ - "manual/standard_form.md", - "manual/models.md", - "manual/variables.md", - "manual/constraints.md", - "manual/solutions.md", - "manual/modification.md", - ], - "API Reference" => [ - "reference/standard_form.md", - "reference/models.md", - "reference/variables.md", - "reference/constraints.md", - "reference/modification.md", - "reference/nonlinear.md", - "reference/callbacks.md", - "reference/errors.md", - ], - "Submodules" => [ - "Benchmarks" => [ - "Overview" => "submodules/Benchmarks/overview.md", - "API Reference" => "submodules/Benchmarks/reference.md", - ], - "Bridges" => [ - "Overview" => "submodules/Bridges/overview.md", - "Implementation" => "submodules/Bridges/implementation.md", - "API Reference" => "submodules/Bridges/reference.md", - ], - "FileFormats" => [ - "Overview" => "submodules/FileFormats/overview.md", - "API Reference" => "submodules/FileFormats/reference.md", - ], - "Utilities" => [ - "Overview" => "submodules/Utilities/overview.md", - "API Reference" => "submodules/Utilities/reference.md", - ], - "Test" => [ - "Overview" => "submodules/Test/overview.md", - "API Reference" => "submodules/Test/reference.md", - ], - ], - "Release notes" => "release_notes.md", - ], + pages = _PAGES, ) -deploydocs( - push_preview = true, +# ============================================================================== +# Build the LaTeX docs (if needed) +# ============================================================================== + +if _PDF + latex_platform = _IS_GITHUB_ACTIONS ? "docker" : "native" + @time Documenter.makedocs( + sitename = "MathOptInterface", + authors = "The JuMP core developers and contributors", + format = Documenter.LaTeX(platform = latex_platform), + build = "latex_build", + pages = _PAGES, + ) + # Hack for deploying: copy the pdf (and only the PDF) into the HTML build + # directory! We don't want to copy everything in `latex_build` because it + # includes lots of extraneous LaTeX files. + cp( + joinpath(@__DIR__, "latex_build", "MathOptInterface.pdf"), + joinpath(@__DIR__, "build", "MathOptInterface.pdf"), + ) +end + +# ============================================================================== +# Deploy everything in `build` +# ============================================================================== + +Documenter.deploydocs( repo = "github.com/jump-dev/MathOptInterface.jl.git", + push_preview = true, ) diff --git a/docs/src/assets/latency.png b/docs/src/assets/latency.png new file mode 100644 index 0000000000000000000000000000000000000000..9b51f3b25fc63c559400a3fe628a33348b6e30ff GIT binary patch literal 25175 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 0 \}`` * [`DualExponentialCone()`](@ref MathOptInterface.DualExponentialCone): @@ -90,14 +90,14 @@ The vector-valued set types implemented in MathOptInterface.jl are: ``\{ (t,x) \in \mathbb{R}^{n+1} : x \ge 0, t \le \sqrt[n]{x_1 x_2 \cdots x_n} \}`` where ``n`` is ``\mbox{dimension} - 1`` * [`PowerCone(exponent)`](@ref MathOptInterface.PowerCone): - ``\{ (x,y,z) \in \mathbb{R}^3 : x^\mbox{exponent} y^{1-\mbox{exponent}} \ge |z|, x,y \ge 0 \}`` + ``\{ (x,y,z) \in \mathbb{R}^3 : x^{\mbox{exponent}} y^{1-\mbox{exponent}} \ge |z|, x,y \ge 0 \}`` * [`DualPowerCone(exponent)`](@ref MathOptInterface.DualPowerCone): - ``\{ (u,v,w) \in \mathbb{R}^3 : \frac{u}{\mbox{exponent}}^\mbox{exponent}\frac{v}{1-\mbox{exponent}}^{1-\mbox{exponent}} \ge |w|, u,v \ge 0 \}`` -* [`NormOneCone(dimension)`](@ref MathOptInterface.NormOneCone): ``\{ (t,x) \in \mathbb{R}^\mbox{dimension} : t \ge \lVert x \rVert_1 \}`` where ``\lVert x \rVert_1 = \sum_i \lvert x_i \rvert`` + ``\{ (u,v,w) \in \mathbb{R}^3 : \frac{u}{\mbox{exponent}}^{\mbox{exponent}}\frac{v}{1-\mbox{exponent}}^{1-\mbox{exponent}} \ge |w|, u,v \ge 0 \}`` +* [`NormOneCone(dimension)`](@ref MathOptInterface.NormOneCone): ``\{ (t,x) \in \mathbb{R}^{\mbox{dimension}} : t \ge \lVert x \rVert_1 \}`` where ``\lVert x \rVert_1 = \sum_i \lvert x_i \rvert`` * [`NormInfinityCone(dimension)`](@ref MathOptInterface.NormInfinityCone): - ``\{ (t,x) \in \mathbb{R}^\mbox{dimension} : t \ge \lVert x \rVert_\infty \}`` where ``\lVert x \rVert_\infty = \max_i \lvert x_i \rvert``. + ``\{ (t,x) \in \mathbb{R}^{\mbox{dimension}} : t \ge \lVert x \rVert_\infty \}`` where ``\lVert x \rVert_\infty = \max_i \lvert x_i \rvert``. * [`RelativeEntropyCone(dimension)`](@ref MathOptInterface.RelativeEntropyCone): - ``\{ (u, v, w) \in \mathbb{R}^\mbox{dimension} : u \ge \sum_i w_i \log (\frac{w_i}{v_i}), v_i \ge 0, w_i \ge 0 \}`` + ``\{ (u, v, w) \in \mathbb{R}^{\mbox{dimension}} : u \ge \sum_i w_i \log (\frac{w_i}{v_i}), v_i \ge 0, w_i \ge 0 \}`` ## Matrix cones @@ -119,9 +119,9 @@ The matrix-valued set types implemented in MathOptInterface.jl are: ``\{ (t,u,X) \in \mathbb{R}^{2+\mbox{dimension}^2} : t \le u \log(\det(X/u)), X \mbox{ is a PSD matrix}, u > 0 \}`` * [`NormSpectralCone(row_dim, column_dim)`](@ref MathOptInterface.NormSpectralCone): - ``\{ (t, X) \in \mathbb{R}^{1 + \mbox{row_dim} \times \mbox{column_dim}} : t \ge \sigma_1(X), X \mbox{ is a matrix with row_dim rows and column_dim columns} \}`` + ``\{ (t, X) \in \mathbb{R}^{1 + \mbox{row\_dim} \times \mbox{column\_dim}} : t \ge \sigma_1(X), X \mbox{ is a matrix with row\_dim rows and column\_dim columns} \}`` * [`NormNuclearCone(row_dim, column_dim)`](@ref MathOptInterface.NormNuclearCone): - ``\{ (t, X) \in \mathbb{R}^{1 + \mbox{row_dim} \times \mbox{column_dim}} : t \ge \sum_i \sigma_i(X), X \mbox{ is a matrix with row_dim rows and column_dim columns} \}`` + ``\{ (t, X) \in \mathbb{R}^{1 + \mbox{row\_dim} \times \mbox{column\_dim}} : t \ge \sum_i \sigma_i(X), X \mbox{ is a matrix with row\_dim rows and column\_dim columns} \}`` Some of these cones can take two forms: `XXXConeTriangle` and `XXXConeSquare`. diff --git a/docs/src/tutorials/latency.md b/docs/src/tutorials/latency.md index b46de1aaeb..1279a52b9b 100644 --- a/docs/src/tutorials/latency.md +++ b/docs/src/tutorials/latency.md @@ -264,7 +264,7 @@ ProfileView.view(flamegraph(tinf)) ``` Here's how things looked in mid-August 2021: -![flamegraph](https://user-images.githubusercontent.com/8177701/129137091-fb78c4a0-2208-4418-968f-24ff15370351.png) +![flamegraph](../assets/latency.png) There are a few opportunities for improvement (non-red flames, particularly on the right). But the main problem is a large red (non-precompilable due to method From 16a906c881fc12eddb613cdc21b039534ce9a346 Mon Sep 17 00:00:00 2001 From: odow Date: Wed, 20 Oct 2021 10:52:58 +1300 Subject: [PATCH 2/3] Fix release notes --- docs/make.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/make.jl b/docs/make.jl index 6aab1f9764..51f295be7b 100644 --- a/docs/make.jl +++ b/docs/make.jl @@ -70,7 +70,7 @@ const _PAGES = [ "API Reference" => "submodules/Test/reference.md", ], ], - "Release notes" => "release_notes.md", + "release_notes.md", ] # ============================================================================== From 926a0c7b543519cce7dfc88c73470d1a9667cfe7 Mon Sep 17 00:00:00 2001 From: odow Date: Wed, 20 Oct 2021 11:45:54 +1300 Subject: [PATCH 3/3] Another update --- docs/make.jl | 2 +- docs/src/index.md | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/make.jl b/docs/make.jl index 51f295be7b..6aab1f9764 100644 --- a/docs/make.jl +++ b/docs/make.jl @@ -70,7 +70,7 @@ const _PAGES = [ "API Reference" => "submodules/Test/reference.md", ], ], - "release_notes.md", + "Release notes" => "release_notes.md", ] # ============================================================================== diff --git a/docs/src/index.md b/docs/src/index.md index b96507ac82..73937f886a 100644 --- a/docs/src/index.md +++ b/docs/src/index.md @@ -1,3 +1,5 @@ +# Introduction + !!! note This documentation is also available in PDF format: [MathOptInterface.pdf](MathOptInterface.pdf).