Organisationsahrefsocannl89301c ()debian-11-5.3_opam-2.3

debian-11-5.3_opam-2.3

Link Copied
Code Copied

Logs

2025-07-14 11:15.21: New job: test ahrefs/ocannl https://github.com/ahrefs/ocannl.git#refs/heads/master (89301cec4e85065a5b2c7c8c473760c0388f4384) (linux-x86_64:debian-11-5.3_opam-2.3)
Base: ocaml/opam:debian-11-ocaml-5.3@sha256:43a03fb36796baaf762ae63bd7f74dbb592d8297001f23e28e80e857c5fc28a5
Opam project build


To reproduce locally:


git clone --recursive "https://github.com/ahrefs/ocannl.git" -b "master" && cd "ocannl" && git reset --hard 89301cec
cat > Dockerfile <<'END-OF-DOCKERFILE'
FROM ocaml/opam:debian-11-ocaml-5.3@sha256:43a03fb36796baaf762ae63bd7f74dbb592d8297001f23e28e80e857c5fc28a5
# debian-11-5.3_opam-2.3
USER 1000:1000
ENV CLICOLOR_FORCE="1"
ENV OPAMCOLOR="always"
WORKDIR /src
RUN sudo ln -f /usr/bin/opam-2.3 /usr/bin/opam
RUN opam init --reinit -ni
RUN uname -rs && opam exec -- ocaml -version && opam --version
WORKDIR /src
RUN sudo chown opam /src
RUN cd ~/opam-repository && (git cat-file -e 64169c3d1d6774ef4ce0fcc471269bb09cd215f5 || git fetch origin master) && git reset -q --hard 64169c3d1d6774ef4ce0fcc471269bb09cd215f5 && git log --no-decorate -n1 --oneline && opam update -u
COPY --chown=1000:1000 neural_nets_lib.opam arrayjit.opam ./
RUN opam pin add -yn neural_nets_lib.dev './' && \
opam pin add -yn arrayjit.dev './'
RUN echo '(lang dune 3.0)' > './dune-project'
ENV DEPS="angstrom.0.16.1 astring.0.8.5 backoff.0.1.1 base.v0.17.3 base-bigarray.base base-bytes.base base-domains.base base-effects.base base-nnp.base base-threads.base base-unix.base bigarray-compat.1.1.0 bigstringaf.0.10.0 camlp-streams.5.0.1 camlzip.1.13 cmdliner.1.3.0 conf-libcurl.2 conf-libffi.2.0.0 conf-pkg-config.4 conf-zlib.1 cppo.1.8.0 csexp.1.5.2 csv.2.4 ctypes.0.23.0 ctypes-foreign.0.23.0 curl.0.10.0 dune.3.19.1 dune-configurator.3.19.1 fieldslib.v0.17.0 fmt.0.10.0 integers.0.7.0 jane-street-headers.v0.17.0 jst-config.v0.17.0 logs.0.9.0 mdx.2.5.0 mtime.2.1.0 multicore-magic.2.3.1 num.1.6 ocaml.5.3.0 ocaml-base-compiler.5.3.0 ocaml-compiler.5.3.0 ocaml-compiler-libs.v0.17.0 ocaml-config.3 ocaml-options-vanilla.1 ocaml-syntax-shims.1.0.0 ocaml-version.4.0.1 ocaml_intrinsics_kernel.v0.17.1 ocamlbuild.0.16.1 ocamlfind.1.9.8 parsexp.v0.17.0 pprint.20230830 ppx_assert.v0.17.0 ppx_base.v0.17.0 ppx_cold.v0.17.0 ppx_compare.v0.17.0 ppx_derivers.1.2.1 ppx_deriving.6.1.0 ppx_enumerate.v0.17.0 ppx_expect.v0.17.3 ppx_fields_conv.v0.17.0 ppx_globalize.v0.17.2 ppx_hash.v0.17.0 ppx_here.v0.17.0 ppx_inline_test.v0.17.1 ppx_minidebug.2.3.0 ppx_optcomp.v0.17.1 ppx_sexp_conv.v0.17.1 ppx_string.v0.17.0 ppx_variants_conv.v0.17.1 ppxlib.0.36.0 ppxlib_jane.v0.17.4 printbox.0.12 printbox-ext-plot.0.12 printbox-html.0.12 printbox-md.0.12 printbox-text.0.12 ptime.1.2.0 re.1.13.2 result.1.5 saturn_lockfree.0.5.0 seq.base sexplib.v0.17.0 sexplib0.v0.17.0 stdio.v0.17.0 stdlib-shims.0.3.0 thread-local-storage.0.2 time_now.v0.17.0 topkg.1.0.8 tyxml.4.6.0 uucp.16.0.0 uutf.1.0.4 variantslib.v0.17.0"
ENV CI="true"
ENV OCAMLCI="true"
RUN opam update --depexts && opam install --cli=2.3 --depext-only -y neural_nets_lib.dev arrayjit.dev $DEPS
RUN opam install $DEPS
COPY --chown=1000:1000 . /src
RUN opam exec -- dune build @install @check @runtest && rm -rf _build


END-OF-DOCKERFILE
docker build .
END-REPRO-BLOCK


2025-07-14 11:15.21: Using cache hint "ahrefs/ocannl-ocaml/opam:debian-11-ocaml-5.3@sha256:43a03fb36796baaf762ae63bd7f74dbb592d8297001f23e28e80e857c5fc28a5-debian-11-5.3_opam-2.3-ee06dfbb3e21290708c2c8a6224283e3"
2025-07-14 11:15.21: Using OBuilder spec:
((from ocaml/opam:debian-11-ocaml-5.3@sha256:43a03fb36796baaf762ae63bd7f74dbb592d8297001f23e28e80e857c5fc28a5)
(comment debian-11-5.3_opam-2.3)
(user (uid 1000) (gid 1000))
(env CLICOLOR_FORCE 1)
(env OPAMCOLOR always)
(workdir /src)
(run (shell "sudo ln -f /usr/bin/opam-2.3 /usr/bin/opam"))
(run (shell "opam init --reinit -ni"))
(run (shell "uname -rs && opam exec -- ocaml -version && opam --version"))
(workdir /src)
(run (shell "sudo chown opam /src"))
(run (cache (opam-archives (target /home/opam/.opam/download-cache)))
(network host)
(shell "cd ~/opam-repository && (git cat-file -e 64169c3d1d6774ef4ce0fcc471269bb09cd215f5 || git fetch origin master) && git reset -q --hard 64169c3d1d6774ef4ce0fcc471269bb09cd215f5 && git log --no-decorate -n1 --oneline && opam update -u"))
(copy (src neural_nets_lib.opam arrayjit.opam) (dst ./))
(run (network host)
(shell  "opam pin add -yn neural_nets_lib.dev './' && \
\nopam pin add -yn arrayjit.dev './'"))
(run (network host)
(shell "echo '(lang dune 3.0)' > './dune-project'"))
(env DEPS "angstrom.0.16.1 astring.0.8.5 backoff.0.1.1 base.v0.17.3 base-bigarray.base base-bytes.base base-domains.base base-effects.base base-nnp.base base-threads.base base-unix.base bigarray-compat.1.1.0 bigstringaf.0.10.0 camlp-streams.5.0.1 camlzip.1.13 cmdliner.1.3.0 conf-libcurl.2 conf-libffi.2.0.0 conf-pkg-config.4 conf-zlib.1 cppo.1.8.0 csexp.1.5.2 csv.2.4 ctypes.0.23.0 ctypes-foreign.0.23.0 curl.0.10.0 dune.3.19.1 dune-configurator.3.19.1 fieldslib.v0.17.0 fmt.0.10.0 integers.0.7.0 jane-street-headers.v0.17.0 jst-config.v0.17.0 logs.0.9.0 mdx.2.5.0 mtime.2.1.0 multicore-magic.2.3.1 num.1.6 ocaml.5.3.0 ocaml-base-compiler.5.3.0 ocaml-compiler.5.3.0 ocaml-compiler-libs.v0.17.0 ocaml-config.3 ocaml-options-vanilla.1 ocaml-syntax-shims.1.0.0 ocaml-version.4.0.1 ocaml_intrinsics_kernel.v0.17.1 ocamlbuild.0.16.1 ocamlfind.1.9.8 parsexp.v0.17.0 pprint.20230830 ppx_assert.v0.17.0 ppx_base.v0.17.0 ppx_cold.v0.17.0 ppx_compare.v0.17.0 ppx_derivers.1.2.1 ppx_deriving.6.1.0 ppx_enumerate.v0.17.0 ppx_expect.v0.17.3 ppx_fields_conv.v0.17.0 ppx_globalize.v0.17.2 ppx_hash.v0.17.0 ppx_here.v0.17.0 ppx_inline_test.v0.17.1 ppx_minidebug.2.3.0 ppx_optcomp.v0.17.1 ppx_sexp_conv.v0.17.1 ppx_string.v0.17.0 ppx_variants_conv.v0.17.1 ppxlib.0.36.0 ppxlib_jane.v0.17.4 printbox.0.12 printbox-ext-plot.0.12 printbox-html.0.12 printbox-md.0.12 printbox-text.0.12 ptime.1.2.0 re.1.13.2 result.1.5 saturn_lockfree.0.5.0 seq.base sexplib.v0.17.0 sexplib0.v0.17.0 stdio.v0.17.0 stdlib-shims.0.3.0 thread-local-storage.0.2 time_now.v0.17.0 topkg.1.0.8 tyxml.4.6.0 uucp.16.0.0 uutf.1.0.4 variantslib.v0.17.0")
(env CI true)
(env OCAMLCI true)
(run (cache (opam-archives (target /home/opam/.opam/download-cache)))
(network host)
(shell "opam update --depexts && opam install --cli=2.3 --depext-only -y neural_nets_lib.dev arrayjit.dev $DEPS"))
(run (cache (opam-archives (target /home/opam/.opam/download-cache)))
(network host)
(shell "opam install $DEPS"))
(copy (src .) (dst /src))
(run (shell "opam exec -- dune build @install @check @runtest && rm -rf _build"))
)


2025-07-14 11:15.21: Waiting for resource in pool OCluster
2025-07-14 11:15.22: Waiting for worker…
2025-07-14 11:15.22: Got resource from pool OCluster
Building on laodoke.caelum.ci.dev
All commits already cached
HEAD is now at 89301cec Missing from the previous commit


(from ocaml/opam:debian-11-ocaml-5.3@sha256:43a03fb36796baaf762ae63bd7f74dbb592d8297001f23e28e80e857c5fc28a5)
2025-07-14 11:15.23 ---> using "94a877740157981fe98428591f275170964b788c437a4f221796b9f9335e0dae" from cache


/: (comment debian-11-5.3_opam-2.3)


/: (user (uid 1000) (gid 1000))


/: (env CLICOLOR_FORCE 1)


/: (env OPAMCOLOR always)


/: (workdir /src)


/src: (run (shell "sudo ln -f /usr/bin/opam-2.3 /usr/bin/opam"))
2025-07-14 11:15.23 ---> using "c0a645459536d951f5bbb516ad4dd040ca872e347e7a5a349489b2a199b9f706" from cache


/src: (run (shell "opam init --reinit -ni"))
Configuring from /home/opam/.opamrc and then from built-in defaults.
Checking for available remotes: rsync and local, git.
- you won't be able to use mercurial repositories unless you install the hg command on your system.
- you won't be able to use darcs repositories unless you install the darcs command on your system.


This development version of opam requires an update to the layout of /home/opam/.opam from version 2.0 to version 2.2, which can't be reverted.
You may want to back it up before going further.


Continue? [y/n] y
[NOTE] The 'jobs' option was reset, its value was 255 and its new value will vary according to the current number of cores on your machine. You can restore the fixed value using:
opam option jobs=255 --global
Format upgrade done.


<><> Updating repositories ><><><><><><><><><><><><><><><><><><><><><><><><><><>
[default] Initialised
2025-07-14 11:15.23 ---> using "964e1e49d0393b87c9a2106080de9a91df478d2eb6ff34e69be4c26a6fea4d0f" from cache


/src: (run (shell "uname -rs && opam exec -- ocaml -version && opam --version"))
Linux 5.15.0-142-generic
The OCaml toplevel, version 5.3.0
2.3.0
2025-07-14 11:15.23 ---> using "f835eec73a997a06e0e0600ba4a6d1bce98343961d04daaef65558b951a8ccb2" from cache


/src: (workdir /src)


/src: (run (shell "sudo chown opam /src"))
2025-07-14 11:15.23 ---> using "9c0e1ede099947279487dac2074a786ab4f0bd61ff80c1622ad64bc72462233b" from cache


/src: (run (cache (opam-archives (target /home/opam/.opam/download-cache)))
(network host)
(shell "cd ~/opam-repository && (git cat-file -e 64169c3d1d6774ef4ce0fcc471269bb09cd215f5 || git fetch origin master) && git reset -q --hard 64169c3d1d6774ef4ce0fcc471269bb09cd215f5 && git log --no-decorate -n1 --oneline && opam update -u"))
From https://github.com/ocaml/opam-repository
* branch                  master     -> FETCH_HEAD
6dea2f9390..0094db1438  master     -> origin/master
64169c3d1d Merge pull request #28149 from dbuenzli/b0-publish-logs.0.9.0


<><> Updating package repositories ><><><><><><><><><><><><><><><><><><><><><><>
[default] synchronised from git+file:///home/opam/opam-repository


Everything as up-to-date as possible (run with --verbose to show unavailable upgrades).
However, you may "opam upgrade" these packages explicitly, which will ask permission to downgrade or uninstall the conflicting packages.
Nothing to do.
# To update the current shell environment, run: eval $(opam env)
2025-07-14 11:15.23 ---> using "6d6cbe6b4a83c8bfacdc58c5d4976310d6904628f22d4bd93929ee6a13958dd9" from cache


/src: (copy (src neural_nets_lib.opam arrayjit.opam) (dst ./))
2025-07-14 11:15.23 ---> using "2f46aa875e23d4a55b049d9331aa350f6a4a54566da931311b2f974934c59bd2" from cache


