I'm writing DiffSharp docs using the tools in this repo. I need to make use of literate scripts to produce docs that have F# code executed with the --eval argument of fsdocs tool.
This is the test script I'm using in my machine. Call this test.fsx in the /docs folder of my repo:
(*** condition: prepare ***)
#I "../tests/DiffSharp.Tests/bin/Debug/net5.0"
#r "DiffSharp.Core.dll"
#r "DiffSharp.Data.dll"
#r "DiffSharp.Backends.Reference.dll"
#r "DiffSharp.Backends.Torch.dll"
let loadLibTorchNative() =
let assemblyLoc = System.IO.Path.GetDirectoryName(typeof<DiffSharp.dsharp>.Assembly.Location)
let loc = assemblyLoc + "/runtimes/linux-x64/native/libtorch.so"
printfn "Loading %A" loc
let handle = System.Runtime.InteropServices.NativeLibrary.Load(loc)
printfn "Handle %A" handle
loadLibTorchNative()
open DiffSharp
dsharp.config(backend=Backend.Torch)
(**
Creating a tensor.
*)
let t = dsharp.tensor [ 0 .. 10 ]
printfn "%A" t
(*** include-output ***)
The code needs to load a native library, called libtorch.so in Linux, to work correctly.
Trial 1
When I run the script file with dotnet fsi test.fsx, things work fine and this is the output:
But when I build the docs with fsdocs watch --eval --strict, I get the following page rendeded. The code doesn't work and (*** include-output ***) doesn't work.
Trial 2
If I make the change dsharp.config(backend=Backend.Torch) -> dsharp.config(backend=Backend.Reference) in the test.fsx file so that I have
loadLibTorchNative()
open DiffSharp
dsharp.config(backend=Backend.Reference)
it still fails in the same way with Trial 1.
Trial 3
If I comment out the native library load code, so that I have
// loadLibTorchNative()
open DiffSharp
dsharp.config(backend=Backend.Reference)
html output works as expected.
My conclusion
Because the native library load breaks both Backend.Reference (that doesn't need the native library) and Backend.Torch (that needs the native library) cases, this tells me that the native library load somehow breaks fsdocs.
In none of these examples I get any indication of an error in fsdocs output. I'm copying it below. Debugging this really difficult because it works fine in fsi and I get no error at all in fsdocs so I did lots of blind debugging and this is the summary of what I found out so far.
fsdocs output for Trial 2 (that failed)
dotnet fsdocs watch --eval --strict
restored project state from '.fsdocs/cache'
Inputs for API Docs:
/home/gunes/git/github/DiffSharp/DiffSharp/src/DiffSharp.Core/bin/Debug/netstandard2.1/DiffSharp.Core.dll
Substitutions/parameters:
root --> http://localhost:8901/
fsdocs-authors --> Atılım Güneş Baydin, Don Syme, Barak A. Pearlmutter, Jeffrey Siskind, and DiffSharp contributors
fsdocs-collection-name --> DiffSharp
fsdocs-collection-name-link --> https://diffsharp.github.io/
fsdocs-copyright --> Copyright 2014-2021
fsdocs-logo-src --> http://localhost:8901/img/logo.png
fsdocs-navbar-position --> fixed-left
fsdocs-theme --> default
fsdocs-logo-link --> https://diffsharp.github.io/
fsdocs-license-link --> https://github.com/DiffSharp/DiffSharp/blob/master/LICENSE.md
fsdocs-release-notes-link --> https://github.com/DiffSharp/DiffSharp/blob/master/RELEASE_NOTES.md
fsdocs-package-project-url --> https://diffsharp.github.io/
fsdocs-package-license-expression --> BSD-2-Clause
fsdocs-package-tags --> F# fsharp ML AI Machine Learning PyTorch Tensor Automatic Differentiation Gradients
fsdocs-package-version --> 1.0.0-local-210719
fsdocs-repository-link --> https://github.com/DiffSharp/DiffSharp/
fsdocs-repository-branch --> dev
root --> http://localhost:8901/
using extra content from /home/gunes/.nuget/packages/fsharp.formatting.commandtool/11.2.0/extras
Building docs first time...
API docs:
generating model for 1 assemblies in API docs...
loading 1 assemblies...
isNetCoreApp = true
registering entities for assembly DiffSharp.Core...
reading XML doc for /home/gunes/git/github/DiffSharp/DiffSharp/src/DiffSharp.Core/bin/Debug/netstandard2.1/DiffSharp.Core.dll...
reading assembly data for /home/gunes/git/github/DiffSharp/DiffSharp/src/DiffSharp.Core/bin/Debug/netstandard2.1/DiffSharp.Core.dll...
collecting namespaces...
found namespace DiffSharp in assembly DiffSharp.Core...
found namespace DiffSharp.Backends in assembly DiffSharp.Core...
found namespace DiffSharp.Data in assembly DiffSharp.Core...
found namespace DiffSharp.Distributions in assembly DiffSharp.Core...
found namespace DiffSharp.Model in assembly DiffSharp.Core...
found namespace DiffSharp.Optim in assembly DiffSharp.Core...
found namespace DiffSharp.Util in assembly DiffSharp.Core...
found 25 entities in namespace DiffSharp...
found 2 entities in namespace DiffSharp.Backends...
found 5 entities in namespace DiffSharp.Data...
found 7 entities in namespace DiffSharp.Distributions...
found 24 entities in namespace DiffSharp.Model...
found 4 entities in namespace DiffSharp.Optim...
found 11 entities in namespace DiffSharp.Util...
found 7 namespaces...
Content:
generating model for docs/tutorial-vae.fsx --> ./tutorial-vae.html
generating model for docs/tutorial-gan.fsx --> ./tutorial-gan.html
generating model for docs/install.fsx --> ./install.html
generating model for docs/extensions.fsx --> ./extensions.html
generating model for docs/probability-distributions.fsx --> ./probability-distributions.html
generating model for docs/tensors.fsx --> ./tensors.html
generating model for docs/optimization.fsx --> ./optimization.html
generating model for docs/quickstart.fsx --> ./quickstart.html
generating model for docs/test.fsx --> ./test.html
generating model for docs/nested-derivatives.fsx --> ./nested-derivatives.html
generating model for docs/index.fsx --> ./index.html
generating model for docs/models.fsx --> ./models.html
generating model for docs/tutorial-classifier.fsx --> ./tutorial-classifier.html
preparing docs/README.md --> ./README.html
generating model for docs/tutorial-language.fsx --> ./tutorial-language.html
generating model for docs/differentiable-programming.fsx --> ./differentiable-programming.html
Write API Docs:
Generating tmp/watch/reference/index.html
Generating tmp/watch/reference/diffsharp.html
Generating tmp/watch/reference/diffsharp-backends.html
Generating tmp/watch/reference/diffsharp-data.html
Generating tmp/watch/reference/diffsharp-distributions.html
Generating tmp/watch/reference/diffsharp-model.html
Generating tmp/watch/reference/diffsharp-optim.html
Generating tmp/watch/reference/diffsharp-util.html
Generating tmp/watch/reference/diffsharp-backendmodule.html
Generating tmp/watch/reference/diffsharp-compose.html
Generating tmp/watch/reference/diffsharp-devicemodule.html
Generating tmp/watch/reference/diffsharp-dtypemodule.html
Generating tmp/watch/reference/diffsharp-dtypeautoopens.html
Generating tmp/watch/reference/diffsharp-numerical.html
Generating tmp/watch/reference/diffsharp-numerical-shorten.html
Generating tmp/watch/reference/diffsharp-scalarextensions.html
Generating tmp/watch/reference/diffsharp-shapemodule.html
Generating tmp/watch/reference/diffsharp-shapeautoopens.html
Generating tmp/watch/reference/diffsharp-shorten.html
Generating tmp/watch/reference/diffsharp-slicingextensions.html
Generating tmp/watch/reference/diffsharp-model-modelautoopens.html
Generating tmp/watch/reference/diffsharp-util-array.html
Generating tmp/watch/reference/diffsharp-util-arraynd.html
Generating tmp/watch/reference/diffsharp-util-dataconverter.html
Generating tmp/watch/reference/diffsharp-util-dictionary.html
Generating tmp/watch/reference/diffsharp-util-extensionautoopens.html
Generating tmp/watch/reference/diffsharp-util-randommodule.html
Generating tmp/watch/reference/diffsharp-util-seq.html
Generating tmp/watch/reference/diffsharp-util-utilautoopens.html
Generating tmp/watch/reference/diffsharp-backend.html
Generating tmp/watch/reference/diffsharp-backendfunctionality-1.html
Generating tmp/watch/reference/diffsharp-binaryop.html
Generating tmp/watch/reference/diffsharp-binaryopelementwise.html
Generating tmp/watch/reference/diffsharp-device.html
Generating tmp/watch/reference/diffsharp-devicetype.html
Generating tmp/watch/reference/diffsharp-dtype.html
Generating tmp/watch/reference/diffsharp-shape.html
Generating tmp/watch/reference/diffsharp-tensor.html
Generating tmp/watch/reference/diffsharp-tensorop.html
Generating tmp/watch/reference/diffsharp-unaryop.html
Generating tmp/watch/reference/diffsharp-unaryopelementwise.html
Generating tmp/watch/reference/diffsharp-dsharp.html
Generating tmp/watch/reference/diffsharp-scalar.html
Generating tmp/watch/reference/diffsharp-backends-backendtensorstatics.html
Generating tmp/watch/reference/diffsharp-backends-rawtensor.html
Generating tmp/watch/reference/diffsharp-data-dataloader.html
Generating tmp/watch/reference/diffsharp-data-dataset.html
Generating tmp/watch/reference/diffsharp-data-datasetsubset.html
Generating tmp/watch/reference/diffsharp-data-tensordataset.html
Generating tmp/watch/reference/diffsharp-data-textdataset.html
Generating tmp/watch/reference/diffsharp-distributions-bernoulli.html
Generating tmp/watch/reference/diffsharp-distributions-categorical.html
Generating tmp/watch/reference/diffsharp-distributions-distribution-1.html
Generating tmp/watch/reference/diffsharp-distributions-empirical-1.html
Generating tmp/watch/reference/diffsharp-distributions-normal.html
Generating tmp/watch/reference/diffsharp-distributions-tensordistribution.html
Generating tmp/watch/reference/diffsharp-distributions-uniform.html
Generating tmp/watch/reference/diffsharp-model-batchnorm1d.html
Generating tmp/watch/reference/diffsharp-model-batchnorm2d.html
Generating tmp/watch/reference/diffsharp-model-batchnorm3d.html
Generating tmp/watch/reference/diffsharp-model-conv1d.html
Generating tmp/watch/reference/diffsharp-model-conv2d.html
Generating tmp/watch/reference/diffsharp-model-conv3d.html
Generating tmp/watch/reference/diffsharp-model-convtranspose1d.html
Generating tmp/watch/reference/diffsharp-model-convtranspose2d.html
Generating tmp/watch/reference/diffsharp-model-convtranspose3d.html
Generating tmp/watch/reference/diffsharp-model-dropout.html
Generating tmp/watch/reference/diffsharp-model-dropout2d.html
Generating tmp/watch/reference/diffsharp-model-dropout3d.html
Generating tmp/watch/reference/diffsharp-model-lstm.html
Generating tmp/watch/reference/diffsharp-model-lstmcell.html
Generating tmp/watch/reference/diffsharp-model-linear.html
Generating tmp/watch/reference/diffsharp-model-mode.html
Generating tmp/watch/reference/diffsharp-model-model.html
Generating tmp/watch/reference/diffsharp-model-parameter.html
Generating tmp/watch/reference/diffsharp-model-parameterdict.html
Generating tmp/watch/reference/diffsharp-model-rnn.html
Generating tmp/watch/reference/diffsharp-model-rnncell.html
Generating tmp/watch/reference/diffsharp-model-vae.html
Generating tmp/watch/reference/diffsharp-model-weight.html
Generating tmp/watch/reference/diffsharp-optim-adam.html
Generating tmp/watch/reference/diffsharp-optim-optimizer.html
Generating tmp/watch/reference/diffsharp-optim-sgd.html
Generating tmp/watch/reference/diffsharp-optim-optim.html
Generating tmp/watch/reference/diffsharp-util-globalnestinglevel.html
Generating tmp/watch/reference/diffsharp-util-nestinglevel.html
Generating tmp/watch/reference/diffsharp-util-random.html
Write Content:
copying /home/gunes/.nuget/packages/fsharp.formatting.commandtool/11.2.0/extras/Dockerfile --> ./Dockerfile
copying /home/gunes/.nuget/packages/fsharp.formatting.commandtool/11.2.0/extras/NuGet.config --> ./NuGet.config
copying /home/gunes/.nuget/packages/fsharp.formatting.commandtool/11.2.0/extras/content/navbar-fixed-right.css --> ./content/navbar-fixed-right.css
copying /home/gunes/.nuget/packages/fsharp.formatting.commandtool/11.2.0/extras/content/fsdocs-custom.css --> ./content/fsdocs-custom.css
copying /home/gunes/.nuget/packages/fsharp.formatting.commandtool/11.2.0/extras/content/fsdocs-tips.js --> ./content/fsdocs-tips.js
copying /home/gunes/.nuget/packages/fsharp.formatting.commandtool/11.2.0/extras/content/fsdocs-default.css --> ./content/fsdocs-default.css
copying /home/gunes/.nuget/packages/fsharp.formatting.commandtool/11.2.0/extras/content/navbar-fixed-left.css --> ./content/navbar-fixed-left.css
copying /home/gunes/.nuget/packages/fsharp.formatting.commandtool/11.2.0/extras/content/fsdocs-search.js --> ./content/fsdocs-search.js
copying /home/gunes/.nuget/packages/fsharp.formatting.commandtool/11.2.0/extras/content/img/copy.png --> ./content/img/copy.png
copying /home/gunes/.nuget/packages/fsharp.formatting.commandtool/11.2.0/extras/content/img/copy-md.png --> ./content/img/copy-md.png
copying /home/gunes/.nuget/packages/fsharp.formatting.commandtool/11.2.0/extras/content/img/copy-md-blue.png --> ./content/img/copy-md-blue.png
copying /home/gunes/.nuget/packages/fsharp.formatting.commandtool/11.2.0/extras/content/img/copy-blue.png --> ./content/img/copy-blue.png
copying /home/gunes/.nuget/packages/fsharp.formatting.commandtool/11.2.0/extras/content/img/github.png --> ./content/img/github.png
copying /home/gunes/.nuget/packages/fsharp.formatting.commandtool/11.2.0/extras/content/img/github-blue.png --> ./content/img/github-blue.png
writing docs/tutorial-vae.fsx --> ./tutorial-vae.html
copying docs/mnist-samples.png --> ./mnist-samples.png
writing docs/tutorial-gan.fsx --> ./tutorial-gan.html
writing docs/install.fsx --> ./install.html
copying docs/Dockerfile --> ./Dockerfile
writing docs/extensions.fsx --> ./extensions.html
writing docs/probability-distributions.fsx --> ./probability-distributions.html
writing docs/tensors.fsx --> ./tensors.html
writing docs/optimization.fsx --> ./optimization.html
writing docs/quickstart.fsx --> ./quickstart.html
copying docs/favicon.ico --> ./favicon.ico
writing docs/test.fsx --> ./test.html
writing docs/nested-derivatives.fsx --> ./nested-derivatives.html
copying docs/mnist-sample.png --> ./mnist-sample.png
writing docs/index.fsx --> ./index.html
writing docs/models.fsx --> ./models.html
writing docs/tutorial-classifier.fsx --> ./tutorial-classifier.html
writing docs/README.md --> ./README.html
copying docs/test.png --> ./test.png
writing docs/tutorial-language.fsx --> ./tutorial-language.html
writing docs/differentiable-programming.fsx --> ./differentiable-programming.html
copying docs/img/anim-intro-2.gif --> ./img/anim-intro-2.gif
copying docs/img/diffsharp-logo-text.png --> ./img/diffsharp-logo-text.png
copying docs/img/badge-binder.svg --> ./img/badge-binder.svg
copying docs/img/badge-script.svg --> ./img/badge-script.svg
copying docs/img/badge-notebook.svg --> ./img/badge-notebook.svg
copying docs/img/diffsharp-logo.png --> ./img/diffsharp-logo.png
copying docs/img/anim-intro-1.gif --> ./img/anim-intro-1.gif
copying docs/content/fsdocs-custom.css --> ./content/fsdocs-custom.css
copying docs/content/fsdocs-default.css --> ./content/fsdocs-default.css
copying docs/content/img/copy.png --> ./content/img/copy.png
copying docs/content/img/copy-md.png --> ./content/img/copy-md.png
copying docs/content/img/copy-md-blue.png --> ./content/img/copy-md-blue.png
copying docs/content/img/copy-blue.png --> ./content/img/copy-blue.png
copying docs/content/img/github.png --> ./content/img/github.png
copying docs/content/img/github-blue.png --> ./content/img/github-blue.png
starting server on http://localhost:8901 for content in /home/gunes/git/github/DiffSharp/DiffSharp/tmp/watch
launching browser window to open http://localhost:8901/
Press any key to continue ...[14:57:15 INF] Smooth! Suave listener started in 22.115ms with binding 127.0.0.1:8901
Opening in existing browser session.
fsdocs output for Trial 3 (that worked):
dotnet fsdocs watch --eval --strict
restored project state from '.fsdocs/cache'
Inputs for API Docs:
/home/gunes/git/github/DiffSharp/DiffSharp/src/DiffSharp.Core/bin/Debug/netstandard2.1/DiffSharp.Core.dll
Substitutions/parameters:
root --> http://localhost:8901/
fsdocs-authors --> Atılım Güneş Baydin, Don Syme, Barak A. Pearlmutter, Jeffrey Siskind, and DiffSharp contributors
fsdocs-collection-name --> DiffSharp
fsdocs-collection-name-link --> https://diffsharp.github.io/
fsdocs-copyright --> Copyright 2014-2021
fsdocs-logo-src --> http://localhost:8901/img/logo.png
fsdocs-navbar-position --> fixed-left
fsdocs-theme --> default
fsdocs-logo-link --> https://diffsharp.github.io/
fsdocs-license-link --> https://github.com/DiffSharp/DiffSharp/blob/master/LICENSE.md
fsdocs-release-notes-link --> https://github.com/DiffSharp/DiffSharp/blob/master/RELEASE_NOTES.md
fsdocs-package-project-url --> https://diffsharp.github.io/
fsdocs-package-license-expression --> BSD-2-Clause
fsdocs-package-tags --> F# fsharp ML AI Machine Learning PyTorch Tensor Automatic Differentiation Gradients
fsdocs-package-version --> 1.0.0-local-210719
fsdocs-repository-link --> https://github.com/DiffSharp/DiffSharp/
fsdocs-repository-branch --> dev
root --> http://localhost:8901/
using extra content from /home/gunes/.nuget/packages/fsharp.formatting.commandtool/11.2.0/extras
Building docs first time...
API docs:
generating model for 1 assemblies in API docs...
loading 1 assemblies...
isNetCoreApp = true
registering entities for assembly DiffSharp.Core...
reading XML doc for /home/gunes/git/github/DiffSharp/DiffSharp/src/DiffSharp.Core/bin/Debug/netstandard2.1/DiffSharp.Core.dll...
reading assembly data for /home/gunes/git/github/DiffSharp/DiffSharp/src/DiffSharp.Core/bin/Debug/netstandard2.1/DiffSharp.Core.dll...
collecting namespaces...
found namespace DiffSharp in assembly DiffSharp.Core...
found namespace DiffSharp.Backends in assembly DiffSharp.Core...
found namespace DiffSharp.Data in assembly DiffSharp.Core...
found namespace DiffSharp.Distributions in assembly DiffSharp.Core...
found namespace DiffSharp.Model in assembly DiffSharp.Core...
found namespace DiffSharp.Optim in assembly DiffSharp.Core...
found namespace DiffSharp.Util in assembly DiffSharp.Core...
found 25 entities in namespace DiffSharp...
found 2 entities in namespace DiffSharp.Backends...
found 5 entities in namespace DiffSharp.Data...
found 7 entities in namespace DiffSharp.Distributions...
found 24 entities in namespace DiffSharp.Model...
found 4 entities in namespace DiffSharp.Optim...
found 11 entities in namespace DiffSharp.Util...
found 7 namespaces...
Content:
generating model for docs/tutorial-vae.fsx --> ./tutorial-vae.html
generating model for docs/tutorial-gan.fsx --> ./tutorial-gan.html
generating model for docs/install.fsx --> ./install.html
generating model for docs/extensions.fsx --> ./extensions.html
generating model for docs/probability-distributions.fsx --> ./probability-distributions.html
generating model for docs/tensors.fsx --> ./tensors.html
generating model for docs/optimization.fsx --> ./optimization.html
generating model for docs/quickstart.fsx --> ./quickstart.html
generating model for docs/test.fsx --> ./test.html
generating model for docs/test.fsx --> ./test.ipynb
generating model for docs/test.fsx --> ./test.fsx
generating model for docs/nested-derivatives.fsx --> ./nested-derivatives.html
generating model for docs/index.fsx --> ./index.html
generating model for docs/models.fsx --> ./models.html
generating model for docs/tutorial-classifier.fsx --> ./tutorial-classifier.html
preparing docs/README.md --> ./README.html
generating model for docs/tutorial-language.fsx --> ./tutorial-language.html
generating model for docs/differentiable-programming.fsx --> ./differentiable-programming.html
Write API Docs:
Generating tmp/watch/reference/index.html
Generating tmp/watch/reference/diffsharp.html
Generating tmp/watch/reference/diffsharp-backends.html
Generating tmp/watch/reference/diffsharp-data.html
Generating tmp/watch/reference/diffsharp-distributions.html
Generating tmp/watch/reference/diffsharp-model.html
Generating tmp/watch/reference/diffsharp-optim.html
Generating tmp/watch/reference/diffsharp-util.html
Generating tmp/watch/reference/diffsharp-backendmodule.html
Generating tmp/watch/reference/diffsharp-compose.html
Generating tmp/watch/reference/diffsharp-devicemodule.html
Generating tmp/watch/reference/diffsharp-dtypemodule.html
Generating tmp/watch/reference/diffsharp-dtypeautoopens.html
Generating tmp/watch/reference/diffsharp-numerical.html
Generating tmp/watch/reference/diffsharp-numerical-shorten.html
Generating tmp/watch/reference/diffsharp-scalarextensions.html
Generating tmp/watch/reference/diffsharp-shapemodule.html
Generating tmp/watch/reference/diffsharp-shapeautoopens.html
Generating tmp/watch/reference/diffsharp-shorten.html
Generating tmp/watch/reference/diffsharp-slicingextensions.html
Generating tmp/watch/reference/diffsharp-model-modelautoopens.html
Generating tmp/watch/reference/diffsharp-util-array.html
Generating tmp/watch/reference/diffsharp-util-arraynd.html
Generating tmp/watch/reference/diffsharp-util-dataconverter.html
Generating tmp/watch/reference/diffsharp-util-dictionary.html
Generating tmp/watch/reference/diffsharp-util-extensionautoopens.html
Generating tmp/watch/reference/diffsharp-util-randommodule.html
Generating tmp/watch/reference/diffsharp-util-seq.html
Generating tmp/watch/reference/diffsharp-util-utilautoopens.html
Generating tmp/watch/reference/diffsharp-backend.html
Generating tmp/watch/reference/diffsharp-backendfunctionality-1.html
Generating tmp/watch/reference/diffsharp-binaryop.html
Generating tmp/watch/reference/diffsharp-binaryopelementwise.html
Generating tmp/watch/reference/diffsharp-device.html
Generating tmp/watch/reference/diffsharp-devicetype.html
Generating tmp/watch/reference/diffsharp-dtype.html
Generating tmp/watch/reference/diffsharp-shape.html
Generating tmp/watch/reference/diffsharp-tensor.html
Generating tmp/watch/reference/diffsharp-tensorop.html
Generating tmp/watch/reference/diffsharp-unaryop.html
Generating tmp/watch/reference/diffsharp-unaryopelementwise.html
Generating tmp/watch/reference/diffsharp-dsharp.html
Generating tmp/watch/reference/diffsharp-scalar.html
Generating tmp/watch/reference/diffsharp-backends-backendtensorstatics.html
Generating tmp/watch/reference/diffsharp-backends-rawtensor.html
Generating tmp/watch/reference/diffsharp-data-dataloader.html
Generating tmp/watch/reference/diffsharp-data-dataset.html
Generating tmp/watch/reference/diffsharp-data-datasetsubset.html
Generating tmp/watch/reference/diffsharp-data-tensordataset.html
Generating tmp/watch/reference/diffsharp-data-textdataset.html
Generating tmp/watch/reference/diffsharp-distributions-bernoulli.html
Generating tmp/watch/reference/diffsharp-distributions-categorical.html
Generating tmp/watch/reference/diffsharp-distributions-distribution-1.html
Generating tmp/watch/reference/diffsharp-distributions-empirical-1.html
Generating tmp/watch/reference/diffsharp-distributions-normal.html
Generating tmp/watch/reference/diffsharp-distributions-tensordistribution.html
Generating tmp/watch/reference/diffsharp-distributions-uniform.html
Generating tmp/watch/reference/diffsharp-model-batchnorm1d.html
Generating tmp/watch/reference/diffsharp-model-batchnorm2d.html
Generating tmp/watch/reference/diffsharp-model-batchnorm3d.html
Generating tmp/watch/reference/diffsharp-model-conv1d.html
Generating tmp/watch/reference/diffsharp-model-conv2d.html
Generating tmp/watch/reference/diffsharp-model-conv3d.html
Generating tmp/watch/reference/diffsharp-model-convtranspose1d.html
Generating tmp/watch/reference/diffsharp-model-convtranspose2d.html
Generating tmp/watch/reference/diffsharp-model-convtranspose3d.html
Generating tmp/watch/reference/diffsharp-model-dropout.html
Generating tmp/watch/reference/diffsharp-model-dropout2d.html
Generating tmp/watch/reference/diffsharp-model-dropout3d.html
Generating tmp/watch/reference/diffsharp-model-lstm.html
Generating tmp/watch/reference/diffsharp-model-lstmcell.html
Generating tmp/watch/reference/diffsharp-model-linear.html
Generating tmp/watch/reference/diffsharp-model-mode.html
Generating tmp/watch/reference/diffsharp-model-model.html
Generating tmp/watch/reference/diffsharp-model-parameter.html
Generating tmp/watch/reference/diffsharp-model-parameterdict.html
Generating tmp/watch/reference/diffsharp-model-rnn.html
Generating tmp/watch/reference/diffsharp-model-rnncell.html
Generating tmp/watch/reference/diffsharp-model-vae.html
Generating tmp/watch/reference/diffsharp-model-weight.html
Generating tmp/watch/reference/diffsharp-optim-adam.html
Generating tmp/watch/reference/diffsharp-optim-optimizer.html
Generating tmp/watch/reference/diffsharp-optim-sgd.html
Generating tmp/watch/reference/diffsharp-optim-optim.html
Generating tmp/watch/reference/diffsharp-util-globalnestinglevel.html
Generating tmp/watch/reference/diffsharp-util-nestinglevel.html
Generating tmp/watch/reference/diffsharp-util-random.html
Write Content:
copying /home/gunes/.nuget/packages/fsharp.formatting.commandtool/11.2.0/extras/Dockerfile --> ./Dockerfile
copying /home/gunes/.nuget/packages/fsharp.formatting.commandtool/11.2.0/extras/NuGet.config --> ./NuGet.config
copying /home/gunes/.nuget/packages/fsharp.formatting.commandtool/11.2.0/extras/content/navbar-fixed-right.css --> ./content/navbar-fixed-right.css
copying /home/gunes/.nuget/packages/fsharp.formatting.commandtool/11.2.0/extras/content/fsdocs-custom.css --> ./content/fsdocs-custom.css
copying /home/gunes/.nuget/packages/fsharp.formatting.commandtool/11.2.0/extras/content/fsdocs-tips.js --> ./content/fsdocs-tips.js
copying /home/gunes/.nuget/packages/fsharp.formatting.commandtool/11.2.0/extras/content/fsdocs-default.css --> ./content/fsdocs-default.css
copying /home/gunes/.nuget/packages/fsharp.formatting.commandtool/11.2.0/extras/content/navbar-fixed-left.css --> ./content/navbar-fixed-left.css
copying /home/gunes/.nuget/packages/fsharp.formatting.commandtool/11.2.0/extras/content/fsdocs-search.js --> ./content/fsdocs-search.js
copying /home/gunes/.nuget/packages/fsharp.formatting.commandtool/11.2.0/extras/content/img/copy.png --> ./content/img/copy.png
copying /home/gunes/.nuget/packages/fsharp.formatting.commandtool/11.2.0/extras/content/img/copy-md.png --> ./content/img/copy-md.png
copying /home/gunes/.nuget/packages/fsharp.formatting.commandtool/11.2.0/extras/content/img/copy-md-blue.png --> ./content/img/copy-md-blue.png
copying /home/gunes/.nuget/packages/fsharp.formatting.commandtool/11.2.0/extras/content/img/copy-blue.png --> ./content/img/copy-blue.png
copying /home/gunes/.nuget/packages/fsharp.formatting.commandtool/11.2.0/extras/content/img/github.png --> ./content/img/github.png
copying /home/gunes/.nuget/packages/fsharp.formatting.commandtool/11.2.0/extras/content/img/github-blue.png --> ./content/img/github-blue.png
writing docs/tutorial-vae.fsx --> ./tutorial-vae.html
copying docs/mnist-samples.png --> ./mnist-samples.png
writing docs/tutorial-gan.fsx --> ./tutorial-gan.html
writing docs/install.fsx --> ./install.html
copying docs/Dockerfile --> ./Dockerfile
writing docs/extensions.fsx --> ./extensions.html
writing docs/probability-distributions.fsx --> ./probability-distributions.html
writing docs/tensors.fsx --> ./tensors.html
writing docs/optimization.fsx --> ./optimization.html
writing docs/quickstart.fsx --> ./quickstart.html
copying docs/favicon.ico --> ./favicon.ico
writing docs/test.fsx --> ./test.html
writing docs/test.fsx --> ./test.ipynb
writing docs/test.fsx --> ./test.fsx
writing docs/nested-derivatives.fsx --> ./nested-derivatives.html
copying docs/mnist-sample.png --> ./mnist-sample.png
writing docs/index.fsx --> ./index.html
writing docs/models.fsx --> ./models.html
writing docs/tutorial-classifier.fsx --> ./tutorial-classifier.html
writing docs/README.md --> ./README.html
copying docs/test.png --> ./test.png
writing docs/tutorial-language.fsx --> ./tutorial-language.html
writing docs/differentiable-programming.fsx --> ./differentiable-programming.html
copying docs/img/anim-intro-2.gif --> ./img/anim-intro-2.gif
copying docs/img/diffsharp-logo-text.png --> ./img/diffsharp-logo-text.png
copying docs/img/badge-binder.svg --> ./img/badge-binder.svg
copying docs/img/badge-script.svg --> ./img/badge-script.svg
copying docs/img/badge-notebook.svg --> ./img/badge-notebook.svg
copying docs/img/diffsharp-logo.png --> ./img/diffsharp-logo.png
copying docs/img/anim-intro-1.gif --> ./img/anim-intro-1.gif
copying docs/content/fsdocs-custom.css --> ./content/fsdocs-custom.css
copying docs/content/fsdocs-default.css --> ./content/fsdocs-default.css
copying docs/content/img/copy.png --> ./content/img/copy.png
copying docs/content/img/copy-md.png --> ./content/img/copy-md.png
copying docs/content/img/copy-md-blue.png --> ./content/img/copy-md-blue.png
copying docs/content/img/copy-blue.png --> ./content/img/copy-blue.png
copying docs/content/img/github.png --> ./content/img/github.png
copying docs/content/img/github-blue.png --> ./content/img/github-blue.png
starting server on http://localhost:8901 for content in /home/gunes/git/github/DiffSharp/DiffSharp/tmp/watch
launching browser window to open http://localhost:8901/
Press any key to continue ...[14:58:33 INF] Smooth! Suave listener started in 21.681ms with binding 127.0.0.1:8901
Opening in existing browser session.
I'm writing DiffSharp docs using the tools in this repo. I need to make use of literate scripts to produce docs that have F# code executed with the
--eval
argument offsdocs
tool.This is the test script I'm using in my machine. Call this
test.fsx
in the/docs
folder of my repo:The code needs to load a native library, called
libtorch.so
in Linux, to work correctly.Trial 1
When I run the script file with
dotnet fsi test.fsx
, things work fine and this is the output:But when I build the docs with
fsdocs watch --eval --strict
, I get the following page rendeded. The code doesn't work and(*** include-output ***)
doesn't work.Trial 2
If I make the change
dsharp.config(backend=Backend.Torch)
->dsharp.config(backend=Backend.Reference)
in thetest.fsx
file so that I haveit still fails in the same way with Trial 1.
Trial 3
If I comment out the native library load code, so that I have
html output works as expected.
My conclusion
Because the native library load breaks both
Backend.Reference
(that doesn't need the native library) andBackend.Torch
(that needs the native library) cases, this tells me that the native library load somehow breaks fsdocs.In none of these examples I get any indication of an error in fsdocs output. I'm copying it below. Debugging this really difficult because it works fine in
fsi
and I get no error at all infsdocs
so I did lots of blind debugging and this is the summary of what I found out so far.fsdocs output for Trial 2 (that failed)
fsdocs output for Trial 3 (that worked):