/src: (run (network host)
(shell  "opam pin add -yn neural_nets_lib.dev './' && \
\nopam pin add -yn arrayjit.dev './'"))
[neural_nets_lib.dev] synchronised (file:///src)
neural_nets_lib is now pinned to file:///src (version dev)
[arrayjit.dev] synchronised (file:///src)
arrayjit is now pinned to file:///src (version dev)
2025-07-14 11:15.23 ---> using "0177afec53aeae7de25df2c3743121bd61990c5c6ce0aed274050cfb414d6cb7" from cache


/src: (run (network host)
(shell "echo '(lang dune 3.0)' > './dune-project'"))
2025-07-14 11:15.23 ---> using "3d72d56bc3bc6295684b85986744f6e79e705fd1a24c89a54fac2755a9551ab0" from cache


/src: (env DEPS "angstrom.0.16.1 astring.0.8.5 backoff.0.1.1 base.v0.17.3 base-bigarray.base base-bytes.base base-domains.base base-effects.base base-nnp.base base-threads.base base-unix.base bigarray-compat.1.1.0 bigstringaf.0.10.0 camlp-streams.5.0.1 camlzip.1.13 cmdliner.1.3.0 conf-libcurl.2 conf-libffi.2.0.0 conf-pkg-config.4 conf-zlib.1 cppo.1.8.0 csexp.1.5.2 csv.2.4 ctypes.0.23.0 ctypes-foreign.0.23.0 curl.0.10.0 dune.3.19.1 dune-configurator.3.19.1 fieldslib.v0.17.0 fmt.0.10.0 integers.0.7.0 jane-street-headers.v0.17.0 jst-config.v0.17.0 logs.0.9.0 mdx.2.5.0 mtime.2.1.0 multicore-magic.2.3.1 num.1.6 ocaml.5.3.0 ocaml-base-compiler.5.3.0 ocaml-compiler.5.3.0 ocaml-compiler-libs.v0.17.0 ocaml-config.3 ocaml-options-vanilla.1 ocaml-syntax-shims.1.0.0 ocaml-version.4.0.1 ocaml_intrinsics_kernel.v0.17.1 ocamlbuild.0.16.1 ocamlfind.1.9.8 parsexp.v0.17.0 pprint.20230830 ppx_assert.v0.17.0 ppx_base.v0.17.0 ppx_cold.v0.17.0 ppx_compare.v0.17.0 ppx_derivers.1.2.1 ppx_deriving.6.1.0 ppx_enumerate.v0.17.0 ppx_expect.v0.17.3 ppx_fields_conv.v0.17.0 ppx_globalize.v0.17.2 ppx_hash.v0.17.0 ppx_here.v0.17.0 ppx_inline_test.v0.17.1 ppx_minidebug.2.3.0 ppx_optcomp.v0.17.1 ppx_sexp_conv.v0.17.1 ppx_string.v0.17.0 ppx_variants_conv.v0.17.1 ppxlib.0.36.0 ppxlib_jane.v0.17.4 printbox.0.12 printbox-ext-plot.0.12 printbox-html.0.12 printbox-md.0.12 printbox-text.0.12 ptime.1.2.0 re.1.13.2 result.1.5 saturn_lockfree.0.5.0 seq.base sexplib.v0.17.0 sexplib0.v0.17.0 stdio.v0.17.0 stdlib-shims.0.3.0 thread-local-storage.0.2 time_now.v0.17.0 topkg.1.0.8 tyxml.4.6.0 uucp.16.0.0 uutf.1.0.4 variantslib.v0.17.0")


/src: (env CI true)


/src: (env OCAMLCI true)


/src: (run (cache (opam-archives (target /home/opam/.opam/download-cache)))
(network host)
(shell "opam update --depexts && opam install --cli=2.3 --depext-only -y neural_nets_lib.dev arrayjit.dev $DEPS"))
+ /usr/bin/sudo "apt-get" "update"
- Hit:1 http://deb.debian.org/debian bullseye InRelease
- Get:2 http://deb.debian.org/debian-security bullseye-security InRelease [27.2 kB]
- Get:3 http://deb.debian.org/debian bullseye-updates InRelease [44.0 kB]
- Get:4 http://deb.debian.org/debian-security bullseye-security/main amd64 Packages [384 kB]
- Fetched 455 kB in 5s (83.4 kB/s)
- Reading package lists...
- 


<><> Synchronising pinned packages ><><><><><><><><><><><><><><><><><><><><><><>
[arrayjit.dev] synchronised (file:///src)
[neural_nets_lib.dev] synchronised (file:///src)


[NOTE] Package ocaml-options-vanilla is already installed (current version is 1).
[NOTE] Package ocaml-config is already installed (current version is 3).
[NOTE] Package ocaml-compiler is already installed (current version is 5.3.0).
[NOTE] Package ocaml-base-compiler is already installed (current version is 5.3.0).
[NOTE] Package ocaml is already installed (current version is 5.3.0).
[NOTE] Package base-unix is already installed (current version is base).
[NOTE] Package base-threads is already installed (current version is base).
[NOTE] Package base-nnp is already installed (current version is base).
[NOTE] Package base-effects is already installed (current version is base).
[NOTE] Package base-domains is already installed (current version is base).
[NOTE] Package base-bigarray is already installed (current version is base).


The following system packages will first need to be installed:
libcurl4-gnutls-dev libffi-dev pkg-config zlib1g-dev


<><> Handling external dependencies <><><><><><><><><><><><><><><><><><><><><><>


+ /usr/bin/sudo "apt-get" "install" "-qq" "-yy" "libcurl4-gnutls-dev" "libffi-dev" "pkg-config" "zlib1g-dev"
- debconf: delaying package configuration, since apt-utils is not installed
- Selecting previously unselected package libcurl4-gnutls-dev:amd64.
- (Reading database ... 
(Reading database ... 5%
(Reading database ... 10%
(Reading database ... 15%
(Reading database ... 20%
(Reading database ... 25%
(Reading database ... 30%
(Reading database ... 35%
(Reading database ... 40%
(Reading database ... 45%
(Reading database ... 50%
(Reading database ... 55%
(Reading database ... 60%
(Reading database ... 65%
(Reading database ... 70%
(Reading database ... 75%
(Reading database ... 80%
(Reading database ... 85%
(Reading database ... 90%
(Reading database ... 95%
(Reading database ... 100%
(Reading database ... 18367 files and directories currently installed.)
- Preparing to unpack .../0-libcurl4-gnutls-dev_7.74.0-1.3+deb11u15_amd64.deb ...
- Unpacking libcurl4-gnutls-dev:amd64 (7.74.0-1.3+deb11u15) ...
- Selecting previously unselected package libffi-dev:amd64.
- Preparing to unpack .../1-libffi-dev_3.3-6_amd64.deb ...
- Unpacking libffi-dev:amd64 (3.3-6) ...
- Selecting previously unselected package libglib2.0-0:amd64.
- Preparing to unpack .../2-libglib2.0-0_2.66.8-1+deb11u6_amd64.deb ...
- Unpacking libglib2.0-0:amd64 (2.66.8-1+deb11u6) ...
- Selecting previously unselected package libglib2.0-data.
- Preparing to unpack .../3-libglib2.0-data_2.66.8-1+deb11u6_all.deb ...
- Unpacking libglib2.0-data (2.66.8-1+deb11u6) ...
- Selecting previously unselected package libicu67:amd64.
- Preparing to unpack .../4-libicu67_67.1-7+deb11u1_amd64.deb ...
- Unpacking libicu67:amd64 (67.1-7+deb11u1) ...
- Selecting previously unselected package libxml2:amd64.
- Preparing to unpack .../5-libxml2_2.9.10+dfsg-6.7+deb11u7_amd64.deb ...
- Unpacking libxml2:amd64 (2.9.10+dfsg-6.7+deb11u7) ...
- Selecting previously unselected package pkg-config.
- Preparing to unpack .../6-pkg-config_0.29.2-1_amd64.deb ...
- Unpacking pkg-config (0.29.2-1) ...
- Selecting previously unselected package shared-mime-info.
- Preparing to unpack .../7-shared-mime-info_2.0-1_amd64.deb ...
- Unpacking shared-mime-info (2.0-1) ...
- Selecting previously unselected package xdg-user-dirs.
- Preparing to unpack .../8-xdg-user-dirs_0.17-2_amd64.deb ...
- Unpacking xdg-user-dirs (0.17-2) ...
- Selecting previously unselected package zlib1g-dev:amd64.
- Preparing to unpack .../9-zlib1g-dev_1%3a1.2.11.dfsg-2+deb11u2_amd64.deb ...
- Unpacking zlib1g-dev:amd64 (1:1.2.11.dfsg-2+deb11u2) ...
- Setting up libicu67:amd64 (67.1-7+deb11u1) ...
- Setting up xdg-user-dirs (0.17-2) ...
- Setting up libglib2.0-0:amd64 (2.66.8-1+deb11u6) ...
- No schema files found: doing nothing.
- Setting up libcurl4-gnutls-dev:amd64 (7.74.0-1.3+deb11u15) ...
- Setting up libffi-dev:amd64 (3.3-6) ...
- Setting up libglib2.0-data (2.66.8-1+deb11u6) ...
- Setting up pkg-config (0.29.2-1) ...
- Setting up zlib1g-dev:amd64 (1:1.2.11.dfsg-2+deb11u2) ...
- Setting up libxml2:amd64 (2.9.10+dfsg-6.7+deb11u7) ...
- Setting up shared-mime-info (2.0-1) ...
- Processing triggers for libc-bin (2.31-13+deb11u13) ...
2025-07-14 11:15.23 ---> using "3ce874f6dedb646986c6baefeb28bc6b92bdcc9b325e72e1b58113ae07f9358b" from cache


/src: (run (cache (opam-archives (target /home/opam/.opam/download-cache)))
(network host)
(shell "opam install $DEPS"))
[NOTE] Package ocaml-options-vanilla is already installed (current version is 1).
[NOTE] Package ocaml-config is already installed (current version is 3).
[NOTE] Package ocaml-compiler is already installed (current version is 5.3.0).
[NOTE] Package ocaml-base-compiler is already installed (current version is 5.3.0).
[NOTE] Package ocaml is already installed (current version is 5.3.0).
[NOTE] Package base-unix is already installed (current version is base).
[NOTE] Package base-threads is already installed (current version is base).
[NOTE] Package base-nnp is already installed (current version is base).
[NOTE] Package base-effects is already installed (current version is base).
[NOTE] Package base-domains is already installed (current version is base).
[NOTE] Package base-bigarray is already installed (current version is base).
The following actions will be performed:
=== install 81 packages
- install angstrom                0.16.1
- install astring                 0.8.5
- install backoff                 0.1.1
- install base                    v0.17.3
- install base-bytes              base
- install bigarray-compat         1.1.0
- install bigstringaf             0.10.0
- install camlp-streams           5.0.1
- install camlzip                 1.13
- install cmdliner                1.3.0
- install conf-libcurl            2
- install conf-libffi             2.0.0
- install conf-pkg-config         4
- install conf-zlib               1
- install cppo                    1.8.0
- install csexp                   1.5.2
- install csv                     2.4
- install ctypes                  0.23.0
- install ctypes-foreign          0.23.0
- install curl                    0.10.0
- install dune                    3.19.1
- install dune-configurator       3.19.1
- install fieldslib               v0.17.0
- install fmt                     0.10.0
- install integers                0.7.0
- install jane-street-headers     v0.17.0
- install jst-config              v0.17.0
- install logs                    0.9.0
- install mdx                     2.5.0
- install mtime                   2.1.0
- install multicore-magic         2.3.1
- install num                     1.6
- install ocaml-compiler-libs     v0.17.0
- install ocaml-syntax-shims      1.0.0
- install ocaml-version           4.0.1
- install ocaml_intrinsics_kernel v0.17.1
- install ocamlbuild              0.16.1
- install ocamlfind               1.9.8
- install parsexp                 v0.17.0
- install pprint                  20230830
- install ppx_assert              v0.17.0
- install ppx_base                v0.17.0
- install ppx_cold                v0.17.0
- install ppx_compare             v0.17.0
- install ppx_derivers            1.2.1
- install ppx_deriving            6.1.0
- install ppx_enumerate           v0.17.0
- install ppx_expect              v0.17.3
- install ppx_fields_conv         v0.17.0
- install ppx_globalize           v0.17.2
- install ppx_hash                v0.17.0
- install ppx_here                v0.17.0
- install ppx_inline_test         v0.17.1
- install ppx_minidebug           2.3.0
- install ppx_optcomp             v0.17.1
- install ppx_sexp_conv           v0.17.1
- install ppx_string              v0.17.0
- install ppx_variants_conv       v0.17.1
- install ppxlib                  0.36.0
- install ppxlib_jane             v0.17.4
- install printbox                0.12
- install printbox-ext-plot       0.12
- install printbox-html           0.12
- install printbox-md             0.12
- install printbox-text           0.12
- install ptime                   1.2.0
- install re                      1.13.2
- install result                  1.5
- install saturn_lockfree         0.5.0
- install seq                     base
- install sexplib                 v0.17.0
- install sexplib0                v0.17.0
- install stdio                   v0.17.0
- install stdlib-shims            0.3.0
- install thread-local-storage    0.2
- install time_now                v0.17.0
- install topkg                   1.0.8
- install tyxml                   4.6.0
- install uucp                    16.0.0
- install uutf                    1.0.4
- install variantslib             v0.17.0


<><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><>
-> retrieved backoff.0.1.1  (cached)
-> retrieved astring.0.8.5  (cached)
-> retrieved angstrom.0.16.1  (cached)
-> retrieved base.v0.17.3  (cached)
-> retrieved bigarray-compat.1.1.0  (cached)
-> retrieved bigstringaf.0.10.0  (cached)
-> retrieved camlp-streams.5.0.1  (cached)
-> retrieved camlzip.1.13  (cached)
-> installed conf-libcurl.2
-> retrieved cmdliner.1.3.0  (cached)
-> retrieved cppo.1.8.0  (cached)
-> installed conf-pkg-config.4
-> retrieved csexp.1.5.2  (cached)
-> retrieved csv.2.4  (cached)
-> retrieved ctypes.0.23.0, ctypes-foreign.0.23.0  (cached)
-> installed conf-libffi.2.0.0
-> installed conf-zlib.1
-> retrieved curl.0.10.0  (cached)
-> retrieved fieldslib.v0.17.0  (cached)
-> retrieved integers.0.7.0  (cached)
-> retrieved fmt.0.10.0  (cached)
-> retrieved jane-street-headers.v0.17.0  (cached)
-> retrieved jst-config.v0.17.0  (cached)
-> retrieved logs.0.9.0  (cached)
-> retrieved mtime.2.1.0  (cached)
-> retrieved multicore-magic.2.3.1  (cached)
-> retrieved mdx.2.5.0  (cached)
-> retrieved num.1.6  (cached)
-> retrieved ocaml-compiler-libs.v0.17.0  (cached)
-> retrieved ocaml-syntax-shims.1.0.0  (cached)
-> retrieved ocaml-version.4.0.1  (cached)
-> retrieved ocaml_intrinsics_kernel.v0.17.1  (cached)
-> retrieved ocamlbuild.0.16.1  (cached)
-> retrieved ocamlfind.1.9.8  (cached)
-> retrieved parsexp.v0.17.0  (cached)
-> retrieved pprint.20230830  (cached)
-> retrieved ppx_assert.v0.17.0  (cached)
-> retrieved ppx_base.v0.17.0  (cached)
-> retrieved ppx_cold.v0.17.0  (cached)
-> retrieved ppx_compare.v0.17.0  (cached)
-> retrieved dune.3.19.1, dune-configurator.3.19.1  (cached)
-> retrieved ppx_derivers.1.2.1  (cached)
-> retrieved ppx_deriving.6.1.0  (cached)
-> retrieved ppx_enumerate.v0.17.0  (cached)
-> retrieved ppx_expect.v0.17.3  (cached)
-> retrieved ppx_fields_conv.v0.17.0  (cached)
-> retrieved ppx_globalize.v0.17.2  (cached)
-> retrieved ppx_hash.v0.17.0  (cached)
-> retrieved ppx_here.v0.17.0  (cached)
-> installed cmdliner.1.3.0
-> installed num.1.6
-> retrieved ppx_inline_test.v0.17.1  (cached)
-> retrieved ppx_minidebug.2.3.0  (cached)
-> retrieved ppx_optcomp.v0.17.1  (cached)
-> retrieved ppx_sexp_conv.v0.17.1  (cached)
-> retrieved ppx_string.v0.17.0  (cached)
-> retrieved ppx_variants_conv.v0.17.1  (cached)
-> retrieved ppxlib_jane.v0.17.4  (cached)
-> retrieved ptime.1.2.0  (cached)
-> retrieved re.1.13.2  (cached)
-> retrieved result.1.5  (cached)
-> retrieved ppxlib.0.36.0  (cached)
-> retrieved seq.base  (cached)
-> installed seq.base
-> retrieved saturn_lockfree.0.5.0  (cached)
-> retrieved sexplib.v0.17.0  (cached)
-> retrieved sexplib0.v0.17.0  (cached)
-> retrieved stdio.v0.17.0  (cached)
-> retrieved stdlib-shims.0.3.0  (cached)
-> retrieved thread-local-storage.0.2  (cached)
-> retrieved printbox.0.12, printbox-ext-plot.0.12, printbox-html.0.12, printbox-md.0.12, printbox-text.0.12  (cached)
-> retrieved time_now.v0.17.0  (cached)
-> retrieved topkg.1.0.8  (cached)
-> retrieved uutf.1.0.4  (cached)
-> retrieved tyxml.4.6.0  (cached)
-> retrieved variantslib.v0.17.0  (cached)
-> retrieved uucp.16.0.0  (cached)
-> installed ocamlfind.1.9.8
-> installed base-bytes.base
-> installed camlzip.1.13
-> installed ocamlbuild.0.16.1
-> installed topkg.1.0.8
-> installed uutf.1.0.4
-> installed mtime.2.1.0
-> installed fmt.0.10.0
-> installed ptime.1.2.0
-> installed astring.0.8.5
-> installed logs.0.9.0
-> installed dune.3.19.1
-> installed jane-street-headers.v0.17.0
-> installed ppx_derivers.1.2.1
-> installed csexp.1.5.2
-> installed backoff.0.1.1
-> installed bigarray-compat.1.1.0
-> installed camlp-streams.5.0.1
-> installed csv.2.4
-> installed multicore-magic.2.3.1
-> installed ocaml-version.4.0.1
-> installed ocaml_intrinsics_kernel.v0.17.1
-> installed pprint.20230830
-> installed printbox.0.12
-> installed result.1.5
-> installed sexplib0.v0.17.0
-> installed ocaml-syntax-shims.1.0.0
-> installed cppo.1.8.0
-> installed re.1.13.2
-> installed ocaml-compiler-libs.v0.17.0
-> installed stdlib-shims.0.3.0
-> installed thread-local-storage.0.2
-> installed saturn_lockfree.0.5.0
-> installed integers.0.7.0
-> installed parsexp.v0.17.0
-> installed dune-configurator.3.19.1
-> installed sexplib.v0.17.0
-> installed mdx.2.5.0
-> installed bigstringaf.0.10.0
-> installed angstrom.0.16.1
-> installed tyxml.4.6.0
-> installed printbox-html.0.12
-> installed ctypes.0.23.0
-> installed base.v0.17.3
-> installed fieldslib.v0.17.0
-> installed variantslib.v0.17.0
-> installed stdio.v0.17.0
-> installed ctypes-foreign.0.23.0
-> installed uucp.16.0.0
-> installed printbox-text.0.12
-> installed printbox-md.0.12
-> installed printbox-ext-plot.0.12
-> installed ppxlib.0.36.0
-> installed ppxlib_jane.v0.17.4
-> installed ppx_optcomp.v0.17.1
-> installed ppx_cold.v0.17.0
-> installed ppx_here.v0.17.0
-> installed ppx_variants_conv.v0.17.1
-> installed ppx_fields_conv.v0.17.0
-> installed ppx_enumerate.v0.17.0
-> installed ppx_globalize.v0.17.2
-> installed ppx_deriving.6.1.0
-> installed ppx_compare.v0.17.0
-> installed ppx_sexp_conv.v0.17.1
-> installed ppx_hash.v0.17.0
-> installed curl.0.10.0
-> installed ppx_assert.v0.17.0
-> installed ppx_minidebug.2.3.0
-> installed ppx_base.v0.17.0
-> installed jst-config.v0.17.0
-> installed ppx_string.v0.17.0
-> installed time_now.v0.17.0
-> installed ppx_inline_test.v0.17.1
-> installed ppx_expect.v0.17.3
Done.
# To update the current shell environment, run: eval $(opam env)
2025-07-14 11:15.23 ---> using "1225b45a9950f6009cd877434793c8ecf0d10c80a12830a4e7cf4a94a289016c" from cache


/src: (copy (src .) (dst /src))
2025-07-14 11:15.23 ---> saved as "9637c284d4431750b2cb924a26aad80cc73355f011fc806188365a9537510131"


/src: (run (shell "opam exec -- dune build @install @check @runtest && rm -rf _build"))
File "arrayjit/test/dune", line 6, characters 16-24:
6 |   (pps ppx_here ppx_jane)))
^^^^^^^^
Error: Library "ppx_jane" not found.
-> required by
_build/default/arrayjit/test/.merlin-conf/exe-test_numerical_types
-> required by alias arrayjit/test/check
(cd _build/default/test/operations/config && ../../../arrayjit/bin/read_config.exe --read=backend)


Welcome to OCANNL! Reading configuration defaults from /src/_build/default/test/operations/config/ocannl_config.
Retrieving commandline, environment, or config file variable ocannl_log_level
Found 0, in the config file
Wrote value of 'backend' to ocannl_backend.txt
File "test/ppx/test_ppx_op_expected.ml", line 1, characters 0-0:
/usr/bin/git --no-pager diff --no-index --color=always -u _build/default/test/ppx/test_ppx_op_expected.ml _build/default/test/ppx/test_ppx_op_actual.ml
diff --git a/_build/default/test/ppx/test_ppx_op_expected.ml b/_build/default/test/ppx/test_ppx_op_actual.ml
index a6aa4ae..c971ef0 100644
--- a/_build/default/test/ppx/test_ppx_op_expected.ml
+++ b/_build/default/test/ppx/test_ppx_op_actual.ml
@@ -2,20 +2,20 @@ open Base
open Ocannl
module TDSL = Operation.TDSL
let y0 =
-  let hey1 = TDSL.param ?values:None "hey1" in
+  let hey1 = TDSL.param ?value:None "hey1" in
let open! TDSL.O in
((+) ?label:(Some ["y0"]))
((( *. ) ?label:None) (TDSL.number (Float.of_int 2)) hey1)
(TDSL.number (Float.of_int 3))
let y1 =
-  let hey2 = TDSL.param ?values:None "hey2" in
+  let hey2 = TDSL.param ?value:None "hey2" in
let open! TDSL.O in
fun x ->
((+) ?label:(Some
(List.concat [["y1"]; (x.Tensor.value).Ir.Tnode.label])))
((( * ) ?label:None) hey2 (TDSL.number (Float.of_int 2))) x
let y2 =
-  let hey3 = TDSL.param ?values:None "hey3" in
+  let hey3 = TDSL.param ?value:None "hey3" in
let open! TDSL.O in
fun x1 x2 ->
((+) ?label:(Some
@@ -36,14 +36,14 @@ let b =
~output_dims:[2]
[|(Float.of_int 7);(Float.of_int 8);(Float.of_int 9);(Float.of_int 10)|]
let y =
-  let hey4 = TDSL.param ?values:None "hey4" in
+  let hey4 = TDSL.param ?value:None "hey4" in
let open! TDSL.O in
((+) ?label:(Some ["y"]))
((( * ) ?label:None) hey4 (TDSL.number ?label:None ~axis_label:"q" 2.0))
(TDSL.number ?label:None ~axis_label:"p" 1.0)
let z =
-  let hey5 = TDSL.param ?values:None "hey5"
-  and hey6 = TDSL.param ?values:None "hey6" in
+  let hey5 = TDSL.param ?value:None "hey5"
+  and hey6 = TDSL.param ?value:None "hey6" in
let open! TDSL.O in
((+) ?label:(Some ["z"]))
((( * ) ?label:None) (TDSL.number ?label:None ~axis_label:"q" 2.0) hey5)
@@ -51,8 +51,8 @@ let z =
let stride = 2
and dilation = 3
let z2 =
-  let hey7 = TDSL.param ?values:None "hey7"
-  and hey8 = TDSL.param ?values:None "hey8" in
+  let hey7 = TDSL.param ?value:None "hey7"
+  and hey8 = TDSL.param ?value:None "hey8" in
let open! TDSL.O in
TDSL.einsum ?label:(Some ["z2"])
(String.concat ~sep:""
@@ -61,8 +61,8 @@ let z2 =
let z3 =
let s = 2
and d = 3 in
-  let hey10 = TDSL.param ?values:None "hey10"
-  and hey9 = TDSL.param ?values:None "hey9" in
+  let hey10 = TDSL.param ?value:None "hey10"
+  and hey9 = TDSL.param ?value:None "hey9" in
let open! TDSL.O in
TDSL.einsum ?label:(Some [])
(String.concat ~sep:""
@@ -78,7 +78,7 @@ let mlp_layer =
let b =
(TDSL.param ~more_label:(config.label)) ~output_dims:[config.hid_dim]
"b"
-      and w = (TDSL.param ~more_label:(config.label)) ?values:None "w" in
+      and w = (TDSL.param ~more_label:(config.label)) ?value:None "w" in
fun x ->
(relu
?label:(Some
File "test/einsum/test_conv_syntax.expected", line 1, characters 0-0:
/usr/bin/git --no-pager diff --no-index --color=always -u _build/default/test/einsum/test_conv_syntax.expected _build/default/test/einsum/test_conv_syntax.exe.output
diff --git a/_build/default/test/einsum/test_conv_syntax.expected b/_build/default/test/einsum/test_conv_syntax.exe.output
index 7098c49..02f1b08 100644
--- a/_build/default/test/einsum/test_conv_syntax.expected
+++ b/_build/default/test/einsum/test_conv_syntax.exe.output
@@ -1,5 +1,5 @@


-Welcome to OCANNL! Reading configuration defaults from /Users/lukstafi/ocannl/_build/default/test/einsum/ocannl_config.
+Welcome to OCANNL! Reading configuration defaults from /src/_build/default/test/einsum/ocannl_config.
Retrieving commandline, environment, or config file variable ocannl_log_level
Found 0, in the config file
Testing conv syntax parsing...
File "test/einsum/test_print_style.expected", line 1, characters 0-0:
/usr/bin/git --no-pager diff --no-index --color=always -u _build/default/test/einsum/test_print_style.expected _build/default/test/einsum/test_print_style.exe.output
diff --git a/_build/default/test/einsum/test_print_style.expected b/_build/default/test/einsum/test_print_style.exe.output
index e51ab37..80ff444 100644
--- a/_build/default/test/einsum/test_print_style.expected
+++ b/_build/default/test/einsum/test_print_style.exe.output
@@ -1,5 +1,5 @@


-Welcome to OCANNL! Reading configuration defaults from /Users/lukstafi/ocannl/_build/default/test/ocannl_config.
+Welcome to OCANNL! Reading configuration defaults from /src/_build/default/test/einsum/ocannl_config.
Retrieving commandline, environment, or config file variable ocannl_log_level
Found 0, in the config file
Testing print_style functionality:
(cd _build/default/test/ppx && ./test_ppx_op.exe)


Welcome to OCANNL! Reading configuration defaults from /src/_build/default/test/ppx/ocannl_config.
Retrieving commandline, environment, or config file variable ocannl_log_level
Found 0, in the config file
(cd _build/default/test/ppx && ./test_ppx_op_expected.exe)


Welcome to OCANNL! Reading configuration defaults from /src/_build/default/test/ppx/ocannl_config.
Retrieving commandline, environment, or config file variable ocannl_log_level
Found 0, in the config file
(cd _build/.sandbox/65d9a30e443e8685cbcd256a6f1be18a/default/test/operations && .operations_tutorials.inline-tests/inline-test-runner.exe inline-test-runner operations_tutorials -partition '' -source-tree-root ../.. -diff-cmd -)


Welcome to OCANNL! Reading configuration defaults from /src/_build/.sandbox/65d9a30e443e8685cbcd256a6f1be18a/default/test/operations/ocannl_config.
Retrieving commandline, environment, or config file variable ocannl_log_level
Found 0, in the config file
(cd _build/.sandbox/65d9a30e443e8685cbcd256a6f1be18a/default/test/operations && .operations_tutorials.inline-tests/inline-test-runner.exe inline-test-runner operations_tutorials -partition 'Retrieving commandline, environment, or config file variable ocannl_log_level' -source-tree-root ../.. -diff-cmd -)


Welcome to OCANNL! Reading configuration defaults from /src/_build/.sandbox/65d9a30e443e8685cbcd256a6f1be18a/default/test/operations/ocannl_config.
Retrieving commandline, environment, or config file variable ocannl_log_level
Found 0, in the config file
(cd _build/.sandbox/65d9a30e443e8685cbcd256a6f1be18a/default/test/operations && .operations_tutorials.inline-tests/inline-test-runner.exe inline-test-runner operations_tutorials -partition 'Found 0, in the config file' -source-tree-root ../.. -diff-cmd -)


Welcome to OCANNL! Reading configuration defaults from /src/_build/.sandbox/65d9a30e443e8685cbcd256a6f1be18a/default/test/operations/ocannl_config.
Retrieving commandline, environment, or config file variable ocannl_log_level
Found 0, in the config file
(cd _build/.sandbox/65d9a30e443e8685cbcd256a6f1be18a/default/test/operations && .operations_tutorials.inline-tests/inline-test-runner.exe inline-test-runner operations_tutorials -partition 'Welcome to OCANNL! Reading configuration defaults from /src/_build/.sandbox/bf81a76d48fa5cd2ba30148b75020867/default/test/operations/ocannl_config.' -source-tree-root ../.. -diff-cmd -)


Welcome to OCANNL! Reading configuration defaults from /src/_build/.sandbox/65d9a30e443e8685cbcd256a6f1be18a/default/test/operations/ocannl_config.
Retrieving commandline, environment, or config file variable ocannl_log_level
Found 0, in the config file
(cd _build/.sandbox/a33b19e207c4292bdc0e774f53f7d2b5/default/test/einsum && .einsum_tutorials.inline-tests/inline-test-runner.exe inline-test-runner einsum_tutorials -partition '' -source-tree-root ../.. -diff-cmd -)


Welcome to OCANNL! Reading configuration defaults from /src/_build/.sandbox/a33b19e207c4292bdc0e774f53f7d2b5/default/test/einsum/ocannl_config.
Retrieving commandline, environment, or config file variable ocannl_log_level
Found 0, in the config file
(cd _build/.sandbox/a33b19e207c4292bdc0e774f53f7d2b5/default/test/einsum && .einsum_tutorials.inline-tests/inline-test-runner.exe inline-test-runner einsum_tutorials -partition 'Welcome to OCANNL! Reading configuration defaults from /src/_build/.sandbox/f9db8b501c17b075922e2f87211361ba/default/test/einsum/ocannl_config.' -source-tree-root ../.. -diff-cmd -)


Welcome to OCANNL! Reading configuration defaults from /src/_build/.sandbox/a33b19e207c4292bdc0e774f53f7d2b5/default/test/einsum/ocannl_config.
Retrieving commandline, environment, or config file variable ocannl_log_level
Found 0, in the config file
(cd _build/.sandbox/a33b19e207c4292bdc0e774f53f7d2b5/default/test/einsum && .einsum_tutorials.inline-tests/inline-test-runner.exe inline-test-runner einsum_tutorials -partition 'Found 0, in the config file' -source-tree-root ../.. -diff-cmd -)


Welcome to OCANNL! Reading configuration defaults from /src/_build/.sandbox/a33b19e207c4292bdc0e774f53f7d2b5/default/test/einsum/ocannl_config.
Retrieving commandline, environment, or config file variable ocannl_log_level
Found 0, in the config file
(cd _build/.sandbox/a33b19e207c4292bdc0e774f53f7d2b5/default/test/einsum && .einsum_tutorials.inline-tests/inline-test-runner.exe inline-test-runner einsum_tutorials -partition 'Retrieving commandline, environment, or config file variable ocannl_log_level' -source-tree-root ../.. -diff-cmd -)


Welcome to OCANNL! Reading configuration defaults from /src/_build/.sandbox/a33b19e207c4292bdc0e774f53f7d2b5/default/test/einsum/ocannl_config.
Retrieving commandline, environment, or config file variable ocannl_log_level
Found 0, in the config file
File "test/operations/dune", lines 19-29, characters 0-281:
19 | (rule
20 |  (alias runtest)
21 |  (target
22 |   (dir log_files))
23 |  (action
24 |   (run
25 |    %{dep:micrograd_demo_logging.exe}
26 |    "--ocannl_debug_backend=text"
27 |    "--ocannl_log_file_stem=micrograd_demo_logging"
28 |    "--ocannl_log_main_domain_to_stdout=false"
29 |    "--ocannl_debug_log_to_stream_files=true")))
(cd _build/default/test/operations && ./micrograd_demo_logging.exe --ocannl_debug_backend=text --ocannl_log_file_stem=micrograd_demo_logging --ocannl_log_main_domain_to_stdout=false --ocannl_debug_log_to_stream_files=true)


Welcome to OCANNL! Reading configuration defaults from /src/_build/default/test/operations/ocannl_config.
Retrieving commandline, environment, or config file variable ocannl_log_level
Found 0, in the config file
Retrieving commandline, environment, or config file variable ocannl_backend
Found multicore_cc, in the config file
Retrieving commandline, environment, or config file variable ocannl_limit_constant_fill_size
Not found, using default 256
Retrieving commandline, environment, or config file variable ocannl_cd_ident_style
Not found, using default heuristic
Retrieving commandline, environment, or config file variable ocannl_ll_ident_style
Not found, using default heuristic
Retrieving commandline, environment, or config file variable ocannl_prefer_backend_uniformity
Found true, in the config file
Retrieving commandline, environment, or config file variable ocannl_debug_log_to_stream_files
Found true, commandline --ocannl_debug_log_to_stream_files=true
Retrieving commandline, environment, or config file variable ocannl_cc_backend_optimization_level
Not found, using default 3
Retrieving commandline, environment, or config file variable ocannl_cc_backend_compiler_command
Not found, using default gcc
Retrieving commandline, environment, or config file variable ocannl_cc_backend_verify_codesign
Not found, using default false
Fatal error: exception File "src/printbox-text/PrintBox_text.ml", line 212, characters 6-12: Assertion failed
Raised at PrintBox_text.Output.Make_out.to_buf_aux_ in file "src/printbox-text/PrintBox_text.ml", line 212, characters 6-50
Called from Stdlib__Map.Make.fold in file "map.ml", line 329, characters 19-42
Called from Stdlib__Map.Make.fold in file "map.ml", line 329, characters 26-41
Called from Stdlib__Map.Make.fold in file "map.ml", line 329, characters 26-41
Called from Stdlib__Map.Make.fold in file "map.ml", line 329, characters 26-41
Called from PrintBox_text.Output.Make_out.render in file "src/printbox-text/PrintBox_text.ml", line 242, characters 14-64
Called from PrintBox_text.output in file "src/printbox-text/PrintBox_text.ml", line 851, characters 2-31
Called from Minidebug_runtime.PrintBox.output_box in file "minidebug_runtime.ml", line 1527, characters 19-59
Called from Minidebug_runtime.PrintBox.close_log_impl.close_tree in file "minidebug_runtime.ml", line 1572, characters 6-38
Called from Backends.Add_buffer_retrieval_and_syncing.sync_routine in file "arrayjit/lib/backends.ml", lines 207-235, characters 31-82
Called from Backends.Raise_backend.link in file "arrayjit/lib/backends.ml", lines 539-540, characters 4-92
Re-raised at Backends.Raise_backend.link in file "arrayjit/lib/backends.ml", lines 526-540, characters 23-92
Called from Dune__exe__Micrograd_demo_logging in file "test/operations/micrograd_demo_logging.ml", line 36, characters 13-76
File "test/einsum/dune", line 5, characters 7-25:
5 |  (name moons_demo_variant)
^^^^^^^^^^^^^^^^^^
(cd _build/default/test/einsum && ./moons_demo_variant.exe) > _build/default/test/einsum/moons_demo_variant.exe.output
Fatal error: exception (lib/shape.ml.Shape_error "Total_elems constraint: 10 not divisible by 3" ())
Raised at Ocannl__Row.row_conjunction.extras in file "lib/row.ml", lines 464-466, characters 10-101
Called from Ocannl__Row.row_conjunction.extras in file "lib/row.ml", line 507, characters 53-94
Called from Ocannl__Row.row_conjunction in file "lib/row.ml", line 544, characters 46-74
Called from Ocannl__Row.apply_row_constraint in file "lib/row.ml", line 952, characters 16-92
Called from Ocannl__Row.solve_inequalities.solve.f in file "lib/row.ml", line 2092, characters 32-88
Called from Base__List0.fold in file "src/list0.ml", line 43, characters 27-37
Called from Ocannl__Row.solve_inequalities.solve in file "lib/row.ml", line 2101, characters 22-56
Re-raised at Ocannl__Row.solve_inequalities.solve in file "lib/row.ml", lines 2054-2107, characters 16-25
Called from Ocannl__Row.solve_inequalities in file "lib/row.ml", line 2120, characters 6-44
Re-raised at Ocannl__Row.solve_inequalities in file "lib/row.ml", lines 2052-2133, characters 35-44
Called from Ocannl__Shape.finish_inference in file "lib/shape.ml", line 710, characters 22-71
Re-raised at Ocannl__Shape.finish_inference in file "lib/shape.ml", lines 705-723, characters 33-24
Called from Ocannl__Shape.to_dims in file "lib/shape.ml", line 751, characters 2-21
Called from CamlinternalLazy.do_force_block in file "camlinternalLazy.ml", line 49, characters 17-27
Re-raised at CamlinternalLazy.do_force_block in file "camlinternalLazy.ml", line 56, characters 4-11
Called from CamlinternalLazy.force_lazy_block in file "camlinternalLazy.ml" (inlined), line 78, characters 27-67
Called from Ir__Low_level.is_scalar_dims in file "arrayjit/lib/low_level.ml", line 196, characters 54-75
Called from Ir__Low_level.visit_llc.loop_proc in file "arrayjit/lib/low_level.ml", line 229, characters 13-30
Called from Ir__Low_level.visit_llc.loop_proc in file "arrayjit/lib/low_level.ml" (inlined), line 209, characters 15-41
Called from Ir__Low_level.visit_llc.loop_proc in file "arrayjit/lib/low_level.ml", line 213, characters 8-15
Called from Ir__Low_level.visit_llc.loop_proc in file "arrayjit/lib/low_level.ml" (inlined), line 209, characters 15-41
Called from Ir__Low_level.visit_llc.loop_proc in file "arrayjit/lib/low_level.ml", line 213, characters 8-15
Called from Ir__Low_level.visit_llc.loop_proc in file "arrayjit/lib/low_level.ml" (inlined), line 209, characters 15-41
Called from Ir__Low_level.visit_llc.loop_proc in file "arrayjit/lib/low_level.ml", line 213, characters 8-15
Called from Ir__Low_level.visit_llc.loop_proc in file "arrayjit/lib/low_level.ml" (inlined), line 209, characters 15-41
Called from Ir__Low_level.visit_llc.loop_proc in file "arrayjit/lib/low_level.ml", line 213, characters 8-15
Called from Ir__Low_level.visit_llc.loop_proc in file "arrayjit/lib/low_level.ml" (inlined), line 209, characters 15-41
Called from Ir__Low_level.visit_llc.loop_proc in file "arrayjit/lib/low_level.ml", line 213, characters 8-15
Called from Ir__Low_level.visit_llc.loop_proc in file "arrayjit/lib/low_level.ml" (inlined), line 209, characters 15-41
Called from Ir__Low_level.visit_llc.loop_proc in file "arrayjit/lib/low_level.ml", line 213, characters 8-15
Called from Ir__Low_level.visit_llc in file "arrayjit/lib/low_level.ml", line 289, characters 2-52
Called from Ir__Low_level.optimize_proc in file "arrayjit/lib/low_level.ml", lines 938-939, characters 2-7
Re-raised at Ir__Low_level.optimize_proc in file "arrayjit/lib/low_level.ml", lines 932-951, characters 30-49
Called from Ir__Low_level.optimize in file "arrayjit/lib/low_level.ml", line 1176, characters 15-57
Called from Ir__Assignments.lower in file "arrayjit/lib/assignments.ml", line 451, characters 2-85
Re-raised at Ir__Assignments.lower in file "arrayjit/lib/assignments.ml", lines 444-451, characters 22-85
Called from Backends.lower_assignments in file "arrayjit/lib/backends.ml", lines 256-257, characters 4-45
Re-raised at Backends.lower_assignments in file "arrayjit/lib/backends.ml", lines 248-257, characters 34-47
Called from Backends.Raise_backend.compile in file "arrayjit/lib/backends.ml", line 441, characters 6-59
Re-raised at Backends.Raise_backend.compile in file "arrayjit/lib/backends.ml", lines 440-441, characters 4-59
Re-raised at Backends.Raise_backend.compile in file "arrayjit/lib/backends.ml", lines 439-447, characters 26-99
Called from Ocannl__Train.to_routine in file "lib/train.ml", line 354, characters 26-82
Called from Dune__exe__Moons_demo_variant in file "test/einsum/moons_demo_variant.ml", line 54, characters 21-79
(cd _build/.sandbox/65d9a30e443e8685cbcd256a6f1be18a/default/test/operations && .operations_tutorials.inline-tests/inline-test-runner.exe inline-test-runner operations_tutorials -partition primitive_ops.ml -source-tree-root ../.. -diff-cmd -)


Welcome to OCANNL! Reading configuration defaults from /src/_build/.sandbox/65d9a30e443e8685cbcd256a6f1be18a/default/test/operations/ocannl_config.
Retrieving commandline, environment, or config file variable ocannl_log_level
Found 0, in the config file
(cd _build/.sandbox/65d9a30e443e8685cbcd256a6f1be18a/default/test/operations && .operations_tutorials.inline-tests/inline-test-runner.exe inline-test-runner operations_tutorials -partition zero2hero_1of7.ml -source-tree-root ../.. -diff-cmd -)


Welcome to OCANNL! Reading configuration defaults from /src/_build/.sandbox/65d9a30e443e8685cbcd256a6f1be18a/default/test/operations/ocannl_config.
Retrieving commandline, environment, or config file variable ocannl_log_level
Found 0, in the config file
File "test/einsum/einsum_trivia_exec.expected", line 1, characters 0-0:
/usr/bin/git --no-pager diff --no-index --color=always -u _build/default/test/einsum/einsum_trivia_exec.expected _build/default/test/einsum/einsum_trivia_exec.exe.output
diff --git a/_build/default/test/einsum/einsum_trivia_exec.expected b/_build/default/test/einsum/einsum_trivia_exec.exe.output
index ab456b5..697780d 100644
--- a/_build/default/test/einsum/einsum_trivia_exec.expected
+++ b/_build/default/test/einsum/einsum_trivia_exec.exe.output
@@ -1,9 +1,8 @@


-Welcome to OCANNL! Reading configuration defaults from /Users/lukstafi/ocannl/_build/default/test/einsum/ocannl_config.
+Welcome to OCANNL! Reading configuration defaults from /src/_build/default/test/einsum/ocannl_config.
Retrieving commandline, environment, or config file variable ocannl_log_level
Found 0, in the config file
HERE: test/einsum/einsum_trivia_exec.ml:31:21
-[0]: r2x4x3 shape 0:2|2:3->1:4  <virtual>HERE: test/einsum/einsum_trivia_exec.ml:32:21
┌───────────────────────────────────────────────────────────────────────────┐
│[1]: =>_ho shape 0:4|2:2->1:3                                              │
│┌──────┬───────────────┬───────────────┬───────────────┬──────────────────┐│
@@ -17,8 +16,7 @@ HERE: test/einsum/einsum_trivia_exec.ml:31:21
└───────────────────────────────────────────────────────────────────────────┘


-HERE: test/einsum/einsum_trivia_exec.ml:38:21
-[2]: r2x3x6x7x4x5 shape 0:2,1:3|4:4,5:5->2:6,3:7  <virtual>HERE: test/einsum/einsum_trivia_exec.ml:39:21
+HERE: test/einsum/einsum_trivia_exec.ml:37:21
┌────────────────────────────────────────────────────────────────────────────────────────────┐
│[3]: =>_ho2 shape 0:4,1:7|4:2,5:6->2:5,3:3                                                  │
│┌──────┬─────────────────────────────────────────┬─────────────────────────────────────────┐│
@@ -125,10 +123,7 @@ HERE: test/einsum/einsum_trivia_exec.ml:38:21
└────────────────────────────────────────────────────────────────────────────────────────────┘


-HERE: test/einsum/einsum_trivia_exec.ml:44:21
-[4]: r3x2x4 shape 0:3|2:4->1:2  <virtual>HERE: test/einsum/einsum_trivia_exec.ml:45:21
-[5]: r3x4x1 shape 0:3|2:1->1:4  <virtual>HERE: test/einsum/einsum_trivia_exec.ml:46:21
-[5]: r3x4x1 shape 0:3|2:1->1:4  <virtual>HERE: test/einsum/einsum_trivia_exec.ml:47:21
+HERE: test/einsum/einsum_trivia_exec.ml:42:21
┌─────────────────────────────────────────────┐
│[6]: ;=>_c shape 0:3|1:4                     │
│┌──────┬────────────────────────────────────┐│
@@ -141,8 +136,7 @@ HERE: test/einsum/einsum_trivia_exec.ml:44:21
└─────────────────────────────────────────────┘


-HERE: test/einsum/einsum_trivia_exec.ml:66:21
-[0]: r2x4x3 shape 0:2|2:3->1:4  <virtual>HERE: test/einsum/einsum_trivia_exec.ml:67:21
+HERE: test/einsum/einsum_trivia_exec.ml:61:21
┌────────────────────────────────────┐
│[1]: =>_ho shape 0:2|1:3            │
│┌──────┬───────────────────────────┐│
@@ -154,7 +148,7 @@ HERE: test/einsum/einsum_trivia_exec.ml:66:21
└────────────────────────────────────┘


-HERE: test/einsum/einsum_trivia_exec.ml:75:21
+HERE: test/einsum/einsum_trivia_exec.ml:69:21
┌────────────────────────────────────────────────────────────────────────────────────┐
│[3]: =>_ho2 shape 0:4|2:2->1:5                                                      │
│┌──────┬──────────────────┬──────────────────┬──────────────────┬──────────────────┐│
@@ -170,9 +164,7 @@ HERE: test/einsum/einsum_trivia_exec.ml:75:21
└────────────────────────────────────────────────────────────────────────────────────┘


-HERE: test/einsum/einsum_trivia_exec.ml:95:21
-[0]: r2 shape 0:2  <virtual>HERE: test/einsum/einsum_trivia_exec.ml:96:21
-[1]: r3 shape 0:3  <virtual>HERE: test/einsum/einsum_trivia_exec.ml:97:21
+HERE: test/einsum/einsum_trivia_exec.ml:89:21
┌──────────────────────────┐
│[4]: ;=>_c shape 1:2->0:3 │
│┌──────┬────────────┐     │
@@ -185,9 +177,7 @@ HERE: test/einsum/einsum_trivia_exec.ml:95:21
└──────────────────────────┘


-HERE: test/einsum/einsum_trivia_exec.ml:102:21
-[5]: r2x4x3 shape 0:2|2:3->1:4  <virtual>HERE: test/einsum/einsum_trivia_exec.ml:103:21
-[6]: r5x7x6 shape 0:5|2:6->1:7  <virtual>HERE: test/einsum/einsum_trivia_exec.ml:104:21
+HERE: test/einsum/einsum_trivia_exec.ml:94:21
┌──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│[7]: ;=>_c shape 0:2,1:5|4:3,5:6->2:4,3:7                                                                                             │
│┌──────┬─────────────────────────────────────────┬─────────────────────────────────────────┬─────────────────────────────────────────┐│
@@ -337,7 +327,7 @@ HERE: test/einsum/einsum_trivia_exec.ml:102:21
└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘


-HERE: test/einsum/einsum_trivia_exec.ml:132:21
+HERE: test/einsum/einsum_trivia_exec.ml:122:21
┌────────────────────────────────────────────────────────────────┐
│[2]: ;=>_a2 shape 0:2|2:3->1:4                                  │
│┌──────┬───────────────────────────┬───────────────────────────┐│
@@ -352,7 +342,7 @@ HERE: test/einsum/einsum_trivia_exec.ml:132:21
└────────────────────────────────────────────────────────────────┘


-HERE: test/einsum/einsum_trivia_exec.ml:133:21
+HERE: test/einsum/einsum_trivia_exec.ml:123:21
┌────────────────────────────────────────────────────────────────┐
│[3]: ;=>_c shape 0:2|2:3->1:5                                   │
│┌──────┬───────────────────────────┬───────────────────────────┐│
@@ -368,7 +358,7 @@ HERE: test/einsum/einsum_trivia_exec.ml:133:21
└────────────────────────────────────────────────────────────────┘


-HERE: test/einsum/einsum_trivia_exec.ml:134:21
+HERE: test/einsum/einsum_trivia_exec.ml:124:21
┌────────────────────────────────────────────────────────────────┐
│[4]: ;=>_d shape 0:2,1:2|3:3->2:5                               │
│┌──────┬───────────────────────────┬───────────────────────────┐│
@@ -390,7 +380,7 @@ HERE: test/einsum/einsum_trivia_exec.ml:134:21
└────────────────────────────────────────────────────────────────┘


-HERE: test/einsum/einsum_trivia_exec.ml:135:21
+HERE: test/einsum/einsum_trivia_exec.ml:125:21
┌────────────────────────────────────┐
│[5]: ;=>_e shape 1:3->0:5           │
│┌──────┬───────────────────────────┐│
@@ -405,7 +395,7 @@ HERE: test/einsum/einsum_trivia_exec.ml:135:21
└────────────────────────────────────┘


-HERE: test/einsum/einsum_trivia_exec.ml:136:21
+HERE: test/einsum/einsum_trivia_exec.ml:126:21
┌────────────────────────────────────┐
│[6]: ;=>_f shape 1:3->0:5           │
│┌──────┬───────────────────────────┐│
@@ -420,8 +410,7 @@ HERE: test/einsum/einsum_trivia_exec.ml:136:21
└────────────────────────────────────┘


-HERE: test/einsum/einsum_trivia_exec.ml:155:21
-[0]: r2x4x3 shape 0:2|2:3->1:4  <virtual>HERE: test/einsum/einsum_trivia_exec.ml:156:21
+HERE: test/einsum/einsum_trivia_exec.ml:145:21
┌─────────────────────────────────────────────────────────────────────────┐
│[1]: =>_ho shape 0:2|2:4->1:3                                            │
│┌──────┬───────────────────────────┬────────────────────────────────────┐│
@@ -435,7 +424,7 @@ HERE: test/einsum/einsum_trivia_exec.ml:155:21
└─────────────────────────────────────────────────────────────────────────┘


-HERE: test/einsum/einsum_trivia_exec.ml:159:21
+HERE: test/einsum/einsum_trivia_exec.ml:148:21
┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│[2]: =>_ho2 shape 0:4|2:3->1:2                                                                                          │
│┌──────┬───────────────────────────┬───────────────────────────┬───────────────────────────┬───────────────────────────┐│
@@ -448,8 +437,7 @@ HERE: test/einsum/einsum_trivia_exec.ml:159:21
└────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘


-HERE: test/einsum/einsum_trivia_exec.ml:166:21
-[3]: r2x3x6x7x4x5 shape 0:2,1:3|4:4,5:5->2:6,3:7  <virtual>HERE: test/einsum/einsum_trivia_exec.ml:167:21
+HERE: test/einsum/einsum_trivia_exec.ml:155:21
┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│[4]: =>_ho3 shape 0:2,1:5|4:4,5:7->2:6,3:3                                                                                                                                      │
│┌──────┬─────────────────────────────────────────┬─────────────────────────────────────────┬─────────────────────────────────────────┬─────────────────────────────────────────┐│
@@ -574,7 +562,7 @@ HERE: test/einsum/einsum_trivia_exec.ml:166:21
└────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘


-HERE: test/einsum/einsum_trivia_exec.ml:171:21
+HERE: test/einsum/einsum_trivia_exec.ml:159:21
┌──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│[5]: =>_ho4 shape 0:5|2:7->1:3                                                                                                                                                                                            │
│┌──────┬─────────────────────────────────────────┬─────────────────────────────────────────┬─────────────────────────────────────────┬─────────────────────────────────────────┬─────────────────────────────────────────┐│
@@ -588,8 +576,7 @@ HERE: test/einsum/einsum_trivia_exec.ml:171:21
└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘


-HERE: test/einsum/einsum_trivia_exec.ml:174:21
-[0]: r2x4x3 shape 0:2|2:3->1:4  <virtual>HERE: test/einsum/einsum_trivia_exec.ml:175:21
+HERE: test/einsum/einsum_trivia_exec.ml:162:21
┌───────────────────────────────────────┐
│[6]: =>_ho5 shape 0:4                  │
│┌┬────────────────────────────────────┐│
@@ -600,8 +587,7 @@ HERE: test/einsum/einsum_trivia_exec.ml:174:21
└───────────────────────────────────────┘


-HERE: test/einsum/einsum_trivia_exec.ml:179:21
-[7]: r3x4 shape 0:3,1:4  <virtual>HERE: test/einsum/einsum_trivia_exec.ml:180:21
+HERE: test/einsum/einsum_trivia_exec.ml:166:21
┌───────────────────────────────────────┐
│[8]: =>_ho6 shape 0:4                  │
│┌┬────────────────────────────────────┐│
@@ -612,8 +598,7 @@ HERE: test/einsum/einsum_trivia_exec.ml:179:21
└───────────────────────────────────────┘


-HERE: test/einsum/einsum_trivia_exec.ml:185:21
-[9]: r3x4x2 shape 2:2->0:3,1:4  <virtual>HERE: test/einsum/einsum_trivia_exec.ml:186:21
+HERE: test/einsum/einsum_trivia_exec.ml:171:21
┌─────────────────────────────────────────────┐
│[10]: =>_ho7 shape 0:3,1:2,2:4               │
│┌──────┬────────────────────────────────────┐│
@@ -631,9 +616,7 @@ HERE: test/einsum/einsum_trivia_exec.ml:185:21
└─────────────────────────────────────────────┘


-HERE: test/einsum/einsum_trivia_exec.ml:206:21
-[0]: r3x2x4 shape 0:3|2:4->1:2  <virtual>HERE: test/einsum/einsum_trivia_exec.ml:207:21
-[1]: r3x4x1 shape 0:3|2:1->1:4  <virtual>HERE: test/einsum/einsum_trivia_exec.ml:208:21
+HERE: test/einsum/einsum_trivia_exec.ml:191:21
┌─────────────────────────────────────────────┐
│[2]: ;=>_c shape 0:3|1:4                     │
│┌──────┬────────────────────────────────────┐│
@@ -646,9 +629,7 @@ HERE: test/einsum/einsum_trivia_exec.ml:206:21
└─────────────────────────────────────────────┘


-HERE: test/einsum/einsum_trivia_exec.ml:214:21
-[3]: r3x2 shape 1:2->0:3  <virtual>HERE: test/einsum/einsum_trivia_exec.ml:215:21
-[4]: r3x4 shape 1:4->0:3  <virtual>HERE: test/einsum/einsum_trivia_exec.ml:216:21
+HERE: test/einsum/einsum_trivia_exec.ml:197:21
┌─────────────────────────────────────────────┐
│[5]: ;=>_f shape 0:3,1:2,2:4                 │
│┌──────┬────────────────────────────────────┐│
@@ -666,8 +647,7 @@ HERE: test/einsum/einsum_trivia_exec.ml:214:21
└─────────────────────────────────────────────┘


-HERE: test/einsum/einsum_trivia_exec.ml:235:21
-[0]: r2x4x3 shape 0:2|2:3->1:4  <virtual>HERE: test/einsum/einsum_trivia_exec.ml:236:21
+HERE: test/einsum/einsum_trivia_exec.ml:216:21
┌─────────────────────────────────────────────┐
│[1]: =>_ho shape 0:2|1:4                     │
│┌──────┬────────────────────────────────────┐│
@@ -679,8 +659,7 @@ HERE: test/einsum/einsum_trivia_exec.ml:235:21
└─────────────────────────────────────────────┘


-HERE: test/einsum/einsum_trivia_exec.ml:239:21
-[0]: r2x4x3 shape 0:2|2:3->1:4  <virtual>HERE: test/einsum/einsum_trivia_exec.ml:240:21
+HERE: test/einsum/einsum_trivia_exec.ml:219:21
┌────────────────────────────────────────────────────────────────┐
│[2]: =>_ho2 shape 0:2|2:3->1:1                                  │
│┌──────┬───────────────────────────┬───────────────────────────┐│
@@ -692,8 +671,7 @@ HERE: test/einsum/einsum_trivia_exec.ml:239:21
└────────────────────────────────────────────────────────────────┘


-HERE: test/einsum/einsum_trivia_exec.ml:245:21
-[3]: r3x2 shape 1:2->0:3  <virtual>HERE: test/einsum/einsum_trivia_exec.ml:246:21
+HERE: test/einsum/einsum_trivia_exec.ml:224:21
┌──────────────────────┐
│[4]: =>_ho3 shape 0:1 │
│┌┬─────────┐          │
@@ -704,7 +682,7 @@ HERE: test/einsum/einsum_trivia_exec.ml:245:21
└──────────────────────┘


-HERE: test/einsum/einsum_trivia_exec.ml:249:21
+HERE: test/einsum/einsum_trivia_exec.ml:227:21
┌──────────────────────────────┐
│[5]: =>_ho4 shape 0:2,1:1,2:3 │
│┌──────┬──────────────────┐   │
@@ -719,9 +697,7 @@ HERE: test/einsum/einsum_trivia_exec.ml:249:21
└──────────────────────────────┘


-HERE: test/einsum/einsum_trivia_exec.ml:269:21
-[0]: r3x2x4 shape 0:3|2:4->1:2  <virtual>HERE: test/einsum/einsum_trivia_exec.ml:270:21
-[1]: r3x4x1 shape 0:3|2:1->1:4  <virtual>HERE: test/einsum/einsum_trivia_exec.ml:271:21
+HERE: test/einsum/einsum_trivia_exec.ml:247:21
┌─────────────────────────────────────────────┐
│[2]: ;=>_c shape 0:3|1:4                     │
│┌──────┬────────────────────────────────────┐│
@@ -734,179 +710,177 @@ HERE: test/einsum/einsum_trivia_exec.ml:269:21
└─────────────────────────────────────────────┘


-HERE: test/einsum/einsum_trivia_exec.ml:298:21
-┌────────────────────────────────┐
-│[9]: ;=>+ shape 0:4,1:5,2:6,3:3 │
-│┌──────┬──────────────────┐     │
-││0 @ 0 │axis 3            │     │
-│├──────┼──────────────────┤     │
-││0 @ 1 │ 0.00  0.00  0.00 │     │
-││axis 2│ 0.00  0.00  1.00 │     │
-││      │ ...   ...   ...  │     │
-││      │ 0.00  0.00  4.00 │     │
-││      │ 0.00  0.00  5.00 │     │
-│├──────┼──────────────────┤     │
-││1 @ 1 │ 0.00  1.00  0.00 │     │
-││axis 2│ 0.00  1.00  1.00 │     │
-││      │ ...   ...   ...  │     │
-││      │ 0.00  1.00  4.00 │     │
-││      │ 0.00  1.00  5.00 │     │
-│├──────┼──────────────────┤     │
-││2 @ 1 │ 0.00  2.00  0.00 │     │
-││axis 2│ 0.00  2.00  1.00 │     │
-││      │ ...   ...   ...  │     │
-││      │ 0.00  2.00  4.00 │     │
-││      │ 0.00  2.00  5.00 │     │
-│├──────┼──────────────────┤     │
-││3 @ 1 │ 0.00  3.00  0.00 │     │
-││axis 2│ 0.00  3.00  1.00 │     │
-││      │ ...   ...   ...  │     │
-││      │ 0.00  3.00  4.00 │     │
-││      │ 0.00  3.00  5.00 │     │
-│├──────┼──────────────────┤     │
-││4 @ 1 │ 0.00  4.00  0.00 │     │
-││axis 2│ 0.00  4.00  1.00 │     │
-││      │ ...   ...   ...  │     │
-││      │ 0.00  4.00  4.00 │     │
-││      │ 0.00  4.00  5.00 │     │
-│└──────┴──────────────────┘     │
-├────────────────────────────────┤
-│┌──────┬──────────────────┐     │
-││1 @ 0 │axis 3            │     │
-│├──────┼──────────────────┤     │
-││0 @ 1 │ 1.00  0.00  0.00 │     │
-││axis 2│ 1.00  0.00  1.00 │     │
-││      │ ...   ...   ...  │     │
-││      │ 1.00  0.00  4.00 │     │
-││      │ 1.00  0.00  5.00 │     │
-│├──────┼──────────────────┤     │
-││1 @ 1 │ 1.00  1.00  0.00 │     │
-││axis 2│ 1.00  1.00  1.00 │     │
-││      │ ...   ...   ...  │     │
-││      │ 1.00  1.00  4.00 │     │
-││      │ 1.00  1.00  5.00 │     │
-│├──────┼──────────────────┤     │
-││2 @ 1 │ 1.00  2.00  0.00 │     │
-││axis 2│ 1.00  2.00  1.00 │     │
-││      │ ...   ...   ...  │     │
-││      │ 1.00  2.00  4.00 │     │
-││      │ 1.00  2.00  5.00 │     │
-│├──────┼──────────────────┤     │
-││3 @ 1 │ 1.00  3.00  0.00 │     │
-││axis 2│ 1.00  3.00  1.00 │     │
-││      │ ...   ...   ...  │     │
-││      │ 1.00  3.00  4.00 │     │
-││      │ 1.00  3.00  5.00 │     │
-│├──────┼──────────────────┤     │
-││4 @ 1 │ 1.00  4.00  0.00 │     │
-││axis 2│ 1.00  4.00  1.00 │     │
-││      │ ...   ...   ...  │     │
-││      │ 1.00  4.00  4.00 │     │
-││      │ 1.00  4.00  5.00 │     │
-│└──────┴──────────────────┘     │
-├────────────────────────────────┤
-│┌──────┬──────────────────┐     │
-││2 @ 0 │axis 3            │     │
-│├──────┼──────────────────┤     │
-││0 @ 1 │ 2.00  0.00  0.00 │     │
-││axis 2│ 2.00  0.00  1.00 │     │
-││      │ ...   ...   ...  │     │
-││      │ 2.00  0.00  4.00 │     │
-││      │ 2.00  0.00  5.00 │     │
-│├──────┼──────────────────┤     │
-││1 @ 1 │ 2.00  1.00  0.00 │     │
-││axis 2│ 2.00  1.00  1.00 │     │
-││      │ ...   ...   ...  │     │
-││      │ 2.00  1.00  4.00 │     │
-││      │ 2.00  1.00  5.00 │     │
-│├──────┼──────────────────┤     │
-││2 @ 1 │ 2.00  2.00  0.00 │     │
-││axis 2│ 2.00  2.00  1.00 │     │
-││      │ ...   ...   ...  │     │
-││      │ 2.00  2.00  4.00 │     │
-││      │ 2.00  2.00  5.00 │     │
-│├──────┼──────────────────┤     │
-││3 @ 1 │ 2.00  3.00  0.00 │     │
-││axis 2│ 2.00  3.00  1.00 │     │
-││      │ ...   ...   ...  │     │
-││      │ 2.00  3.00  4.00 │     │
-││      │ 2.00  3.00  5.00 │     │
-│├──────┼──────────────────┤     │
-││4 @ 1 │ 2.00  4.00  0.00 │     │
-││axis 2│ 2.00  4.00  1.00 │     │
-││      │ ...   ...   ...  │     │
-││      │ 2.00  4.00  4.00 │     │
-││      │ 2.00  4.00  5.00 │     │
-│└──────┴──────────────────┘     │
-├────────────────────────────────┤
-│┌──────┬──────────────────┐     │
-││3 @ 0 │axis 3            │     │
-│├──────┼──────────────────┤     │
-││0 @ 1 │ 3.00  0.00  0.00 │     │
-││axis 2│ 3.00  0.00  1.00 │     │
-││      │ ...   ...   ...  │     │
-││      │ 3.00  0.00  4.00 │     │
-││      │ 3.00  0.00  5.00 │     │
-│├──────┼──────────────────┤     │
-││1 @ 1 │ 3.00  1.00  0.00 │     │
-││axis 2│ 3.00  1.00  1.00 │     │
-││      │ ...   ...   ...  │     │
-││      │ 3.00  1.00  4.00 │     │
-││      │ 3.00  1.00  5.00 │     │
-│├──────┼──────────────────┤     │
-││2 @ 1 │ 3.00  2.00  0.00 │     │
-││axis 2│ 3.00  2.00  1.00 │     │
-││      │ ...   ...   ...  │     │
-││      │ 3.00  2.00  4.00 │     │
-││      │ 3.00  2.00  5.00 │     │
-│├──────┼──────────────────┤     │
-││3 @ 1 │ 3.00  3.00  0.00 │     │
-││axis 2│ 3.00  3.00  1.00 │     │
-││      │ ...   ...   ...  │     │
-││      │ 3.00  3.00  4.00 │     │
-││      │ 3.00  3.00  5.00 │     │
-│├──────┼──────────────────┤     │
-││4 @ 1 │ 3.00  4.00  0.00 │     │
-││axis 2│ 3.00  4.00  1.00 │     │
-││      │ ...   ...   ...  │     │
-││      │ 3.00  4.00  4.00 │     │
-││      │ 3.00  4.00  5.00 │     │
-│└──────┴──────────────────┘     │
-└────────────────────────────────┘
+HERE: test/einsum/einsum_trivia_exec.ml:274:21
+┌────────────────────────────────────────┐
+│[9]: ;=>+ shape 0:4,1:5,2:6,3:3         │
+│┌──────┬──────────────────────────────┐ │
+││0 @ 0 │axis 3                        │ │
+│├──────┼──────────────────────────────┤ │
+││0 @ 1 │ 6.60e-28  7.64e-41   0.00    │ │
+││axis 2│ 4.57e-41  -1.99e+12  1.00    │ │
+││      │ ...       ...        ...     │ │
+││      │ 8.40e+20  6.14e-41   4.00    │ │
+││      │ 4.57e-41  1.30e+1    5.00    │ │
+│├──────┼──────────────────────────────┤ │
+││1 @ 1 │ 6.60e-28  1.00       2.06e+3 │ │
+││axis 2│ 4.57e-41  -1.99e+12  2.06e+3 │ │
+││      │ ...       ...        ...     │ │
+││      │ 8.40e+20  1.00       2.06e+3 │ │
+││      │ 4.57e-41  1.40e+1    2.06e+3 │ │
+│├──────┼──────────────────────────────┤ │
+││2 @ 1 │ 2.14e+3   2.00       2.46e+3 │ │
+││axis 2│ 2.14e+3   -1.99e+12  2.46e+3 │ │
+││      │ ...       ...        ...     │ │
+││      │ 8.40e+20  2.00       2.46e+3 │ │
+││      │ 2.14e+3   1.50e+1    2.46e+3 │ │
+│├──────┼──────────────────────────────┤ │
+││3 @ 1 │ 2.48e+3   3.00       2.86e+3 │ │
+││axis 2│ 2.48e+3   -1.99e+12  2.86e+3 │ │
+││      │ ...       ...        ...     │ │
+││      │ 8.40e+20  3.00       2.86e+3 │ │
+││      │ 2.48e+3   1.60e+1    2.86e+3 │ │
+│├──────┼──────────────────────────────┤ │
+││4 @ 1 │ 2.82e+3   4.00       3.26e+3 │ │
+││axis 2│ 2.82e+3   -1.99e+12  3.26e+3 │ │
+││      │ ...       ...        ...     │ │
+││      │ 8.40e+20  4.00       3.26e+3 │ │
+││      │ 2.82e+3   1.70e+1    3.26e+3 │ │
+│└──────┴──────────────────────────────┘ │
+├────────────────────────────────────────┤
+│┌──────┬──────────────────────────────┐ │
+││1 @ 0 │axis 3                        │ │
+│├──────┼──────────────────────────────┤ │
+││0 @ 1 │ 1.00      4.57e-41   0.00    │ │
+││axis 2│ 1.00      -1.99e+12  1.00    │ │
+││      │ ...       ...        ...     │ │
+││      │ 8.40e+20  3.07e-41   4.00    │ │
+││      │ 1.00      1.30e+1    5.00    │ │
+│├──────┼──────────────────────────────┤ │
+││1 @ 1 │ 1.00      1.00       2.06e+3 │ │
+││axis 2│ 1.00      -1.99e+12  2.06e+3 │ │
+││      │ ...       ...        ...     │ │
+││      │ 8.40e+20  1.00       2.06e+3 │ │
+││      │ 1.00      1.40e+1    2.06e+3 │ │
+│├──────┼──────────────────────────────┤ │
+││2 @ 1 │ 2.14e+3   2.00       2.46e+3 │ │
+││axis 2│ 2.14e+3   -1.99e+12  2.46e+3 │ │
+││      │ ...       ...        ...     │ │
+││      │ 8.40e+20  2.00       2.46e+3 │ │
+││      │ 2.14e+3   1.50e+1    2.46e+3 │ │
+│├──────┼──────────────────────────────┤ │
+││3 @ 1 │ 2.48e+3   3.00       2.86e+3 │ │
+││axis 2│ 2.48e+3   -1.99e+12  2.86e+3 │ │
+││      │ ...       ...        ...     │ │
+││      │ 8.40e+20  3.00       2.86e+3 │ │
+││      │ 2.48e+3   1.60e+1    2.86e+3 │ │
+│├──────┼──────────────────────────────┤ │
+││4 @ 1 │ 2.82e+3   4.00       3.26e+3 │ │
+││axis 2│ 2.82e+3   -1.99e+12  3.26e+3 │ │
+││      │ ...       ...        ...     │ │
+││      │ 8.40e+20  4.00       3.26e+3 │ │
+││      │ 2.82e+3   1.70e+1    3.26e+3 │ │
+│└──────┴──────────────────────────────┘ │
+├────────────────────────────────────────┤
+│┌──────┬───────────────────────────────┐│
+││2 @ 0 │axis 3                         ││
+│├──────┼───────────────────────────────┤│
+││0 @ 1 │ 2.00      4.57e-41   5.60e-45 ││
+││axis 2│ 2.00      -1.99e+12  1.00     ││
+││      │ ...       ...        ...      ││
+││      │ 8.40e+20  3.07e-41   4.00     ││
+││      │ 2.00      1.30e+1    5.00     ││
+│├──────┼───────────────────────────────┤│
+││1 @ 1 │ 2.00      1.00       2.06e+3  ││
+││axis 2│ 2.00      -1.99e+12  2.06e+3  ││
+││      │ ...       ...        ...      ││
+││      │ 8.40e+20  1.00       2.06e+3  ││
+││      │ 2.00      1.40e+1    2.06e+3  ││
+│├──────┼───────────────────────────────┤│
+││2 @ 1 │ 2.15e+3   2.00       2.46e+3  ││
+││axis 2│ 2.15e+3   -1.99e+12  2.46e+3  ││
+││      │ ...       ...        ...      ││
+││      │ 8.40e+20  2.00       2.46e+3  ││
+││      │ 2.15e+3   1.50e+1    2.46e+3  ││
+│├──────┼───────────────────────────────┤│
+││3 @ 1 │ 2.48e+3   3.00       2.86e+3  ││
+││axis 2│ 2.48e+3   -1.99e+12  2.86e+3  ││
+││      │ ...       ...        ...      ││
+││      │ 8.40e+20  3.00       2.86e+3  ││
+││      │ 2.48e+3   1.60e+1    2.86e+3  ││
+│├──────┼───────────────────────────────┤│
+││4 @ 1 │ 2.82e+3   4.00       3.26e+3  ││
+││axis 2│ 2.82e+3   -1.99e+12  3.26e+3  ││
+││      │ ...       ...        ...      ││
+││      │ 8.40e+20  4.00       3.26e+3  ││
+││      │ 2.82e+3   1.70e+1    3.26e+3  ││
+│└──────┴───────────────────────────────┘│
+├────────────────────────────────────────┤
+│┌──────┬──────────────────────────────┐ │
+││3 @ 0 │axis 3                        │ │
+│├──────┼──────────────────────────────┤ │
+││0 @ 1 │ 3.00      4.57e-41   0.00    │ │
+││axis 2│ 3.00      -1.99e+12  1.00    │ │
+││      │ ...       ...        ...     │ │
+││      │ 8.40e+20  3.07e-41   4.00    │ │
+││      │ 3.00      1.30e+1    5.00    │ │
+│├──────┼──────────────────────────────┤ │
+││1 @ 1 │ 3.00      1.00       2.06e+3 │ │
+││axis 2│ 3.00      -1.99e+12  2.06e+3 │ │
+││      │ ...       ...        ...     │ │
+││      │ 8.40e+20  1.00       2.06e+3 │ │
+││      │ 3.00      1.40e+1    2.06e+3 │ │
+│├──────┼──────────────────────────────┤ │
+││2 @ 1 │ 2.15e+3   2.00       2.46e+3 │ │
+││axis 2│ 2.15e+3   -1.99e+12  2.46e+3 │ │
+││      │ ...       ...        ...     │ │
+││      │ 8.40e+20  2.00       2.46e+3 │ │
+││      │ 2.15e+3   1.50e+1    2.46e+3 │ │
+│├──────┼──────────────────────────────┤ │
+││3 @ 1 │ 2.48e+3   3.00       2.86e+3 │ │
+││axis 2│ 2.48e+3   -1.99e+12  2.86e+3 │ │
+││      │ ...       ...        ...     │ │
+││      │ 8.40e+20  3.00       2.86e+3 │ │
+││      │ 2.48e+3   1.60e+1    2.86e+3 │ │
+│├──────┼──────────────────────────────┤ │
+││4 @ 1 │ 2.82e+3   4.00       3.26e+3 │ │
+││axis 2│ 2.82e+3   -1.99e+12  3.26e+3 │ │
+││      │ ...       ...        ...     │ │
+││      │ 8.40e+20  4.00       3.26e+3 │ │
+││      │ 2.82e+3   1.70e+1    3.26e+3 │ │
+│└──────┴──────────────────────────────┘ │
+└────────────────────────────────────────┘
+
+
+HERE: test/einsum/einsum_trivia_exec.ml:275:21
+┌───────────────────────────────────┐
+│[1]: =>_ti shape 0:4,1:3           │
+│┌──────┬──────────────────────────┐│
+││      │axis 1                    ││
+│├──────┼──────────────────────────┤│
+││axis 0│ 0.00  3.07e-41  0.00     ││
+││      │ 1.00  0.00      0.00     ││
+││      │ 2.00  0.00      5.60e-45 ││
+││      │ 3.00  0.00      0.00     ││
+│└──────┴─────────────────────────┘│
+└───────────────────────────────────┘
+
+
+HERE: test/einsum/einsum_trivia_exec.ml:276:21
+┌────────────────────────────────────┐
+│[7]: =>_tk shape 0:6,1:3            │
+│┌──────┬───────────────────────────┐│
+││      │axis 1                     ││
+│├──────┼───────────────────────────┤│
+││axis 0│ 6.60e-28  4.57e-41   0.00 ││
+││      │ 4.57e-41  -1.99e+12  1.00 ││
+││      │ ...       ...        ...  ││
+││      │ 8.40e+20  3.07e-41   4.00 ││
+││      │ 4.57e-41  1.30e+1    5.00 ││
+│└──────┴───────────────────────────┘│
+└────────────────────────────────────┘


HERE: test/einsum/einsum_trivia_exec.ml:299:21
-┌───────────────────────────┐
-│[1]: =>_ti shape 0:4,1:3   │
-│┌──────┬──────────────────┐│
-││      │axis 1            ││
-│├──────┼──────────────────┤│
-││axis 0│ 0.00  0.00  0.00 ││
-││      │ 1.00  0.00  0.00 ││
-││      │ 2.00  0.00  0.00 ││
-││      │ 3.00  0.00  0.00 ││
-│└──────┴──────────────────┘│
-└───────────────────────────┘
-
-
-HERE: test/einsum/einsum_trivia_exec.ml:300:21
-┌───────────────────────────┐
-│[7]: =>_tk shape 0:6,1:3   │
-│┌──────┬──────────────────┐│
-││      │axis 1            ││
-│├──────┼──────────────────┤│
-││axis 0│ 0.00  0.00  0.00 ││
-││      │ 0.00  0.00  1.00 ││
-││      │ ...   ...   ...  ││
-││      │ 0.00  0.00  4.00 ││
-││      │ 0.00  0.00  5.00 ││
-│└──────┴──────────────────┘│
-└───────────────────────────┘
-
-
-HERE: test/einsum/einsum_trivia_exec.ml:323:21
-[0]: r3x2x4_a shape 0:3|2:4->1:2  <virtual>HERE: test/einsum/einsum_trivia_exec.ml:324:21
-[1]: r3x4x2x3_b shape 0:3|2:2,3:3->1:4  <virtual>HERE: test/einsum/einsum_trivia_exec.ml:325:21
┌─────────────────────────────────────────────────────────────────┐
│[2]: ;=>_c shape 0:3|1:4,2:2                                     │
│┌──────┬──────────────────┬──────────────────┬──────────────────┐│
@@ -921,9 +895,7 @@ HERE: test/einsum/einsum_trivia_exec.ml:323:21
└─────────────────────────────────────────────────────────────────┘


-HERE: test/einsum/einsum_trivia_exec.ml:344:21
-[0]: r2x2_a shape 1:2->0:2  <virtual>HERE: test/einsum/einsum_trivia_exec.ml:345:21
-[1]: r2x2x3x4_b shape 1:2,2:3,3:4->0:2  <virtual>HERE: test/einsum/einsum_trivia_exec.ml:346:21
+HERE: test/einsum/einsum_trivia_exec.ml:318:21
┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│[2]: ;=>_c shape 2:4->0:3,1:2                                                                                          │
│┌──────┬────────────────────────────────────┬────────────────────────────────────┬────────────────────────────────────┐│
(cd _build/.sandbox/a33b19e207c4292bdc0e774f53f7d2b5/default/test/einsum && .einsum_tutorials.inline-tests/inline-test-runner.exe inline-test-runner einsum_tutorials -partition einsum_trivia.ml -source-tree-root ../.. -diff-cmd -)


Welcome to OCANNL! Reading configuration defaults from /src/_build/.sandbox/a33b19e207c4292bdc0e774f53f7d2b5/default/test/einsum/ocannl_config.
Retrieving commandline, environment, or config file variable ocannl_log_level
Found 0, in the config file
File "test/einsum/einsum_trivia.ml", line 1, characters 0-0:
/usr/bin/git --no-pager diff --no-index --color=always -u _build/default/test/einsum/einsum_trivia.ml _build/.sandbox/a33b19e207c4292bdc0e774f53f7d2b5/default/test/einsum/einsum_trivia.ml.corrected
diff --git a/_build/default/test/einsum/einsum_trivia.ml b/_build/.sandbox/a33b19e207c4292bdc0e774f53f7d2b5/default/test/einsum/einsum_trivia.ml.corrected
index b68c137..fbc3be7 100644
--- a/_build/default/test/einsum/einsum_trivia.ml
+++ b/_build/.sandbox/a33b19e207c4292bdc0e774f53f7d2b5/default/test/einsum/einsum_trivia.ml.corrected
@@ -32,6 +32,7 @@ let%expect_test "einsum1 permute axes" =
Tensor.print ~here:[%here] ~with_code:false ~with_grad:false `Default @@ ho;
[%expect
{|
+    HERE: test/einsum/einsum_trivia.ml:32:21
┌───────────────────────────────────────────────────────────────────────────┐
│[1]: =>_ho shape 0:4|2:2->1:3                                              │
│┌──────┬───────────────┬───────────────┬───────────────┬──────────────────┐│
@@ -52,6 +53,7 @@ let%expect_test "einsum1 permute axes" =
Tensor.print ~here:[%here] ~with_code:false ~with_grad:false `Default @@ ho2;
[%expect
{|
+    HERE: test/einsum/einsum_trivia.ml:52:21
┌────────────────────────────────────────────────────────────────────────────────────────────┐
│[3]: =>_ho2 shape 0:4,1:7|4:2,5:6->2:5,3:3                                                  │
│┌──────┬─────────────────────────────────────────┬─────────────────────────────────────────┐│
@@ -178,6 +180,7 @@ let%expect_test "einsum1 sum out axes" =
Tensor.print ~here:[%here] ~with_code:false ~with_grad:false `Default @@ ho;
[%expect
{|
+    HERE: test/einsum/einsum_trivia.ml:178:21
┌────────────────────────────────────┐
│[1]: =>_ho shape 0:2|1:3            │
│┌──────┬───────────────────────────┐│
@@ -198,6 +201,7 @@ let%expect_test "einsum1 sum out axes" =
Tensor.print ~here:[%here] ~with_code:false ~with_grad:false `Default @@ ho2;
[%expect
{|
+    HERE: test/einsum/einsum_trivia.ml:198:21
┌────────────────────────────────────────────────────────────────────────────────────┐
│[3]: =>_ho2 shape 0:4|2:2->1:5                                                      │
│┌──────┬──────────────────┬──────────────────┬──────────────────┬──────────────────┐│
@@ -234,6 +238,7 @@ let%expect_test "einsum outer product" =
Tensor.print ~here:[%here] ~with_code:false ~with_grad:false `Default @@ c;
[%expect
{|
+    HERE: test/einsum/einsum_trivia.ml:234:21
┌──────────────────────────┐
│[4]: ;=>_c shape 1:2->0:3 │
│┌──────┬────────────┐     │
@@ -252,6 +257,7 @@ let%expect_test "einsum outer product" =
Tensor.print ~here:[%here] ~with_code:false ~with_grad:false `Default @@ c;
[%expect
{|
+    HERE: test/einsum/einsum_trivia.ml:252:21
┌──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│[7]: ;=>_c shape 0:2,1:5|4:3,5:6->2:4,3:7                                                                                             │
│┌──────┬─────────────────────────────────────────┬─────────────────────────────────────────┬─────────────────────────────────────────┐│
@@ -430,6 +436,7 @@ let%expect_test "einsum matrix/inner+outer products" =
Tensor.print ~here:[%here] ~with_code:false ~with_grad:false `Default @@ a2;
[%expect
{|
+    HERE: test/einsum/einsum_trivia.ml:430:21
┌────────────────────────────────────────────────────────────────┐
│[2]: ;=>_a2 shape 0:2|2:3->1:4                                  │
│┌──────┬───────────────────────────┬───────────────────────────┐│
@@ -446,6 +453,7 @@ let%expect_test "einsum matrix/inner+outer products" =
Tensor.print ~here:[%here] ~with_code:false ~with_grad:false `Default @@ c;
[%expect
{|
+    HERE: test/einsum/einsum_trivia.ml:446:21
┌────────────────────────────────────────────────────────────────┐
│[3]: ;=>_c shape 0:2|2:3->1:5                                   │
│┌──────┬───────────────────────────┬───────────────────────────┐│
@@ -463,6 +471,7 @@ let%expect_test "einsum matrix/inner+outer products" =
Tensor.print ~here:[%here] ~with_code:false ~with_grad:false `Default @@ d;
[%expect
{|
+    HERE: test/einsum/einsum_trivia.ml:463:21
┌────────────────────────────────────────────────────────────────┐
│[4]: ;=>_d shape 0:2,1:2|3:3->2:5                               │
│┌──────┬───────────────────────────┬───────────────────────────┐│
@@ -486,6 +495,7 @@ let%expect_test "einsum matrix/inner+outer products" =
Tensor.print ~here:[%here] ~with_code:false ~with_grad:false `Default @@ e;
[%expect
{|
+    HERE: test/einsum/einsum_trivia.ml:486:21
┌────────────────────────────────────┐
│[5]: ;=>_e shape 1:3->0:5           │
│┌──────┬───────────────────────────┐│
@@ -502,6 +512,7 @@ let%expect_test "einsum matrix/inner+outer products" =
Tensor.print ~here:[%here] ~with_code:false ~with_grad:false `Default @@ f;
[%expect
{|
+    HERE: test/einsum/einsum_trivia.ml:502:21
┌────────────────────────────────────┐
│[6]: ;=>_f shape 1:3->0:5           │
│┌──────┬───────────────────────────┐│
@@ -536,6 +547,7 @@ let%expect_test "einsum1 broadcast or sum out prefix axes" =
Tensor.print ~here:[%here] ~with_code:false ~with_grad:false `Default @@ ho;
[%expect
{|
+    HERE: test/einsum/einsum_trivia.ml:536:21
┌─────────────────────────────────────────────────────────────────────────┐
│[1]: =>_ho shape 0:2|2:4->1:3                                            │
│┌──────┬───────────────────────────┬────────────────────────────────────┐│
@@ -553,6 +565,7 @@ let%expect_test "einsum1 broadcast or sum out prefix axes" =
Tensor.print ~here:[%here] ~with_code:false ~with_grad:false `Default @@ ho2;
[%expect
{|
+    HERE: test/einsum/einsum_trivia.ml:553:21
┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│[2]: =>_ho2 shape 0:4|2:3->1:2                                                                                          │
│┌──────┬───────────────────────────┬───────────────────────────┬───────────────────────────┬───────────────────────────┐│
@@ -573,6 +586,7 @@ let%expect_test "einsum1 broadcast or sum out prefix axes" =
Tensor.print ~here:[%here] ~with_code:false ~with_grad:false `Default @@ ho3;
[%expect
{|
+    HERE: test/einsum/einsum_trivia.ml:573:21
┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│[4]: =>_ho3 shape 0:2,1:5|4:4,5:7->2:6,3:3                                                                                                                                      │
│┌──────┬─────────────────────────────────────────┬─────────────────────────────────────────┬─────────────────────────────────────────┬─────────────────────────────────────────┐│
@@ -702,6 +716,7 @@ let%expect_test "einsum1 broadcast or sum out prefix axes" =
Tensor.print ~here:[%here] ~with_code:false ~with_grad:false `Default @@ ho4;
[%expect
{|
+    HERE: test/einsum/einsum_trivia.ml:702:21
┌──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│[5]: =>_ho4 shape 0:5|2:7->1:3                                                                                                                                                                                            │
│┌──────┬─────────────────────────────────────────┬─────────────────────────────────────────┬─────────────────────────────────────────┬─────────────────────────────────────────┬─────────────────────────────────────────┐│
@@ -719,22 +734,13 @@ let%expect_test "einsum1 broadcast or sum out prefix axes" =
Tensor.print ~here:[%here] ~with_code:false ~with_grad:false `Default @@ hey;
[%expect
{|
-    ┌─────────────────────────────────────────────────────────────┐
-    │[0]: r2x4x3 shape 0:2|2:3->1:4                               │
-    │┌──────┬────────────────────────┬───────────────────────────┐│
-    ││      │0 @ 0                   │1 @ 0                      ││
-    ││      │axis 2                  │axis 2                     ││
-    │├──────┼────────────────────────┼───────────────────────────┤│
-    ││axis 1│ 0.00  1.00     2.00    │ 1.20e+1  1.30e+1  1.40e+1 ││
-    ││      │ 3.00  4.00     5.00    │ 1.50e+1  1.60e+1  1.70e+1 ││
-    ││      │ 6.00  7.00     8.00    │ 1.80e+1  1.90e+1  2.00e+1 ││
-    ││      │ 9.00  1.00e+1  1.10e+1 │ 2.10e+1  2.20e+1  2.30e+1 ││
-    │└──────┴────────────────────────┴───────────────────────────┘│
-    └─────────────────────────────────────────────────────────────┘
+    HERE: test/einsum/einsum_trivia.ml:719:21
+    [0]: r2x4x3 shape 0:2|2:3->1:4  <virtual>
|}];
Tensor.print ~here:[%here] ~with_code:false ~with_grad:false `Default @@ ho5;
[%expect
{|
+    HERE: test/einsum/einsum_trivia.ml:735:21
┌───────────────────────────────────────┐
│[6]: =>_ho5 shape 0:4                  │
│┌┬────────────────────────────────────┐│
@@ -750,6 +756,7 @@ let%expect_test "einsum1 broadcast or sum out prefix axes" =
Tensor.print ~here:[%here] ~with_code:false ~with_grad:false `Default @@ ho6;
[%expect
{|
+    HERE: test/einsum/einsum_trivia.ml:750:21
┌───────────────────────────────────────┐
│[8]: =>_ho6 shape 0:4                  │
│┌┬────────────────────────────────────┐│
@@ -766,6 +773,7 @@ let%expect_test "einsum1 broadcast or sum out prefix axes" =
Tensor.print ~here:[%here] ~with_code:false ~with_grad:false `Default @@ ho7;
[%expect
{|
+    HERE: test/einsum/einsum_trivia.ml:766:21
┌─────────────────────────────────────────────┐
│[10]: =>_ho7 shape 0:3,1:2,2:4               │
│┌──────┬────────────────────────────────────┐│
@@ -804,6 +812,7 @@ let%expect_test "einsum broadcast or sum out prefix axes" =
Tensor.print ~here:[%here] ~with_code:false ~with_grad:false `Default @@ c;
[%expect
{|
+    HERE: test/einsum/einsum_trivia.ml:804:21
┌─────────────────────────────────────────────┐
│[2]: ;=>_c shape 0:3|1:4                     │
│┌──────┬────────────────────────────────────┐│
@@ -823,6 +832,7 @@ let%expect_test "einsum broadcast or sum out prefix axes" =
Tensor.print ~here:[%here] ~with_code:false ~with_grad:false `Default @@ f;
[%expect
{|
+    HERE: test/einsum/einsum_trivia.ml:823:21
┌─────────────────────────────────────────────┐
│[5]: ;=>_f shape 0:3,1:2,2:4                 │
│┌──────┬────────────────────────────────────┐│
@@ -860,6 +870,7 @@ let%expect_test "einsum1 fixed dim axis" =
Tensor.print ~here:[%here] ~with_code:false ~with_grad:false `Default @@ ho;
[%expect
{|
+    HERE: test/einsum/einsum_trivia.ml:860:21
┌─────────────────────────────────────────────┐
│[1]: =>_ho shape 0:2|1:4                     │
│┌──────┬────────────────────────────────────┐│
@@ -875,6 +886,7 @@ let%expect_test "einsum1 fixed dim axis" =
Tensor.print ~here:[%here] ~with_code:false ~with_grad:false `Default @@ ho2;
[%expect
{|
+    HERE: test/einsum/einsum_trivia.ml:875:21
┌────────────────────────────────────────────────────────────────┐
│[2]: =>_ho2 shape 0:2|2:3->1:1                                  │
│┌──────┬───────────────────────────┬───────────────────────────┐│
@@ -891,6 +903,7 @@ let%expect_test "einsum1 fixed dim axis" =
Tensor.print ~here:[%here] ~with_code:false ~with_grad:false `Default @@ ho3;
[%expect
{|
+    HERE: test/einsum/einsum_trivia.ml:891:21
┌──────────────────────┐
│[4]: =>_ho3 shape 0:1 │
│┌┬─────────┐          │
@@ -905,6 +918,7 @@ let%expect_test "einsum1 fixed dim axis" =
Tensor.print ~here:[%here] ~with_code:false ~with_grad:false `Default @@ ho4;
[%expect
{|
+    HERE: test/einsum/einsum_trivia.ml:905:21
┌──────────────────────────────┐
│[5]: =>_ho4 shape 0:2,1:1,2:3 │
│┌──────┬──────────────────┐   │
@@ -940,6 +954,7 @@ let%expect_test "einsum with fixed dim axes" =
Tensor.print ~here:[%here] ~with_code:false ~with_grad:false `Default @@ c;
[%expect
{|
+    HERE: test/einsum/einsum_trivia.ml:940:21
┌─────────────────────────────────────────────┐
│[2]: ;=>_c shape 0:3|1:4                     │
│┌──────┬────────────────────────────────────┐│
@@ -980,175 +995,178 @@ let%expect_test "outer_sum simulating axis concatenation" =
Tensor.print ~here:[%here] ~with_code:false ~with_grad:false `Default @@ positions;
[%expect
{|
-    ┌────────────────────────────────┐
-    │[9]: ;=>+ shape 0:4,1:5,2:6,3:3 │
-    │┌──────┬──────────────────┐     │
-    ││0 @ 0 │axis 3            │     │
-    │├──────┼──────────────────┤     │
-    ││0 @ 1 │ 0.00  0.00  0.00 │     │
-    ││axis 2│ 0.00  0.00  1.00 │     │
-    ││      │ ...   ...   ...  │     │
-    ││      │ 0.00  0.00  4.00 │     │
-    ││      │ 0.00  0.00  5.00 │     │
-    │├──────┼──────────────────┤     │
-    ││1 @ 1 │ 0.00  1.00  0.00 │     │
-    ││axis 2│ 0.00  1.00  1.00 │     │
-    ││      │ ...   ...   ...  │     │
-    ││      │ 0.00  1.00  4.00 │     │
-    ││      │ 0.00  1.00  5.00 │     │
-    │├──────┼──────────────────┤     │
-    ││2 @ 1 │ 0.00  2.00  0.00 │     │
-    ││axis 2│ 0.00  2.00  1.00 │     │
-    ││      │ ...   ...   ...  │     │
-    ││      │ 0.00  2.00  4.00 │     │
-    ││      │ 0.00  2.00  5.00 │     │
-    │├──────┼──────────────────┤     │
-    ││3 @ 1 │ 0.00  3.00  0.00 │     │
-    ││axis 2│ 0.00  3.00  1.00 │     │
-    ││      │ ...   ...   ...  │     │
-    ││      │ 0.00  3.00  4.00 │     │
-    ││      │ 0.00  3.00  5.00 │     │
-    │├──────┼──────────────────┤     │
-    ││4 @ 1 │ 0.00  4.00  0.00 │     │
-    ││axis 2│ 0.00  4.00  1.00 │     │
-    ││      │ ...   ...   ...  │     │
-    ││      │ 0.00  4.00  4.00 │     │
-    ││      │ 0.00  4.00  5.00 │     │
-    │└──────┴──────────────────┘     │
-    ├────────────────────────────────┤
-    │┌──────┬──────────────────┐     │
-    ││1 @ 0 │axis 3            │     │
-    │├──────┼──────────────────┤     │
-    ││0 @ 1 │ 1.00  0.00  0.00 │     │
-    ││axis 2│ 1.00  0.00  1.00 │     │
-    ││      │ ...   ...   ...  │     │
-    ││      │ 1.00  0.00  4.00 │     │
-    ││      │ 1.00  0.00  5.00 │     │
-    │├──────┼──────────────────┤     │
-    ││1 @ 1 │ 1.00  1.00  0.00 │     │
-    ││axis 2│ 1.00  1.00  1.00 │     │
-    ││      │ ...   ...   ...  │     │
-    ││      │ 1.00  1.00  4.00 │     │
-    ││      │ 1.00  1.00  5.00 │     │
-    │├──────┼──────────────────┤     │
-    ││2 @ 1 │ 1.00  2.00  0.00 │     │
-    ││axis 2│ 1.00  2.00  1.00 │     │
-    ││      │ ...   ...   ...  │     │
-    ││      │ 1.00  2.00  4.00 │     │
-    ││      │ 1.00  2.00  5.00 │     │
-    │├──────┼──────────────────┤     │
-    ││3 @ 1 │ 1.00  3.00  0.00 │     │
-    ││axis 2│ 1.00  3.00  1.00 │     │
-    ││      │ ...   ...   ...  │     │
-    ││      │ 1.00  3.00  4.00 │     │
-    ││      │ 1.00  3.00  5.00 │     │
-    │├──────┼──────────────────┤     │
-    ││4 @ 1 │ 1.00  4.00  0.00 │     │
-    ││axis 2│ 1.00  4.00  1.00 │     │
-    ││      │ ...   ...   ...  │     │
-    ││      │ 1.00  4.00  4.00 │     │
-    ││      │ 1.00  4.00  5.00 │     │
-    │└──────┴──────────────────┘     │
-    ├────────────────────────────────┤
-    │┌──────┬──────────────────┐     │
-    ││2 @ 0 │axis 3            │     │
-    │├──────┼──────────────────┤     │
-    ││0 @ 1 │ 2.00  0.00  0.00 │     │
-    ││axis 2│ 2.00  0.00  1.00 │     │
-    ││      │ ...   ...   ...  │     │
-    ││      │ 2.00  0.00  4.00 │     │
-    ││      │ 2.00  0.00  5.00 │     │
-    │├──────┼──────────────────┤     │
-    ││1 @ 1 │ 2.00  1.00  0.00 │     │
-    ││axis 2│ 2.00  1.00  1.00 │     │
-    ││      │ ...   ...   ...  │     │
-    ││      │ 2.00  1.00  4.00 │     │
-    ││      │ 2.00  1.00  5.00 │     │
-    │├──────┼──────────────────┤     │
-    ││2 @ 1 │ 2.00  2.00  0.00 │     │
-    ││axis 2│ 2.00  2.00  1.00 │     │
-    ││      │ ...   ...   ...  │     │
-    ││      │ 2.00  2.00  4.00 │     │
-    ││      │ 2.00  2.00  5.00 │     │
-    │├──────┼──────────────────┤     │
-    ││3 @ 1 │ 2.00  3.00  0.00 │     │
-    ││axis 2│ 2.00  3.00  1.00 │     │
-    ││      │ ...   ...   ...  │     │
-    ││      │ 2.00  3.00  4.00 │     │
-    ││      │ 2.00  3.00  5.00 │     │
-    │├──────┼──────────────────┤     │
-    ││4 @ 1 │ 2.00  4.00  0.00 │     │
-    ││axis 2│ 2.00  4.00  1.00 │     │
-    ││      │ ...   ...   ...  │     │
-    ││      │ 2.00  4.00  4.00 │     │
-    ││      │ 2.00  4.00  5.00 │     │
-    │└──────┴──────────────────┘     │
-    ├────────────────────────────────┤
-    │┌──────┬──────────────────┐     │
-    ││3 @ 0 │axis 3            │     │
-    │├──────┼──────────────────┤     │
-    ││0 @ 1 │ 3.00  0.00  0.00 │     │
-    ││axis 2│ 3.00  0.00  1.00 │     │
-    ││      │ ...   ...   ...  │     │
-    ││      │ 3.00  0.00  4.00 │     │
-    ││      │ 3.00  0.00  5.00 │     │
-    │├──────┼──────────────────┤     │
-    ││1 @ 1 │ 3.00  1.00  0.00 │     │
-    ││axis 2│ 3.00  1.00  1.00 │     │
-    ││      │ ...   ...   ...  │     │
-    ││      │ 3.00  1.00  4.00 │     │
-    ││      │ 3.00  1.00  5.00 │     │
-    │├──────┼──────────────────┤     │
-    ││2 @ 1 │ 3.00  2.00  0.00 │     │
-    ││axis 2│ 3.00  2.00  1.00 │     │
-    ││      │ ...   ...   ...  │     │
-    ││      │ 3.00  2.00  4.00 │     │
-    ││      │ 3.00  2.00  5.00 │     │
-    │├──────┼──────────────────┤     │
-    ││3 @ 1 │ 3.00  3.00  0.00 │     │
-    ││axis 2│ 3.00  3.00  1.00 │     │
-    ││      │ ...   ...   ...  │     │
-    ││      │ 3.00  3.00  4.00 │     │
-    ││      │ 3.00  3.00  5.00 │     │
-    │├──────┼──────────────────┤     │
-    ││4 @ 1 │ 3.00  4.00  0.00 │     │
-    ││axis 2│ 3.00  4.00  1.00 │     │
-    ││      │ ...   ...   ...  │     │
-    ││      │ 3.00  4.00  4.00 │     │
-    ││      │ 3.00  4.00  5.00 │     │
-    │└──────┴──────────────────┘     │
-    └────────────────────────────────┘
+    HERE: test/einsum/einsum_trivia.ml:980:21
+    ┌──────────────────────────────────────┐
+    │[9]: ;=>+ shape 0:4,1:5,2:6,3:3       │
+    │┌──────┬────────────────────────────┐ │
+    ││0 @ 0 │axis 3                      │ │
+    │├──────┼────────────────────────────┤ │
+    ││0 @ 1 │ -1.88e-8  6.19e-41  0.00   │ │
+    ││axis 2│ -9.68e-9  1.93e+3   1.00   │ │
+    ││      │ ...       ...       ...    │ │
+    ││      │ 2.82e+3   3.04e+3   4.00   │ │
+    ││      │ -9.68e-9  3.09e-41  5.00   │ │
+    │├──────┼────────────────────────────┤ │
+    ││1 @ 1 │ -9.18e-9  1.00     3.16e+3 │ │
+    ││axis 2│ 0.00      1.93e+3  3.16e+3 │ │
+    ││      │ ...       ...      ...     │ │
+    ││      │ 2.82e+3   3.04e+3  3.16e+3 │ │
+    ││      │ 0.00      1.00     3.16e+3 │ │
+    │├──────┼────────────────────────────┤ │
+    ││2 @ 1 │ 3.33e+3  2.00     3.96e+3  │ │
+    ││axis 2│ 3.33e+3  1.93e+3  3.96e+3  │ │
+    ││      │ ...      ...      ...      │ │
+    ││      │ 6.15e+3  3.04e+3  3.96e+3  │ │
+    ││      │ 3.33e+3  2.00     3.96e+3  │ │
+    │├──────┼────────────────────────────┤ │
+    ││3 @ 1 │ 4.00e+3  3.00     4.76e+3  │ │
+    ││axis 2│ 4.00e+3  1.93e+3  4.76e+3  │ │
+    ││      │ ...      ...      ...      │ │
+    ││      │ 6.82e+3  3.04e+3  4.76e+3  │ │
+    ││      │ 4.00e+3  3.00     4.76e+3  │ │
+    │├──────┼────────────────────────────┤ │
+    ││4 @ 1 │ 4.68e+3  4.00     5.56e+3  │ │
+    ││axis 2│ 4.68e+3  1.94e+3  5.56e+3  │ │
+    ││      │ ...      ...      ...      │ │
+    ││      │ 7.50e+3  3.04e+3  5.56e+3  │ │
+    ││      │ 4.68e+3  4.00     5.56e+3  │ │
+    │└──────┴────────────────────────────┘ │
+    ├──────────────────────────────────────┤
+    │┌──────┬─────────────────────────────┐│
+    ││1 @ 0 │axis 3                       ││
+    │├──────┼─────────────────────────────┤│
+    ││0 @ 1 │ 1.00     2.89e+32  2.36e+21 ││
+    ││axis 2│ 1.00     2.89e+32  2.36e+21 ││
+    ││      │ ...      ...       ...      ││
+    ││      │ 2.82e+3  2.89e+32  2.36e+21 ││
+    ││      │ 1.00     2.89e+32  2.36e+21 ││
+    │├──────┼─────────────────────────────┤│
+    ││1 @ 1 │ 1.00     2.89e+32  2.36e+21 ││
+    ││axis 2│ 1.00     2.89e+32  2.36e+21 ││
+    ││      │ ...      ...       ...      ││
+    ││      │ 2.82e+3  2.89e+32  2.36e+21 ││
+    ││      │ 1.00     2.89e+32  2.36e+21 ││
+    │├──────┼─────────────────────────────┤│
+    ││2 @ 1 │ 3.33e+3  2.89e+32  2.36e+21 ││
+    ││axis 2│ 3.33e+3  2.89e+32  2.36e+21 ││
+    ││      │ ...      ...       ...      ││
+    ││      │ 6.15e+3  2.89e+32  2.36e+21 ││
+    ││      │ 3.33e+3  2.89e+32  2.36e+21 ││
+    │├──────┼─────────────────────────────┤│
+    ││3 @ 1 │ 4.00e+3  2.89e+32  2.36e+21 ││
+    ││axis 2│ 4.00e+3  2.89e+32  2.36e+21 ││
+    ││      │ ...      ...       ...      ││
+    ││      │ 6.82e+3  2.89e+32  2.36e+21 ││
+    ││      │ 4.00e+3  2.89e+32  2.36e+21 ││
+    │├──────┼─────────────────────────────┤│
+    ││4 @ 1 │ 4.68e+3  2.89e+32  2.36e+21 ││
+    ││axis 2│ 4.68e+3  2.89e+32  2.36e+21 ││
+    ││      │ ...      ...       ...      ││
+    ││      │ 7.50e+3  2.89e+32  2.36e+21 ││
+    ││      │ 4.68e+3  2.89e+32  2.36e+21 ││
+    │└──────┴─────────────────────────────┘│
+    ├──────────────────────────────────────┤
+    │┌──────┬────────────────────────────┐ │
+    ││2 @ 0 │axis 3                      │ │
+    │├──────┼────────────────────────────┤ │
+    ││0 @ 1 │ 2.00     3.43e-6  1.62e+19 │ │
+    ││axis 2│ 2.00     1.93e+3  1.62e+19 │ │
+    ││      │ ...      ...      ...      │ │
+    ││      │ 2.82e+3  3.04e+3  1.62e+19 │ │
+    ││      │ 2.00     3.43e-6  1.62e+19 │ │
+    │├──────┼────────────────────────────┤ │
+    ││1 @ 1 │ 2.00     1.00     1.62e+19 │ │
+    ││axis 2│ 2.00     1.93e+3  1.62e+19 │ │
+    ││      │ ...      ...      ...      │ │
+    ││      │ 2.82e+3  3.04e+3  1.62e+19 │ │
+    ││      │ 2.00     1.00     1.62e+19 │ │
+    │├──────┼────────────────────────────┤ │
+    ││2 @ 1 │ 3.33e+3  2.00     1.62e+19 │ │
+    ││axis 2│ 3.33e+3  1.93e+3  1.62e+19 │ │
+    ││      │ ...      ...      ...      │ │
+    ││      │ 6.15e+3  3.04e+3  1.62e+19 │ │
+    ││      │ 3.33e+3  2.00     1.62e+19 │ │
+    │├──────┼────────────────────────────┤ │
+    ││3 @ 1 │ 4.01e+3  3.00     1.62e+19 │ │
+    ││axis 2│ 4.01e+3  1.93e+3  1.62e+19 │ │
+    ││      │ ...      ...      ...      │ │
+    ││      │ 6.83e+3  3.04e+3  1.62e+19 │ │
+    ││      │ 4.01e+3  3.00     1.62e+19 │ │
+    │├──────┼────────────────────────────┤ │
+    ││4 @ 1 │ 4.68e+3  4.00     1.62e+19 │ │
+    ││axis 2│ 4.68e+3  1.94e+3  1.62e+19 │ │
+    ││      │ ...      ...      ...      │ │
+    ││      │ 7.50e+3  3.04e+3  1.62e+19 │ │
+    ││      │ 4.68e+3  4.00     1.62e+19 │ │
+    │└──────┴────────────────────────────┘ │
+    ├──────────────────────────────────────┤
+    │┌──────┬────────────────────────────┐ │
+    ││3 @ 0 │axis 3                      │ │
+    │├──────┼────────────────────────────┤ │
+    ││0 @ 1 │ 3.00     1.30e-8  7.52e+28 │ │
+    ││axis 2│ 3.00     1.93e+3  7.52e+28 │ │
+    ││      │ ...      ...      ...      │ │
+    ││      │ 2.82e+3  3.04e+3  7.52e+28 │ │
+    ││      │ 3.00     1.30e-8  7.52e+28 │ │
+    │├──────┼────────────────────────────┤ │
+    ││1 @ 1 │ 3.00     1.00     7.52e+28 │ │
+    ││axis 2│ 3.00     1.93e+3  7.52e+28 │ │
+    ││      │ ...      ...      ...      │ │
+    ││      │ 2.82e+3  3.04e+3  7.52e+28 │ │
+    ││      │ 3.00     1.00     7.52e+28 │ │
+    │├──────┼────────────────────────────┤ │
+    ││2 @ 1 │ 3.33e+3  2.00     7.52e+28 │ │
+    ││axis 2│ 3.33e+3  1.93e+3  7.52e+28 │ │
+    ││      │ ...      ...      ...      │ │
+    ││      │ 6.15e+3  3.04e+3  7.52e+28 │ │
+    ││      │ 3.33e+3  2.00     7.52e+28 │ │
+    │├──────┼────────────────────────────┤ │
+    ││3 @ 1 │ 4.01e+3  3.00     7.52e+28 │ │
+    ││axis 2│ 4.01e+3  1.93e+3  7.52e+28 │ │
+    ││      │ ...      ...      ...      │ │
+    ││      │ 6.83e+3  3.04e+3  7.52e+28 │ │
+    ││      │ 4.01e+3  3.00     7.52e+28 │ │
+    │├──────┼────────────────────────────┤ │
+    ││4 @ 1 │ 4.68e+3  4.00     7.52e+28 │ │
+    ││axis 2│ 4.68e+3  1.94e+3  7.52e+28 │ │
+    ││      │ ...      ...      ...      │ │
+    ││      │ 7.50e+3  3.04e+3  7.52e+28 │ │
+    ││      │ 4.68e+3  4.00     7.52e+28 │ │
+    │└──────┴────────────────────────────┘ │
+    └──────────────────────────────────────┘
|}];
Tensor.print ~here:[%here] ~with_code:false ~with_grad:false `Default @@ ti;
[%expect
{|
-    ┌───────────────────────────┐
-    │[1]: =>_ti shape 0:4,1:3   │
-    │┌──────┬──────────────────┐│
-    ││      │axis 1            ││
-    │├──────┼──────────────────┤│
-    ││axis 0│ 0.00  0.00  0.00 ││
-    ││      │ 1.00  0.00  0.00 ││
-    ││      │ 2.00  0.00  0.00 ││
-    ││      │ 3.00  0.00  0.00 ││
-    │└──────┴──────────────────┘│
-    └───────────────────────────┘
+    HERE: test/einsum/einsum_trivia.ml:1122:21
+    ┌───────────────────────────────────┐
+    │[1]: =>_ti shape 0:4,1:3           │
+    │┌──────┬──────────────────────────┐│
+    ││      │axis 1                    ││
+    │├──────┼──────────────────────────┤│
+    ││axis 0│ 0.00  3.09e-41  0.00     ││
+    ││      │ 1.00  2.89e+32  2.36e+21 ││
+    ││      │ 2.00  3.43e-6   1.62e+19 ││
+    ││      │ 3.00  1.30e-8   7.52e+28 ││
+    │└──────┴──────────────────────────┘│
+    └───────────────────────────────────┘
|}];
Tensor.print ~here:[%here] ~with_code:false ~with_grad:false `Default @@ tk;
[%expect
{|
-    ┌───────────────────────────┐
-    │[7]: =>_tk shape 0:6,1:3   │
-    │┌──────┬──────────────────┐│
-    ││      │axis 1            ││
-    │├──────┼──────────────────┤│
-    ││axis 0│ 0.00  0.00  0.00 ││
-    ││      │ 0.00  0.00  1.00 ││
-    ││      │ ...   ...   ...  ││
-    ││      │ 0.00  0.00  4.00 ││
-    ││      │ 0.00  0.00  5.00 ││
-    │└──────┴──────────────────┘│
-    └───────────────────────────┘
+    HERE: test/einsum/einsum_trivia.ml:1137:21
+    ┌───────────────────────────────────┐
+    │[7]: =>_tk shape 0:6,1:3           │
+    │┌──────┬──────────────────────────┐│
+    ││      │axis 1                    ││
+    │├──────┼──────────────────────────┤│
+    ││axis 0│ -9.18e-9  3.09e-41  0.00 ││
+    ││      │ 0.00      1.93e+3   1.00 ││
+    ││      │ ...       ...       ...  ││
+    ││      │ 2.82e+3   3.04e+3   4.00 ││
+    ││      │ 0.00      0.00      5.00 ││
+    │└──────┴──────────────────────────┘│
+    └───────────────────────────────────┘
|}]


let%expect_test "einsum with a leftmost input axis preserved as output axis" =
@@ -1175,6 +1193,7 @@ let%expect_test "einsum with a leftmost input axis preserved as output axis" =
Tensor.print ~here:[%here] ~with_code:false ~with_grad:false `Default @@ c;
[%expect
{|
+    HERE: test/einsum/einsum_trivia.ml:1175:21
┌─────────────────────────────────────────────────────────────────┐
│[2]: ;=>_c shape 0:3|1:4,2:2                                     │
│┌──────┬──────────────────┬──────────────────┬──────────────────┐│
@@ -1209,6 +1228,7 @@ let%expect_test "einsum permuting two leftmost input axes as output axes" =
Tensor.print ~here:[%here] ~with_code:false ~with_grad:false `Default @@ c;
[%expect
{|
+    HERE: test/einsum/einsum_trivia.ml:1209:21
┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│[2]: ;=>_c shape 2:4->0:3,1:2                                                                                          │
│┌──────┬────────────────────────────────────┬────────────────────────────────────┬────────────────────────────────────┐│
(cd _build/.sandbox/65d9a30e443e8685cbcd256a6f1be18a/default/test/operations && .operations_tutorials.inline-tests/inline-test-runner.exe inline-test-runner operations_tutorials -partition hello_world_op.ml -source-tree-root ../.. -diff-cmd -)


Welcome to OCANNL! Reading configuration defaults from /src/_build/.sandbox/65d9a30e443e8685cbcd256a6f1be18a/default/test/operations/ocannl_config.
Retrieving commandline, environment, or config file variable ocannl_log_level
Found 0, in the config file
File "test/operations/zero2hero_1of7.ml", line 1, characters 0-0:
/usr/bin/git --no-pager diff --no-index --color=always -u _build/default/test/operations/zero2hero_1of7.ml _build/.sandbox/65d9a30e443e8685cbcd256a6f1be18a/default/test/operations/zero2hero_1of7.ml.corrected
diff --git a/_build/default/test/operations/zero2hero_1of7.ml b/_build/.sandbox/65d9a30e443e8685cbcd256a6f1be18a/default/test/operations/zero2hero_1of7.ml.corrected
index 2fe7000..8e53168 100644
--- a/_build/default/test/operations/zero2hero_1of7.ml
+++ b/_build/.sandbox/65d9a30e443e8685cbcd256a6f1be18a/default/test/operations/zero2hero_1of7.ml.corrected
@@ -30,24 +30,24 @@ let%expect_test "Graph drawing recompile" =
Tensor.print_tree ~with_grad:true ~depth:9 f_nd;
[%expect
{|
-                                 #15 +_f_nd
-                                  6.00e+1
-                                 #16 grad_+_f_nd Virt/30
-                                 <void>
-                            #13 - Virt/152                             │#2 5. Virt/40
-                            <void>                                     │<void>
-                            #14 grad_- Virt/30                         │
-                            <void>                                     │
-           #11 *. Virt/152            │       #4 *. Virt/152           │
-           <void>                     │       <void>                   │
-           #12 grad_*. Virt/30        │       #5 grad_*. Virt/30       │
-           <void>                     │       <void>                   │
-    #10 3. Virt/40│#7 **. Virt/152    │#3 4. Virt/40│#0 x              │
-    <void>        │<void>             │<void>       │ 5.00             │
-                  │#8 grad_**. Virt/30│             │#1 grad_x Local/30│
-                  │<void>             │             │<void>            │
-                  │[0]│ #6 2. Virt/40 │             │                  │
-                  │   │ <void>        │             │                  │
+                          #15 +_f_nd
+                           5.00
+                          #16 grad_+_f_nd Virt/30
+                          <void>
+                     #13 - Virt/152                      │#2 5. Virt/40
+                     <void>                              │<void>
+                     #14 grad_- Virt/30                  │
+                     <void>                              │
+           #11 *. Virt/152            │#4 *. Virt/152    │
+           <void>                     │<void>            │
+           #12 grad_*. Virt/30        │#5 grad_*. Virt/30│
+           <void>                     │<void>            │
+    #10 3. Virt/40│#7 **. Virt/152    │#3 4. Virt/40│[0] │
+    <void>        │<void>             │<void>       │    │
+                  │#8 grad_**. Virt/30│             │    │
+                  │<void>             │             │    │
+                  │[0]│ #6 2. Virt/40 │             │    │
+                  │   │ <void>        │             │    │
|}];
let%op f = (3 *. ("x" [ 5 ] **. 2)) - (4 *. x) + 5 in
Train.every_non_literal_on_host f;
@@ -59,24 +59,24 @@ let%expect_test "Graph drawing recompile" =
Tensor.print_tree ~with_grad:true ~depth:9 f;
[%expect
{|
-                                   #32 +_f
-                                    6.00e+1
-                                   #33 grad_+_f
-                                    1.00
-                             #30 -                              │#19 5. Virt/40
-                              5.50e+1                           │<void>
-                             #31 grad_-                         │
-                              1.00                              │
-               #28 *.                 │       #21 *.            │
-                7.50e+1               │        2.00e+1          │
-               #29 grad_*.            │       #22 grad_*.       │
-                1.00                  │        -1.00            │
-    #27 3. Virt/40│   #24 **.         │#20 4. Virt/40│#17 x     │
-    <void>        │    2.50e+1        │<void>        │ 5.00     │
-                  │   #25 grad_**.    │              │#18 grad_x│
-                  │    3.00           │              │ 2.60e+1  │
-                  │[17]│#23 2. Virt/40│              │          │
-                  │    │<void>        │              │          │
+                                #32 +_f
+                                 5.00
+                                #33 grad_+_f
+                                 1.00
+                          #30 -                           │#19 5. Virt/40
+                           0.00                           │<void>
+                          #31 grad_-                      │
+                           1.00                           │
+               #28 *.                 │    #21 *.         │
+                0.00                  │     0.00          │
+               #29 grad_*.            │    #22 grad_*.    │
+                1.00                  │     -1.00         │
+    #27 3. Virt/40│   #24 **.         │#20 4. Virt/40│[17]│
+    <void>        │    0.00           │<void>        │    │
+                  │   #25 grad_**.    │              │    │
+                  │    3.00           │              │    │
+                  │[17]│#23 2. Virt/40│              │    │
+                  │    │<void>        │              │    │
|}];
let xs = Array.init 10 ~f:Float.(fun i -> of_int i - 5.) in
let ys =
@@ -276,22 +276,19 @@ let%expect_test "Simple gradients hosted" =
Tensor.print_tree ~spy:true ~with_grad:true ~depth:9 l;
[%expect
{|
-                                        #12 *._l Host&stream/41
-                                        <not-in-yet>
-                                        #13 grad_*._l Host&stream/41
-                                        <not-in-yet>
-                            #8 +_d Host&stream/41                             │#10 f Host&shared/39
-                            <not-in-yet>                                      │<not-in-yet>
-                            #9 grad_+_d Host&stream/41                        │#11 grad_f Host&stream/41
-                            <not-in-yet>                                      │<not-in-yet>
-               #4 *._e Host&stream/41                │#6 c Host&shared/39     │
-               <not-in-yet>                          │<not-in-yet>            │
-               #5 grad_*._e Host&stream/41           │#7 grad_c Host&stream/41│
-               <not-in-yet>                          │<not-in-yet>            │
-    #0 a Host&shared/39     │#2 b Host&shared/39     │                        │
-    <not-in-yet>            │<not-in-yet>            │                        │
-    #1 grad_a Host&stream/41│#3 grad_b Host&stream/41│                        │
-    <not-in-yet>            │<not-in-yet>            │                        │
+        #12 *._l Host&stream/412410
+        <not-in-yet>
+        #13 grad_*._l Host&stream/412410
+        <not-in-yet>
+      #8 +_d Host&stream/412410        │[10]
+      <not-in-yet>                     │
+      #9 grad_+_d Host&stream/412410   │
+      <not-in-yet>                     │
+    #4 *._e Host&stream/412410     │[6]│
+    <not-in-yet>                   │   │
+    #5 grad_*._e Host&stream/412410│   │
+    <not-in-yet>                   │   │
+    [0]│[2]                        │   │
|}];
(* Do not update the params: all values and gradients will be at initial points, which are
specified in the tensor in the brackets. *)
@@ -300,22 +297,19 @@ let%expect_test "Simple gradients hosted" =
Tensor.print_tree ~with_grad:true ~depth:9 l;
[%expect
{|
-                 #12 *._l
-                  -8.00
-                 #13 grad_*._l
-                  1.00
-             #8 +_d              │#10 f
-              4.00               │ -2.00
-             #9 grad_+_d         │#11 grad_f
-              -2.00              │ 4.00
-       #4 *._e         │#6 c     │
-        -6.00          │ 1.00e+1 │
-       #5 grad_*._e    │#7 grad_c│
-        -2.00          │ -2.00   │
-    #0 a     │#2 b     │         │
-     2.00    │ -3.00   │         │
-    #1 grad_a│#3 grad_b│         │
-     6.00    │ -4.00   │         │
+        #12 *._l
+         -0.00
+        #13 grad_*._l
+         1.00
+      #8 +_d        │[10]
+       -9.18e+9     │
+      #9 grad_+_d   │
+       0.00         │
+    #4 *._e     │[6]│
+     -9.18e+9   │   │
+    #5 grad_*._e│   │
+     0.00       │   │
+    [0]│[2]     │   │
|}];
(* Now we update the params, but we are not doing the forward and backward passes: only params
values will change, compared to the above. The update is in the opposite direction of the
@@ -324,22 +318,19 @@ let%expect_test "Simple gradients hosted" =
Tensor.print_tree ~with_grad:true ~depth:9 l;
[%expect
{|
-                 #12 *._l
-                  -8.00
-                 #13 grad_*._l
-                  1.00
-             #8 +_d              │#10 f
-              4.00               │ -2.40
-             #9 grad_+_d         │#11 grad_f
-              -2.00              │ 4.00
-       #4 *._e         │#6 c     │
-        -6.00          │ 1.02e+1 │
-       #5 grad_*._e    │#7 grad_c│
-        -2.00          │ -2.00   │
-    #0 a     │#2 b     │         │
-     1.40    │ -2.60   │         │
-    #1 grad_a│#3 grad_b│         │
-     6.00    │ -4.00   │         │
+        #12 *._l
+         -0.00
+        #13 grad_*._l
+         1.00
+      #8 +_d        │[10]
+       -9.18e+9     │
+      #9 grad_+_d   │
+       0.00         │
+    #4 *._e     │[6]│
+     -9.18e+9   │   │
+    #5 grad_*._e│   │
+     0.00       │   │
+    [0]│[2]     │   │
|}];


(* Now the params will remain as above, but both param gradients and the values and gradients of
@@ -348,22 +339,19 @@ let%expect_test "Simple gradients hosted" =
Tensor.print_tree ~with_grad:true ~depth:9 l;
[%expect
{|
-                 #12 *._l
-                  -1.57e+1
-                 #13 grad_*._l
-                  1.00
-             #8 +_d              │#10 f
-              6.56               │ -2.40
-             #9 grad_+_d         │#11 grad_f
-              -2.40              │ 6.56
-       #4 *._e         │#6 c     │
-        -3.64          │ 1.02e+1 │
-       #5 grad_*._e    │#7 grad_c│
-        -2.40          │ -2.40   │
-    #0 a     │#2 b     │         │
-     1.40    │ -2.60   │         │
-    #1 grad_a│#3 grad_b│         │
-     6.24    │ -3.36   │         │
+        #12 *._l
+         -7.71e-27
+        #13 grad_*._l
+         1.00
+      #8 +_d        │[10]
+       -9.18e+9     │
+      #9 grad_+_d   │
+       8.40e-37     │
+    #4 *._e     │[6]│
+     -9.18e+9   │   │
+    #5 grad_*._e│   │
+     8.40e-37   │   │
+    [0]│[2]     │   │
|}]


let%expect_test "Simple gradients virtual" =
@@ -385,22 +373,19 @@ let%expect_test "Simple gradients virtual" =
Tensor.print_tree ~spy:true ~with_grad:true ~depth:9 l;
[%expect
{|
-                                       #12 *._l Host&dev/41
-                                       <not-in-yet>
-                                       #13 grad_*._l unknown
-                                       <not-in-yet>
-                            #8 +_d unknown                              │#10 f Host-non-const/24
-                            <not-in-yet>                                │<not-in-yet>
-                            #9 grad_+_d unknown                         │#11 grad_f Material/28
-                            <not-in-yet>                                │<not-in-yet>
-                #4 *._e unknown                  │#6 c Host-non-const/24│
-                <not-in-yet>                     │<not-in-yet>          │
-                #5 grad_*._e unknown             │#7 grad_c Material/28 │
-                <not-in-yet>                     │<not-in-yet>          │
-    #0 a Host-non-const/24│#2 b Host-non-const/24│                      │
-    <not-in-yet>          │<not-in-yet>          │                      │
-    #1 grad_a Material/28 │#3 grad_b Material/28 │                      │
-    <not-in-yet>          │<not-in-yet>          │                      │
+        #12 *._l Host&dev/412
+        <not-in-yet>
+        #13 grad_*._l unknown
+        <not-in-yet>
+      #8 +_d unknown        │[10]
+      <not-in-yet>          │
+      #9 grad_+_d unknown   │
+      <not-in-yet>          │
+    #4 *._e unknown     │[6]│
+    <not-in-yet>        │   │
+    #5 grad_*._e unknown│   │
+    <not-in-yet>        │   │
+    [0]│[2]             │   │
|}];
let f_init = Train.to_routine (module Backend) ctx IDX.empty @@ Tensor.init_params l in
let grad_routine = Train.to_routine (module Backend) f_init.context IDX.empty grad in
@@ -408,22 +393,19 @@ let%expect_test "Simple gradients virtual" =
Tensor.print_tree ~spy:true ~with_grad:true ~depth:9 l;
[%expect
{|
-                                        #12 *._l Host&stream/41
-                                        <not-in-yet>
-                                        #13 grad_*._l Virt/40
-                                        <not-in-yet>
-                              #8 +_d Local/46                              │#10 f Host&shared/39
-                              <not-in-yet>                                 │<not-in-yet>
-                              #9 grad_+_d Virt/40                          │#11 grad_f Dev-stream/41
-                              <not-in-yet>                                 │<not-in-yet>
-                 #4 *._e Virt/152                  │#6 c Host&shared/39    │
-                 <not-in-yet>                      │<not-in-yet>           │
-                 #5 grad_*._e Virt/40              │#7 grad_c Dev-stream/41│
-                 <not-in-yet>                      │<not-in-yet>           │
-    #0 a Host&shared/39    │#2 b Host&shared/39    │                       │
-    <not-in-yet>           │<not-in-yet>           │                       │
-    #1 grad_a Dev-stream/41│#3 grad_b Dev-stream/41│                       │
-    <not-in-yet>           │<not-in-yet>           │                       │
+     #12 *._l Host&stream/412410
+     <not-in-yet>
+     #13 grad_*._l Virt/40
+     <not-in-yet>
+      #8 +_d Local/1046     │[10]
+      <not-in-yet>          │
+      #9 grad_+_d Virt/40   │
+      <not-in-yet>          │
+    #4 *._e Virt/152    │[6]│
+    <not-in-yet>        │   │
+    #5 grad_*._e Virt/40│   │
+    <not-in-yet>        │   │
+    [0]│[2]             │   │
|}];
(* Do not update the params: all values and gradients will be at initial points, which are
specified in the tensor in the brackets. *)
@@ -432,22 +414,19 @@ let%expect_test "Simple gradients virtual" =
Tensor.print_tree ~with_grad:true ~depth:9 l;
[%expect
{|
-                                         #12 *._l
-                                          -8.00
-                                         #13 grad_*._l Virt/40
-                                         <void>
-                              #8 +_d Local/46                              │#10 f
-                              <void>                                       │ -2.00
-                              #9 grad_+_d Virt/40                          │#11 grad_f Dev-stream/41
-                              <void>                                       │<void>
-                 #4 *._e Virt/152                  │#6 c                   │
-                 <void>                            │ 1.00e+1               │
-                 #5 grad_*._e Virt/40              │#7 grad_c Dev-stream/41│
-                 <void>                            │<void>                 │
-    #0 a                   │#2 b                   │                       │
-     2.00                  │ -3.00                 │                       │
-    #1 grad_a Dev-stream/41│#3 grad_b Dev-stream/41│                       │
-    <void>                 │<void>                 │                       │
+        #12 *._l
+         1.15e-29
+        #13 grad_*._l Virt/40
+        <void>
+      #8 +_d Local/1046     │[10]
+      <void>                │
+      #9 grad_+_d Virt/40   │
+      <void>                │
+    #4 *._e Virt/152    │[6]│
+    <void>              │   │
+    #5 grad_*._e Virt/40│   │
+    <void>              │   │
+    [0]│[2]             │   │
|}];
(* Only now compile the SGD update. *)
let sgd_routine = Train.to_routine (module Backend) grad_routine.context IDX.empty sgd in
@@ -458,22 +437,19 @@ let%expect_test "Simple gradients virtual" =
Tensor.print_tree ~with_grad:true ~depth:9 l;
[%expect
{|
-                                         #12 *._l
-                                          -8.00
-                                         #13 grad_*._l Virt/40
-                                         <void>
-                              #8 +_d Local/46                              │#10 f
-                              <void>                                       │ -2.40
-                              #9 grad_+_d Virt/40                          │#11 grad_f Dev-stream/41
-                              <void>                                       │<void>
-                 #4 *._e Virt/152                  │#6 c                   │
-                 <void>                            │ 1.02e+1               │
-                 #5 grad_*._e Virt/40              │#7 grad_c Dev-stream/41│
-                 <void>                            │<void>                 │
-    #0 a                   │#2 b                   │                       │
-     1.40                  │ -2.60                 │                       │
-    #1 grad_a Dev-stream/41│#3 grad_b Dev-stream/41│                       │
-    <void>                 │<void>                 │                       │
+        #12 *._l
+         1.15e-29
+        #13 grad_*._l Virt/40
+        <void>
+      #8 +_d Local/1046     │[10]
+      <void>                │
+      #9 grad_+_d Virt/40   │
+      <void>                │
+    #4 *._e Virt/152    │[6]│
+    <void>              │   │
+    #5 grad_*._e Virt/40│   │
+    <void>              │   │
+    [0]│[2]             │   │
|}];
(* Now the params will remain as above, but both param gradients and the values and gradients of
other nodes will change thanks to the forward and backward passes. *)
@@ -481,22 +457,19 @@ let%expect_test "Simple gradients virtual" =
Tensor.print_tree ~with_grad:true ~depth:9 l;
[%expect
{|
-                                         #12 *._l
-                                          -1.57e+1
-                                         #13 grad_*._l Virt/40
-                                         <void>
-                              #8 +_d Local/46                              │#10 f
-                              <void>                                       │ -2.40
-                              #9 grad_+_d Virt/40                          │#11 grad_f Dev-stream/41
-                              <void>                                       │<void>
-                 #4 *._e Virt/152                  │#6 c                   │
-                 <void>                            │ 1.02e+1               │
-                 #5 grad_*._e Virt/40              │#7 grad_c Dev-stream/41│
-                 <void>                            │<void>                 │
-    #0 a                   │#2 b                   │                       │
-     1.40                  │ -2.60                 │                       │
-    #1 grad_a Dev-stream/41│#3 grad_b Dev-stream/41│                       │
-    <void>                 │<void>                 │                       │
+        #12 *._l
+         1.15e-29
+        #13 grad_*._l Virt/40
+        <void>
+      #8 +_d Local/1046     │[10]
+      <void>                │
+      #9 grad_+_d Virt/40   │
+      <void>                │
+    #4 *._e Virt/152    │[6]│
+    <void>              │   │
+    #5 grad_*._e Virt/40│   │
+    <void>              │   │
+    [0]│[2]             │   │
|}]


let%expect_test "tanh plot" =
@@ -520,18 +493,15 @@ let%expect_test "2D neuron hosted" =
Tensor.print_tree ~with_grad:true ~depth:9 v;
[%expect
{|
-                 #8 +_v
-                  7.00e-1
-                 #9 grad_+_v
-                  1.00
-             #6 *              │#0 b
-              -6.00            │ 6.70
-             #7 grad_*         │#1 grad_b
-              1.00             │ 1.00
-    #2 w         │#4 x         │
-     -3.00  1.00 │ 2.00  0.00  │
-    #3 grad_w    │#5 grad_x    │
-     2.00  0.00  │ -3.00  1.00 │
+     #8 +_v
+      -3.35e-15
+     #9 grad_+_v
+      1.00
+    #6 *      │[0]
+     1.09e-29 │
+    #7 grad_* │
+     1.00     │
+    [2]│[4]   │
|}]


let%expect_test "2D neuron virtual" =
@@ -549,16 +519,13 @@ let%expect_test "2D neuron virtual" =
Tensor.print_tree ~with_grad:true ~depth:9 v;
[%expect
{|
-                      #8 +_v
-                       7.00e-1
-                      #9 grad_+_v Virt/40
-                      <void>
-              #6 * Local/46              │#0 b
-              <void>                     │ 6.70
-              #7 grad_* Virt/40          │#1 grad_b Local/46
-              <void>                     │<void>
-    #2 w              │#4 x              │
-     -3.00  1.00      │ 2.00  0.00       │
-    #3 grad_w Local/46│#5 grad_x Local/46│
-    <void>            │<void>            │
+     #8 +_v
+      -3.34e-15
+     #9 grad_+_v Virt/40
+     <void>
+    #6 * Local/1046  │[0]
+    <void>           │
+    #7 grad_* Virt/40│
+    <void>           │
+    [2]│[4]          │
|}]
File "test/operations/hello_world_op.ml", line 1, characters 0-0:
/usr/bin/git --no-pager diff --no-index --color=always -u _build/default/test/operations/hello_world_op.ml _build/.sandbox/65d9a30e443e8685cbcd256a6f1be18a/default/test/operations/hello_world_op.ml.corrected
diff --git a/_build/default/test/operations/hello_world_op.ml b/_build/.sandbox/65d9a30e443e8685cbcd256a6f1be18a/default/test/operations/hello_world_op.ml.corrected
index 95901f5..746559a 100644
--- a/_build/default/test/operations/hello_world_op.ml
+++ b/_build/.sandbox/65d9a30e443e8685cbcd256a6f1be18a/default/test/operations/hello_world_op.ml.corrected
@@ -34,13 +34,14 @@ let%expect_test "Pointwise multiplication dims 1" =
Tensor.print ~here:[%here] ~with_code:false ~with_grad:false `Default @@ y;
[%expect
{|
+    HERE: test/operations/hello_world_op.ml:34:21
┌────────────────────┐
│[3]: *._y shape 0:1 │
-    │┌┬─────────┐        │
-    │││axis 0   │        │
-    │├┼─────────┤        │
-    │││ 1.40e+1 │        │
-    │└┴─────────┘        │
+    │┌┬──────┐           │
+    │││axis 0│           │
+    │├┼──────┤           │
+    │││ 0.00 │           │
+    │└┴──────┘           │
└────────────────────┘
|}]


@@ -65,25 +66,27 @@ let%expect_test "Matrix multiplication dims 1x1" =
Tensor.print ~here:[%here] ~with_code:false ~with_grad:false `Default @@ hey;
[%expect
{|
+    HERE: test/operations/hello_world_op.ml:65:21
┌────────────────────────┐
│[0]: hey shape 1:1->0:1 │
-    │┌──────┬──────┐         │
-    ││      │axis 1│         │
-    │├──────┼──────┤         │
-    ││axis 0│ 7.00 │         │
-    │└──────┴──────┘         │
+    │┌──────┬──────────┐     │
+    ││      │axis 1    │     │
+    │├──────┼──────────┤     │
+    ││axis 0│ 5.25e-10 │     │
+    │└──────┴──────────┘     │
└────────────────────────┘
|}];
Tensor.print ~here:[%here] ~with_code:false ~with_grad:false `Default @@ y;
[%expect
{|
+    HERE: test/operations/hello_world_op.ml:77:21
┌───────────────────┐
│[6]: +_y shape 0:1 │
-    │┌┬─────────┐       │
-    │││axis 0   │       │
-    │├┼─────────┤       │
-    │││ 1.50e+1 │       │
-    │└┴─────────┘       │
+    │┌┬──────┐          │
+    │││axis 0│          │
+    │├┼──────┤          │
+    │││ 1.00 │          │
+    │└┴──────┘          │
└───────────────────┘
|}]


@@ -108,7 +111,8 @@ let%expect_test "Print constant tensor" =
Tensor.print ~here:[%here] ~with_code:false ~with_grad:false `Inline @@ hey;
[%expect
{|
-    [0]: [  1.00 , 2.00 , 3.00  ;  4.00 , 5.00 , 6.00  ]_hey shape 1:3->0:2  [
+    HERE: test/operations/hello_world_op.ml:108:21
+    [0]: c2x3_hey shape 1:3->0:2  [
1.00 , 2.00 , 3.00
;  4.00 , 5.00 , 6.00
]
@@ -116,22 +120,24 @@ let%expect_test "Print constant tensor" =
Tensor.print ~here:[%here] ~with_code:false ~with_grad:false `Default @@ hey;
[%expect
{|
-    ┌────────────────────────────────────────────────────────────────────────┐
-    │[0]: [  1.00 , 2.00 , 3.00  ;  4.00 , 5.00 , 6.00  ]_hey shape 1:3->0:2 │
-    │┌──────┬──────────────────┐                                             │
-    ││      │axis 1            │                                             │
-    │├──────┼──────────────────┤                                             │
-    ││axis 0│ 1.00  2.00  3.00 │                                             │
-    ││      │ 4.00  5.00  6.00 │                                             │
-    │└──────┴──────────────────┘                                             │
-    └────────────────────────────────────────────────────────────────────────┘
+    HERE: test/operations/hello_world_op.ml:116:21
+    ┌─────────────────────────────┐
+    │[0]: c2x3_hey shape 1:3->0:2 │
+    │┌──────┬──────────────────┐  │
+    ││      │axis 1            │  │
+    │├──────┼──────────────────┤  │
+    ││axis 0│ 1.00  2.00  3.00 │  │
+    ││      │ 4.00  5.00  6.00 │  │
+    │└──────┴──────────────────┘  │
+    └─────────────────────────────┘
|}];
let%op hoo = [| [ 1; 2; 3 ]; [ 4; 5; 6 ] |] in
Train.forward_and_forget backend ctx hoo;
Tensor.print ~here:[%here] ~with_code:false ~with_grad:false `Inline @@ hoo;
[%expect
{|
-    [1]: [| [ 1.00 ; 2.00 ; 3.00 ] ; [ 4.00 ; 5.00 ; 6.00 ] |]_hoo shape 0:2|1:3  [|
+    HERE: test/operations/hello_world_op.ml:131:21
+    [1]: [| [ 0.00 ; 0.00 ; 0.00 ] ; [ 0.00 ; 0.00 ; 0.00 ] |]_hoo shape 0:2|1:3  [|
[ 1.00 ; 2.00 ; 3.00 ]
; [ 4.00 ; 5.00 ; 6.00 ]
|]
@@ -139,8 +145,9 @@ let%expect_test "Print constant tensor" =
Tensor.print ~here:[%here] ~with_code:false ~with_grad:false `Default @@ hoo;
[%expect
{|
+    HERE: test/operations/hello_world_op.ml:139:21
┌─────────────────────────────────────────────────────────────────────────────┐
-    │[1]: [| [ 1.00 ; 2.00 ; 3.00 ] ; [ 4.00 ; 5.00 ; 6.00 ] |]_hoo shape 0:2|1:3 │
+    │[1]: [| [ 0.00 ; 0.00 ; 0.00 ] ; [ 0.00 ; 0.00 ; 0.00 ] |]_hoo shape 0:2|1:3 │
│┌──────┬──────────────────┐                                                  │
││      │axis 1            │                                                  │
│├──────┼──────────────────┤                                                  │
@@ -161,6 +168,7 @@ let%expect_test "Print constant tensor" =
Tensor.print ~here:[%here] ~with_code:false ~with_grad:false `Inline @@ hey2;
[%expect
{|
+    HERE: test/operations/hello_world_op.ml:161:21
[2]: c4x2x3_hey2 shape 1:2,2:3->0:4  [
( 1.00 , 2.00 , 3.00 ) , ( 4.00 , 5.00 , 6.00 )
;  ( 7.00 , 8.00 , 9.00 ) , ( 10.00 , 11.00 , 12.00 )
@@ -171,6 +179,7 @@ let%expect_test "Print constant tensor" =
Tensor.print ~here:[%here] ~with_code:false ~with_grad:false `Default @@ hey2;
[%expect
{|
+    HERE: test/operations/hello_world_op.ml:171:21
┌────────────────────────────────────────────────────────────────┐
│[2]: c4x2x3_hey2 shape 1:2,2:3->0:4                             │
│┌──────┬───────────────────────────┬───────────────────────────┐│
@@ -196,6 +205,7 @@ let%expect_test "Print constant tensor" =
Tensor.print ~here:[%here] ~with_code:false ~with_grad:false `Inline @@ hoo2;
[%expect
{|
+    HERE: test/operations/hello_world_op.ml:196:21
[3]: c4x2x3_hoo2 shape 0:4|1:2,2:3  [|
[ [ 1.00 ; 2.00 ; 3.00 ] ; [ 4.00 ; 5.00 ; 6.00 ] ]
; [ [ 7.00 ; 8.00 ; 9.00 ] ; [ 10.00 ; 11.00 ; 12.00 ] ]
@@ -206,6 +216,7 @@ let%expect_test "Print constant tensor" =
Tensor.print ~here:[%here] ~with_code:false ~with_grad:false `Default @@ hoo2;
[%expect
{|
+    HERE: test/operations/hello_world_op.ml:206:21
┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│[3]: c4x2x3_hoo2 shape 0:4|1:2,2:3                                                                             │
│┌──────┬──────────────────┬───────────────────────────┬───────────────────────────┬───────────────────────────┐│
@@ -229,6 +240,7 @@ let%expect_test "Print constant tensor" =
Tensor.print ~here:[%here] ~with_code:false ~with_grad:false `Inline @@ heyhoo;
[%expect
{|
+    HERE: test/operations/hello_world_op.ml:229:21
[4]: c4x2x3_heyhoo shape 0:4,1:2|2:3  [|
[| [ 1.00 ; 2.00 ; 3.00 ] ; [ 4.00 ; 5.00 ; 6.00 ] |]
; [| [ 7.00 ; 8.00 ; 9.00 ] ; [ 10.00 ; 11.00 ; 12.00 ] |]
@@ -239,6 +251,7 @@ let%expect_test "Print constant tensor" =
Tensor.print ~here:[%here] ~with_code:false ~with_grad:false `Default @@ heyhoo;
[%expect
{|
+    HERE: test/operations/hello_world_op.ml:239:21
┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│[4]: c4x2x3_heyhoo shape 0:4,1:2|2:3                                                                           │
│┌──────┬──────────────────┬───────────────────────────┬───────────────────────────┬───────────────────────────┐│
@@ -262,6 +275,7 @@ let%expect_test "Print constant tensor" =
Tensor.print ~here:[%here] ~with_code:false ~with_grad:false `Inline @@ heyhoo2;
[%expect
{|
+    HERE: test/operations/hello_world_op.ml:262:21
[5]: c4x2x3x2_heyhoo2 shape 0:4,1:2|2:3,3:2  [|
[|
[ [ 1.00 ; 31.00 ] ; [ 2.00 ; 32.00 ] ; [ 3.00 ; 33.00 ] ]
@@ -284,6 +298,7 @@ let%expect_test "Print constant tensor" =
Tensor.print ~here:[%here] ~with_code:false ~with_grad:false `Default @@ heyhoo2;
[%expect
{|
+    HERE: test/operations/hello_world_op.ml:284:21
┌──────────────────────────────────────────────┐
│[5]: c4x2x3x2_heyhoo2 shape 0:4,1:2|2:3,3:2   │
│┌──────┬──────────────────┬──────────────────┐│
@@ -324,6 +339,7 @@ let%expect_test "Print constant tensor" =
Tensor.print ~here:[%here] ~with_code:false ~with_grad:false `Inline @@ heyhoo3;
[%expect
{|
+    HERE: test/operations/hello_world_op.ml:324:21
[6]: c2x2x2x3x2_heyhoo3 shape 0:2,1:2|2:2,3:3,4:2  [|
[|
[
@@ -350,6 +366,7 @@ let%expect_test "Print constant tensor" =
Tensor.print ~here:[%here] ~with_code:false ~with_grad:false `Default @@ heyhoo3;
[%expect
{|
+    HERE: test/operations/hello_world_op.ml:350:21
┌──────────────────────────────────────────────────┐
│[6]: c2x2x2x3x2_heyhoo3 shape 0:2,1:2|2:2,3:3,4:2 │
│┌──────┬───────────────┬──────────────────┐       │
@@ -395,6 +412,7 @@ let%expect_test "Print constant tensor" =
Tensor.print ~here:[%here] ~with_code:false ~with_grad:false `Inline @@ heyhoo4;
[%expect
{|
+    HERE: test/operations/hello_world_op.ml:395:21
[7]: c2x2x2x3x2_heyhoo4 shape 0:2|4:2->1:2,2:2,3:3  [|
[
[
@@ -421,6 +439,7 @@ let%expect_test "Print constant tensor" =
Tensor.print ~here:[%here] ~with_code:false ~with_grad:false `Default @@ heyhoo4;
[%expect
{|
+    HERE: test/operations/hello_world_op.ml:421:21
┌───────────────────────────────────────────────────┐
│[7]: c2x2x2x3x2_heyhoo4 shape 0:2|4:2->1:2,2:2,3:3 │
│┌──────┬───────────────┬──────────────────┐        │
@@ -471,28 +490,30 @@ let%expect_test "Matrix multiplication dims 2x3" =
Tensor.print ~here:[%here] ~with_code:false ~with_grad:false `Default @@ hey;
[%expect
{|
-    ┌────────────────────────┐
-    │[0]: hey shape 1:2->0:3 │
-    │┌──────┬────────────┐   │
-    ││      │axis 1      │   │
-    │├──────┼────────────┤   │
-    ││axis 0│ 7.00  7.00 │   │
-    ││      │ 7.00  7.00 │   │
-    ││      │ 7.00  7.00 │   │
-    │└──────┴────────────┘   │
-    └────────────────────────┘
+    HERE: test/operations/hello_world_op.ml:471:21
+    ┌─────────────────────────────┐
+    │[0]: hey shape 1:2->0:3      │
+    │┌──────┬────────────────────┐│
+    ││      │axis 1              ││
+    │├──────┼────────────────────┤│
+    ││axis 0│ 5.25e-10  3.08e-41 ││
+    ││      │ 0.00      0.00     ││
+    ││      │ 0.00      0.00     ││
+    │└──────┴────────────────────┘│
+    └─────────────────────────────┘
|}];
Tensor.print ~here:[%here] ~with_code:false ~with_grad:false `Default @@ y;
[%expect
{|
-    ┌──────────────────────────────┐
-    │[6]: +_y shape 0:3            │
-    │┌┬───────────────────────────┐│
-    │││axis 0                     ││
-    │├┼───────────────────────────┤│
-││ 3.90e+1  4.00e+1  4.10e+1 ││
-    │└┴───────────────────────────┘│
-    └──────────────────────────────┘
+    HERE: test/operations/hello_world_op.ml:485:21
+    ┌─────────────────────┐
+    │[6]: +_y shape 0:3   │
+    │┌┬──────────────────┐│
+    │││axis 0            ││
+    │├┼──────────────────┤│
+    │││ 4.00  5.00  6.00 ││
+    │└┴──────────────────┘│
+    └─────────────────────┘
|}]


let%expect_test "Big matrix" =
@@ -517,30 +538,32 @@ let%expect_test "Big matrix" =
Tensor.print ~here:[%here] ~with_code:false ~with_grad:false `Default hey;
[%expect
{|
-    ┌──────────────────────────────────────────────────┐
-    │[0]: hey shape 1:21->0:21                         │
-    │┌──────┬─────────────────────────────────────────┐│
-    ││      │axis 1                                   ││
-    │├──────┼─────────────────────────────────────────┤│
-    ││axis 0│ 5.00e-1  5.00e-1  ...  5.00e-1  5.00e-1 ││
-    ││      │ 5.00e-1  5.00e-1  ...  5.00e-1  5.00e-1 ││
-    ││      │ ...      ...      ...  ...      ...     ││
-    ││      │ 5.00e-1  5.00e-1  ...  5.00e-1  5.00e-1 ││
-    ││      │ 5.00e-1  5.00e-1  ...  5.00e-1  5.00e-1 ││
-    │└──────┴─────────────────────────────────────────┘│
-    └──────────────────────────────────────────────────┘
+    HERE: test/operations/hello_world_op.ml:517:21
+    ┌──────────────────────────────────────────────────────────┐
+    │[0]: hey shape 1:21->0:21                                 │
+    │┌──────┬─────────────────────────────────────────────────┐│
+    ││      │axis 1                                           ││
+    │├──────┼─────────────────────────────────────────────────┤│
+    ││axis 0│ 1.89e-11   4.57e-41   ...  -2.28e-26  -1.36e-38 ││
+    ││      │ -1.18e+21  -2.28e-26  ...  -2.28e-26  -5.87e-29 ││
+    ││      │ ...        ...        ...  ...        ...       ││
+    ││      │ -1.18e+21  -2.28e-26  ...  -1.20e+21  -6.38e+20 ││
+    ││      │ -2.28e-26  1.87e+25   ...  6.44e-10   1.50e-19  ││
+    │└──────┴─────────────────────────────────────────────────┘│
+    └──────────────────────────────────────────────────────────┘
|}];
Tensor.print ~here:[%here] ~with_code:false ~with_grad:false `Default y;
[%expect
{|
-    ┌────────────────────────────────────────────┐
-    │[5]: + shape 0:21                           │
-    │┌┬─────────────────────────────────────────┐│
-    │││axis 0                                   ││
-    │├┼─────────────────────────────────────────┤│
-    │││ 1.05e+2  1.06e+2  ...  1.24e+2  1.25e+2 ││
-    │└┴─────────────────────────────────────────┘│
-    └────────────────────────────────────────────┘
+    HERE: test/operations/hello_world_op.ml:533:21
+    ┌──────────────────────────────────────────────────┐
+    │[5]: + shape 0:21                                 │
+    │┌┬───────────────────────────────────────────────┐│
+    │││axis 0                                         ││
+    │├┼───────────────────────────────────────────────┤│
+    │││ -6.40e+22  -7.47e+22  ...  1.35e+24  1.89e+25 ││
+    │└┴───────────────────────────────────────────────┘│
+    └──────────────────────────────────────────────────┘
|}]


let%expect_test "Very big tensor" =
@@ -566,6 +589,7 @@ let%expect_test "Very big tensor" =
Tensor.print ~here:[%here] ~with_code:false ~with_grad:false `Default hey;
[%expect
{|
+    HERE: test/operations/hello_world_op.ml:566:21
┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│[0]: r6x10x11x7x8x9 shape 0:6|3:7,4:8,5:9->1:10,2:11                                                                                                                                   │
│┌──────┬─────────────────────────────────────────┬─────────────────────────────────────────┬──────┬─────────────────────────────────────────┬─────────────────────────────────────────┐│
@@ -703,6 +727,7 @@ let%expect_test "Very big tensor" =
(* Disable line wrapping for viewing the output. In VSCode: `View: Toggle Word Wrap`. *)
[%expect
{|
+    HERE: test/operations/hello_world_op.ml:702:21
┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│[6]: -_hoo shape 0:6|1:10,2:11                                                                                                                                                         │
│┌──────┬─────────────────────────────────────────┬─────────────────────────────────────────┬──────┬─────────────────────────────────────────┬─────────────────────────────────────────┐│
File "test/training/moons_demo.expected", line 1, characters 0-0:
/usr/bin/git --no-pager diff --no-index --color=always -u _build/default/test/training/moons_demo.expected _build/default/test/training/moons_demo.exe.output
diff --git a/_build/default/test/training/moons_demo.expected b/_build/default/test/training/moons_demo.exe.output
index f88c473..1f4a51a 100644
--- a/_build/default/test/training/moons_demo.expected
+++ b/_build/default/test/training/moons_demo.exe.output
@@ -1,188 +1,184 @@


-    Half-moons scatterplot and decision boundary:
-    ┌────────────────────────────────────────────────────────────────────────────────────────────────────┐
-    │****************************#***********************************************************************│
-    │****************************###***###***#***********************************************************│
-    │***************************#********#***#***********************************************************│
-    │********************#*********************##*#*#****************************************************│
-    │******************#***#*****##*#*#*#****#*#*#*##****************************************************│
-    │**************#*#**###**#*##**##********#**#****###**#**********************************************│
-    │***********#***##***#**##*****************#*#*##*###**********************************************..│
-    │***************#**###******************************##*#******************************************...│
-    │*************#*****#******************************#*#***#*#*************************************....│
-    │*********#***#******************......************##*###**#************************************.....│
-    │******#***#*#*#****************........******************#*#*********************************.......│
-    │*****###****#****************...........****************#***********************************........│
-    │*******#*###****************.............******************#*#*****************************.........│
-    │**********##***************.......%%......***************#**##****************************..........│
-    │*****#***#****************......%..%%......*********************************************..........%.│
-    │**####*******************......%..%..........****************##*#**********************........%...%│
-    │****#*******************.......%%..%..........***************#*#**********************.........%....│
-    │*#****##***************.........%....%.........************##***#********************.......%...%%..│
-    │****#*#***************.........%..%.%...........*************#**#*******************..........%.%...│
-    │##*##****************............%...............**************#*##****************.........%.%.%%%.│
-    │**#####************............%...%%.............*******************************...........%..%.%..│
-    │******************...............%.%.%%............*********#*#*#*#*************................%%..│
-    │***##************................%..%..%............************#*#************.............%...%...│
-    │##**#***********...................%...%.............********#**###***********...........%.%%.......│
-    │###************..................%.%.%................***********##**********..................%....│
-    │**##**********.........................................**********#*********.............%%.%..%.....│
-    │**#**********......................%%...................********##********..............%%.%........│
-    │************..........................%..................****#**#********...................%.......│
-    │***********.........................%%.%..................*****##******...............%..%..........│
-    │**********.............................%%..................***********.................%%.%%........│
-    │*********..............................%...%................*******.....................%%%.........│
-    │********...................................%..%....................................%.....%..........│
-    │*******.................................%%..%.%................................%.%.%.%%.............│
-    │******.....................................%%.%...%%.%.......................%%%....%.%.%...........│
-    │*****....................................%.....%.%..%....................%.....%%.%.%...............│
-    │****........................................%%...%.%%%%..%.......%.........%%.%%....................│
-    │***...............................................%..%.......%..%%%%...%.%..%.%.....................│
-    │**.................................................%.%.%............%..%...%........................│
-    │*.................................................%....%.%......%%...%.%............................│
-    │..........................................................%..%......%%%.............................│
-    └────────────────────────────────────────────────────────────────────────────────────────────────────┘
-    
-    Loss:
-    ┌────────┬────────────────────────────────────────────────────────────────────────────────────────────────────┐
-    │ 3.79e+1│-                                                                                                   │
-    │        │                                                                                                    │
-    │        │                                                                                                    │
-    │        │                                                                                                    │
-    │        │                                                                                                    │
-    │        │                                                                                                    │
-    │        │                                                                                                    │
-    │        │                                                                                                    │
-    │        │                                                                                                    │
-    │        │                                                                                                    │
-    │        │                                                                                                    │
-    │        │                                                                                                    │
-    │        │                                                                                                    │
-    │        │                                                                                                    │
-    │        │                                                                                                    │
-    │        │                                                                                                    │
-    │        │                                                                                                    │
-    │        │                                                                                                    │
-    │l       │                                                                                                    │
-    │o       │                                                                                                    │
-    │s       │                                                                                                    │
-    │s       │                                                                                                    │
-    │        │                                                                                                    │
-    │        │                                                                                                    │
-    │        │                                                                                                    │
-    │        │                                                                                                    │
-    │        │                                                                                                    │
-    │        │                                                                                                    │
-    │        │                                                                                                    │
-    │        │                                                                                                    │
-    │        │-                                                                                                   │
-    │        │                                                                                                    │
-    │        │                                                                                                    │
-    │        │                                                                                                    │
-    │        │                                                                                                    │
-    │        │                                                                                                    │
-    │        │                                                                                                    │
-    │        │                                                                                                    │
-    │        │-       -         -                                                                                 │
-    │ 0.00   │----------------------------------------------------------------------------------------------------│
-    ├────────┼────────────────────────────────────────────────────────────────────────────────────────────────────┤
-    │        │0.00                                                                                         3.99e+2│
-    │        │                                                step                                                │
-    └────────┴────────────────────────────────────────────────────────────────────────────────────────────────────┘
-    
-    Log-loss, for better visibility:
-    ┌─────────┬────────────────────────────────────────────────────────────────────────────────────────────────────┐
-    │ 3.63    │-                                                                                                   │
-    │         │                                                                                                    │
-    │         │                                                                                                    │
-    │         │                                                                                                    │
-    │         │-                                                                                                   │
-    │         │                                                                                                    │
-    │         │                                                                                                    │
-    │         │                                                                                                    │
-    │         │                                                                                                    │
-    │         │-                                                                                                   │
-    │         │        -         -                                                                                 │
-    │         │ -  -                        -                                                                      │
-    │         │------       -                                                                                      │
-    │         │ ---- -  - --- -   - - -    -                                                                       │
-    │         │   --  -  - - ---     --  -  --            -                                                        │
-    │         │  -  -- - -    ---  - - ---  -----       - --                                                       │
-    │l        │       --  -      - -      -     ---  -    -         -                                              │
-    │o        │       - -  -   --            -  --  - -  -     -                        -                          │
-    │g        │               -     -   -      -  --     - -    -  -     -                   -          -          │
-    │         │     - -     -   --      -                  -      -  --       - -         -                        │
-    │l        │            -             -            --    --            -  -         -  -                       -│
-    │o        │        -        -                           -       -  -       -   -           - -          -    - │
-    │s        │                               -     -        -      -                             --   -           │
-    │s        │                      -                                                   -                         │
-    │         │                       -   -                          -    -           -        -       -    -    - │
-    │         │                   -               - -  -                               -                           │
-    │         │                                                                             -   -                  │
-    │         │                                                  -    -              -                             │
-    │         │                                      -                                        -                    │
-    │         │                                                                                                    │
-    │         │                            -                                                                       │
-    │         │                                                                -                                   │
-    │         │                                                                                                    │
-    │         │                                                                                                    │
-    │         │                                                                                                    │
-    │         │                                                                                                    │
-    │         │          -                                                                                         │
-    │         │                                                                                                    │
-    │         │                                                                                                    │
-    │ -1.00e+1│     -   - -  -   ----- -- --------------- ---------------------------------------------------------│
-    ├─────────┼────────────────────────────────────────────────────────────────────────────────────────────────────┤
-    │         │0.00                                                                                         3.99e+2│
-    │         │                                                step                                                │
-    └─────────┴────────────────────────────────────────────────────────────────────────────────────────────────────┘
-    
-    Learning rate:
-    ┌─────────┬────────────────────────────────────────────────────────────────────────────────────────────────────┐
-    │ -1.00e-1│                                                                                                   -│
-    │         │                                                                                                 ---│
-    │         │                                                                                              ----  │
-    │         │                                                                                            ---     │
-    │         │                                                                                         ----       │
-    │         │                                                                                       ---          │
-    │         │                                                                                    ---             │
-    │         │                                                                                  ---               │
-    │         │                                                                               ---                  │
-    │         │                                                                            ----                    │
-    │         │                                                                          ---                       │
-    │         │                                                                       ----                         │
-    │         │                                                                     ---                            │
-    │l        │                                                                  ----                              │
-    │e        │                                                                ---                                 │
-    │a        │                                                             ---                                    │
-    │r        │                                                           ---                                      │
-    │n        │                                                        ---                                         │
-    │i        │                                                     ----                                           │
-    │n        │                                                   ---                                              │
-    │g        │                                                ----                                                │
-    │         │                                              ---                                                   │
-    │r        │                                           ----                                                     │
-    │a        │                                         ---                                                        │
-    │t        │                                      ---                                                           │
-    │e        │                                    ---                                                             │
-    │         │                                 ---                                                                │
-    │         │                              ----                                                                  │
-    │         │                            ---                                                                     │
-    │         │                         ----                                                                       │
-    │         │                       ---                                                                          │
-    │         │                    ----                                                                            │
-    │         │                  ---                                                                               │
-    │         │               ---                                                                                  │
-    │         │             ---                                                                                    │
-    │         │          ---                                                                                       │
-    │         │       ----                                                                                         │
-    │         │     ---                                                                                            │
-    │         │  ----                                                                                              │
-    │ -2.00e-1│---                                                                                                 │
-    ├─────────┼────────────────────────────────────────────────────────────────────────────────────────────────────┤
-    │         │0.00                                                                                         3.99e+2│
-    │         │                                                step                                                │
-    └─────────┴────────────────────────────────────────────────────────────────────────────────────────────────────┘
-    mlp_result's name: mlp_point
-    (mlp moons_input) name: mlp_moons_input
-    
\ No newline at end of file
+Welcome to OCANNL! Reading configuration defaults from /src/_build/default/test/training/ocannl_config.
+Retrieving commandline, environment, or config file variable ocannl_log_level
+Found 0, in the config file
+Half-moons scatterplot and decision boundary:
+┌────────────────────────────────────────────────────────────────────────────────────────────────────┐
+│...................................#................................................................│
+│..........................##..#..###....##..........................................................│
+│.........................#....#.....#...............................................................│
+│.......................#.##.#.......#####...#.#.....................................................│
+│..................#.#.#...#..#.##....#.#.##..#....#.................................................│
+│.............#.#......##.#..#..........###..#....#..................................................│
+│.............##..##.....#....................#.##.###...#...........................................│
+│.............#.##.#.#.#.......................#...##..#.............................................│
+│.........#.#....##..................................##..#...........................................│
+│...........#.#....................................#..##...#.#.......................................│
+│..........##..........................................#...#.#.......................................│
+│.......#...###............................................#.........................................│
+│....#....##..........................%..................#....##.....................................│
+│.........##................................................#..#..............................%......│
+│.....#..#........................%..%......................##.#...................................%.│
+│...##.#..................................................#....................................%...%.│
+│..###...........................%..%%......................###................................%.%...│
+│..#...#.#.......................%%.%%.......................#.##.#............................%.....│
+│..#...#.............................%.........................##..............................%...%.│
+│..##..#............................%%.........................#..##.........................%%..%.%%│
+│#...#..#.........................%.%%%.......................##...#............................%.%..│
+│##...#.............................%%.........................#.#..#................................│
+│...................................%%%%.......................##.#.#........................%%..%.%.│
+│###................................%%..............................#.......................%....%...│
+│..##................................%%%.%....................................................%%..%..│
+│.#.....................................%.......................#.###......................%.%%.%....│
+│.....#................................%...%................................................%...%....│
+│...................................%.....%%......................#..................................│
+│.....................................%%%..%...........................................%..%%..%......│
+│.......................................%%.....%......................................%..%.%.%.......│
+│.........................................%%............................................%..%%.%......│
+│..........................................%.%.....%...............................%.%.%%..%.........│
+│.........................................%%%..%%......................................%.............│
+│...........................................%.%..%..............................%%.%.%.%%.%..........│
+│..............................................%%%%..%.%.......................%%..%.%.%.............│
+│..............................................%..%%%.%%...................%..%%...%.................│
+│...............................................%...%.%.%..%...%.%%..%%.%%...%.......................│
+│......................................................%%.%%%..%.%..%%.%.%.%%........................│
+│.....................................................%...........%%%%......%%.......................│
+│.......................................................%.%%%%.%.......%...%.........................│
+└────────────────────────────────────────────────────────────────────────────────────────────────────┘Loss:
+┌─────────┬────────────────────────────────────────────────────────────────────────────────────────────────────┐
+│ 4.75e+49│     -                                                                                              │
+│         │                                                                                                    │
+│         │                                                                                                    │
+│         │                                                                                                    │
+│         │                                                                                                    │
+│         │                                                                                                    │
+│         │                                                                                                    │
+│         │                                                                                                    │
+│         │                                                                                                    │
+│         │                                                                                                    │
+│         │                                                                                                    │
+│         │                                                                                                    │
+│         │                                                                                                    │
+│         │                                                                                                    │
+│         │                                                                                                    │
+│         │                                                                                                    │
+│         │                                                                                                    │
+│         │                                                                                                    │
+│l        │                                                                                                    │
+│o        │                                                                                                    │
+│s        │                                                                                                    │
+│s        │                                                                                                    │
+│         │                                                                                                    │
+│         │                                                                                                    │
+│         │                                                                                                    │
+│         │                                                                                                    │
+│         │                                                                                                    │
+│         │                                                                                                    │
+│         │                                                                                                    │
+│         │                                                                                                    │
+│         │                                                                                                    │
+│         │                                                                                                    │
+│         │                                                                                                    │
+│         │                                                                                                    │
+│         │                                                                                                    │
+│         │                                                                                                    │
+│         │                                                                                                    │
+│         │                                                                                                    │
+│         │                                                                                                    │
+│ 0.00    │----------------------------------------------------------------------------------------------------│
+├─────────┼────────────────────────────────────────────────────────────────────────────────────────────────────┤
+│         │0.00                                                                                         3.99e+2│
+│         │                                                step                                                │
+└─────────┴────────────────────────────────────────────────────────────────────────────────────────────────────┘Log-loss, for better visibility:
+┌─────────┬────────────────────────────────────────────────────────────────────────────────────────────────────┐
+│ 1.14e+2 │     -                                                                                              │
+│         │                                                                                                    │
+│         │                                                                                                    │
+│         │          -                                                                                         │
+│         │                                                                                                    │
+│         │                                                                                                    │
+│         │                                                                                                    │
+│         │                                                                                                    │
+│         │                                                                                                    │
+│         │                                                                                                    │
+│         │                                                                                                    │
+│         │                                                                                                    │
+│         │                                                                                                    │
+│         │                                                                                                    │
+│         │                                                                                                    │
+│         │                                                                                                    │
+│l        │                                                                                                    │
+│o        │                                                                                                    │
+│g        │                                                                                                    │
+│         │                                                                                                    │
+│l        │                                                                                                    │
+│o        │                                                                                                    │
+│s        │                                                                                                    │
+│s        │                                                                                                    │
+│         │               -                                                                                    │
+│         │                                                                                                    │
+│         │                        -                                                                           │
+│         │                                                                                                    │
+│         │                                                                                                    │
+│         │                                                                                                    │
+│         │                                                                                                    │
+│         │----      --  -     -----     -----     -----     -----     -----     -----     -----     -----     │
+│         │              -                                                                                     │
+│         │                                                                                                    │
+│         │                                                                                                    │
+│         │                                                                                                    │
+│         │                                                                                                    │
+│         │                                                                                                    │
+│         │                                                                                                    │
+│ -1.00e+1│   ------- ---------     -----     -----     -----     -----     -----     -----     -----     -----│
+├─────────┼────────────────────────────────────────────────────────────────────────────────────────────────────┤
+│         │0.00                                                                                         3.99e+2│
+│         │                                                step                                                │
+└─────────┴────────────────────────────────────────────────────────────────────────────────────────────────────┘
+Learning rate:
+┌─────────┬────────────────────────────────────────────────────────────────────────────────────────────────────┐
+│ -1.00e-1│                                                                                                   -│
+│         │                                                                                                 ---│
+│         │                                                                                              ----  │
+│         │                                                                                            ---     │
+│         │                                                                                         ----       │
+│         │                                                                                       ---          │
+│         │                                                                                    ---             │
+│         │                                                                                  ---               │
+│         │                                                                               ---                  │
+│         │                                                                            ----                    │
+│         │                                                                          ---                       │
+│         │                                                                       ----                         │
+│         │                                                                     ---                            │
+│l        │                                                                  ----                              │
+│e        │                                                                ---                                 │
+│a        │                                                             ---                                    │
+│r        │                                                           ---                                      │
+│n        │                                                        ---                                         │
+│i        │                                                     ----                                           │
+│n        │                                                   ---                                              │
+│g        │                                                ----                                                │
+│         │                                              ---                                                   │
+│r        │                                           ----                                                     │
+│a        │                                         ---                                                        │
+│t        │                                      ---                                                           │
+│e        │                                    ---                                                             │
+│         │                                 ---                                                                │
+│         │                              ----                                                                  │
+│         │                            ---                                                                     │
+│         │                         ----                                                                       │
+│         │                       ---                                                                          │
+│         │                    ----                                                                            │
+│         │                  ---                                                                               │
+│         │               ---                                                                                  │
+│         │             ---                                                                                    │
+│         │          ---                                                                                       │
+│         │       ----                                                                                         │
+│         │     ---                                                                                            │
+│         │  ----                                                                                              │
+│ -2.00e-1│---                                                                                                 │
+├─────────┼────────────────────────────────────────────────────────────────────────────────────────────────────┤
+│         │0.00                                                                                         3.99e+2│
+│         │                                                step                                                │
+└─────────┴────────────────────────────────────────────────────────────────────────────────────────────────────┘mlp_result's name: mlp_point
+(mlp moons_input) name: mlp_moons_input
File "test/training/moons_demo_parallel.expected", line 1, characters 0-0:
/usr/bin/git --no-pager diff --no-index --color=always -u _build/default/test/training/moons_demo_parallel.expected _build/default/test/training/moons_demo_parallel.exe.output
diff --git a/_build/default/test/training/moons_demo_parallel.expected b/_build/default/test/training/moons_demo_parallel.exe.output
index 3582111..f5db190 100644
--- a/_build/default/test/training/moons_demo_parallel.expected
+++ b/_build/default/test/training/moons_demo_parallel.exe.output
@@ -1 +1,5 @@
+
+Welcome to OCANNL! Reading configuration defaults from /src/_build/default/test/training/ocannl_config.
+Retrieving commandline, environment, or config file variable ocannl_log_level
+Found 0, in the config file
Success
"/usr/bin/env" "bash" "-c" "opam exec -- dune build @install @check @runtest && rm -rf _build" failed with exit status 1
2025-07-14 11:16.37: Job failed: Failed: Build failed