Organisationsahrefsocannl54e026 ()(lint-fmt)

(lint-fmt)

Link Copied
Code Copied

Logs

2025-06-18 10:04.49: New job: test ahrefs/ocannl https://github.com/ahrefs/ocannl.git#refs/heads/master (54e0262e486c7b37a9713655e44194ea53efadb3) (linux-x86_64:(lint-fmt))
Base: ocaml/opam:debian-12-ocaml-4.08@sha256:cc4b148b1fa1916574df02fcec0956fedbec6798bedacd9bfd4417c1c098ce8e
ocamlformat version: version 0.27.0 (from opam)


To reproduce locally:


git clone --recursive "https://github.com/ahrefs/ocannl.git" -b "master" && cd "ocannl" && git reset --hard 54e0262e
cat > Dockerfile <<'END-OF-DOCKERFILE'
FROM ocaml/opam:debian-12-ocaml-4.08@sha256:cc4b148b1fa1916574df02fcec0956fedbec6798bedacd9bfd4417c1c098ce8e
USER 1000:1000
RUN cd ~/opam-repository && (git cat-file -e 0eea63ad71af2b1116c556023bedc6bf083e6125 || git fetch origin master) && git reset -q --hard 0eea63ad71af2b1116c556023bedc6bf083e6125 && git log --no-decorate -n1 --oneline && opam update -u
RUN opam depext -i dune
WORKDIR /src
RUN opam depext -i ocamlformat=0.27.0
COPY --chown=1000:1000 . /src/
RUN opam exec -- dune build @fmt --ignore-promoted-rules || (echo "dune build @fmt failed"; exit 2)


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


2025-06-18 10:04.49: Using cache hint "ahrefs/ocannl-ocaml/opam:debian-12-ocaml-4.08@sha256:cc4b148b1fa1916574df02fcec0956fedbec6798bedacd9bfd4417c1c098ce8e-debian-12-4.08_opam-2.3-ocamlformat-0eea63ad71af2b1116c556023bedc6bf083e6125"
2025-06-18 10:04.49: Using OBuilder spec:
((from ocaml/opam:debian-12-ocaml-4.08@sha256:cc4b148b1fa1916574df02fcec0956fedbec6798bedacd9bfd4417c1c098ce8e)
(user (uid 1000) (gid 1000))
(run (cache (opam-archives (target /home/opam/.opam/download-cache)))
(network host)
(shell "cd ~/opam-repository && (git cat-file -e 0eea63ad71af2b1116c556023bedc6bf083e6125 || git fetch origin master) && git reset -q --hard 0eea63ad71af2b1116c556023bedc6bf083e6125 && git log --no-decorate -n1 --oneline && opam update -u"))
(run (cache (opam-archives (target /home/opam/.opam/download-cache)))
(network host)
(shell "opam depext -i dune"))
(workdir /src)
(run (cache (opam-archives (target /home/opam/.opam/download-cache)))
(network host)
(shell "opam depext -i ocamlformat=0.27.0"))
(copy (src .) (dst /src/))
(run (shell "opam exec -- dune build @fmt --ignore-promoted-rules || (echo \"dune build @fmt failed\"; exit 2)"))
)


2025-06-18 10:04.49: Waiting for resource in pool OCluster
2025-06-18 10:04.49: Waiting for worker…
2025-06-18 10:05.12: Got resource from pool OCluster
Building on asteria.caelum.ci.dev
All commits already cached
HEAD is now at 54e0262e Fixed conv spec parsing in einsum and cleaned up einsum parsing overall


(from ocaml/opam:debian-12-ocaml-4.08@sha256:cc4b148b1fa1916574df02fcec0956fedbec6798bedacd9bfd4417c1c098ce8e)
2025-06-18 10:05.12 ---> using "4ea5038d254cfd14663698deb665a2dc4ce1e1383d544c063adebb02ed15ce16" from cache


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


/: (run (cache (opam-archives (target /home/opam/.opam/download-cache)))
(network host)
(shell "cd ~/opam-repository && (git cat-file -e 0eea63ad71af2b1116c556023bedc6bf083e6125 || git fetch origin master) && git reset -q --hard 0eea63ad71af2b1116c556023bedc6bf083e6125 && git log --no-decorate -n1 --oneline && opam update -u"))
0eea63ad71 Merge pull request #27946 from mtelvers/opam-publish-ocaml-version.4.0.1


<><> Updating package repositories ><><><><><><><><><><><><><><><><><><><><><><>
[default] Initialised
default (at git+file:///home/opam/opam-repository):
[INFO] opam 2.1 and 2.2 include many performance and security improvements over 2.0; please consider upgrading (https://opam.ocaml.org/doc/Install.html)


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.
# Run eval $(opam env) to update the current shell environment
2025-06-18 10:06.10 ---> saved as "ed14c208b709d50e26e290f8f669e0b0b6a2456751ee5b87b29d71221f0a9fc1"


/: (run (cache (opam-archives (target /home/opam/.opam/download-cache)))
(network host)
(shell "opam depext -i dune"))
# Detecting depexts using vars: arch=x86_64, os=linux, os-distribution=debian, os-family=debian
# No extra OS packages requirements found.
# All required OS packages found.
# Now letting opam install the packages
The following actions will be performed:
- install dune 3.19.1


<><> Gathering sources ><><><><><><><><><><><><><><><><><><><><><><><><><><><><>
[dune.3.19.1] found in cache


<><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><>
-> installed dune.3.19.1
Done.
# Run eval $(opam env) to update the current shell environment
2025-06-18 10:06.54 ---> saved as "249f8284e2625ce869f4c794eb6ff1eab40d82e0af762bb312d97ad81bf8d4f1"


/: (workdir /src)


/src: (run (cache (opam-archives (target /home/opam/.opam/download-cache)))
(network host)
(shell "opam depext -i ocamlformat=0.27.0"))
# Detecting depexts using vars: arch=x86_64, os=linux, os-distribution=debian, os-family=debian
# No extra OS packages requirements found.
# All required OS packages found.
# Now letting opam install the packages
The following actions will be performed:
- install sexplib0          v0.14.0  [required by base]
- install cmdliner          1.3.0    [required by ocamlformat]
- install menhirLib         20240715 [required by ocamlformat-lib]
- install menhirCST         20240715 [required by menhir]
- install ocamlbuild        0.16.1   [required by fpath, astring, uuseg]
- install dune-build-info   3.19.1   [required by ocamlformat-lib]
- install menhirSdk         20240715 [required by ocamlformat-lib]
- install either            1.0.0    [required by ocamlformat-lib]
- install ocaml-version     4.0.1    [required by ocamlformat-lib]
- install camlp-streams     5.0.1    [required by ocamlformat-lib]
- install csexp             1.5.2    [required by ocamlformat]
- install seq               base     [required by re]
- install fix               20250428 [required by ocamlformat-lib]
- install ocamlfind         1.9.8    [required by ocp-indent, astring, fpath, uuseg]
- install menhir            20240715 [required by ocamlformat-lib]
- install dune-configurator 3.19.1   [required by base]
- install re                1.11.0   [required by ocamlformat]
- install topkg             1.0.8    [required by fpath, astring, uuseg]
- install base-bytes        base     [required by ocp-indent]
- install base              v0.14.3  [required by ocamlformat-lib]
- install uutf              1.0.4    [required by ocamlformat-lib]
- install astring           0.8.5    [required by ocamlformat-lib]
- install ocp-indent        1.8.1    [required by ocamlformat-lib]
- install stdio             v0.14.0  [required by ocamlformat-lib]
- install uucp              15.0.0   [required by uuseg]
- install fpath             0.7.3    [required by ocamlformat-lib]
- install uuseg             15.0.0   [required by ocamlformat-lib]
- install ocamlformat-lib   0.27.0   [required by ocamlformat]
- install ocamlformat       0.27.0
===== 29 to install =====


<><> Gathering sources ><><><><><><><><><><><><><><><><><><><><><><><><><><><><>
[astring.0.8.5] found in cache
[base.v0.14.3] found in cache
[camlp-streams.5.0.1] found in cache
[cmdliner.1.3.0] found in cache
[csexp.1.5.2] found in cache
[dune-build-info.3.19.1] found in cache
[dune-configurator.3.19.1] found in cache
[either.1.0.0] found in cache
[fix.20250428] found in cache
[fpath.0.7.3] found in cache
[menhir.20240715] found in cache
[menhirCST.20240715] found in cache
[menhirLib.20240715] found in cache
[menhirSdk.20240715] found in cache
[ocaml-version.4.0.1] found in cache
[ocamlbuild.0.16.1] found in cache
[ocamlfind.1.9.8] found in cache
[ocamlformat.0.27.0] found in cache
[ocamlformat-lib.0.27.0] found in cache
[ocp-indent.1.8.1] found in cache
[re.1.11.0] found in cache
[sexplib0.v0.14.0] found in cache
[stdio.v0.14.0] found in cache
[topkg.1.0.8] found in cache
[uucp.15.0.0] found in cache
[uuseg.15.0.0] found in cache
[uutf.1.0.4] found in cache


<><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><>
-> installed seq.base
-> installed camlp-streams.5.0.1
-> installed cmdliner.1.3.0
-> installed csexp.1.5.2
-> installed either.1.0.0
-> installed fix.20250428
-> installed menhirCST.20240715
-> installed menhirLib.20240715
-> installed menhirSdk.20240715
-> installed ocaml-version.4.0.1
-> installed sexplib0.v0.14.0
-> installed re.1.11.0
-> installed dune-build-info.3.19.1
-> installed ocamlfind.1.9.8
-> installed base-bytes.base
-> installed dune-configurator.3.19.1
-> installed ocamlbuild.0.16.1
-> installed ocp-indent.1.8.1
-> installed topkg.1.0.8
-> installed base.v0.14.3
-> installed astring.0.8.5
-> installed uutf.1.0.4
-> installed stdio.v0.14.0
-> installed fpath.0.7.3
-> installed menhir.20240715
-> installed uucp.15.0.0
-> installed uuseg.15.0.0
-> installed ocamlformat-lib.0.27.0
-> installed ocamlformat.0.27.0
Done.


<><> ocp-indent.1.8.1 installed successfully ><><><><><><><><><><><><><><><><><>
=> This package requires additional configuration for use in editors. Install package 'user-setup', or manually:


* for Emacs, add these lines to ~/.emacs:
(add-to-list 'load-path "/home/opam/.opam/4.08/share/emacs/site-lisp")
(require 'ocp-indent)


* for Vim, add this line to ~/.vimrc:
set rtp^="/home/opam/.opam/4.08/share/ocp-indent/vim"
# Run eval $(opam env) to update the current shell environment
2025-06-18 10:07.52 ---> saved as "7fd5d4ac1bb4f93065934b08bd6aad3989793fd62a884f257d9f7ac1e147ec1a"


/src: (copy (src .) (dst /src/))
2025-06-18 10:07.52 ---> saved as "faad2f3522a54194abfac23f7e6d089bd3b1ed6fa4ca036bb1e0aedf38a04e9e"


/src: (run (shell "opam exec -- dune build @fmt --ignore-promoted-rules || (echo \"dune build @fmt failed\"; exit 2)"))
File "arrayjit/bin/dune", line 6, characters 21-34:
6 |   (pps ppx_minidebug ppx_sexp_conv))
^^^^^^^^^^^^^
Error: Library "ppx_sexp_conv" not found.
-> required by _build/default/arrayjit/bin/read_config.exe
-> required by %{dep:../../arrayjit/bin/read_config.exe} at test/dune:25
-> required by _build/default/test/config/ocannl_backend.txt
-> required by %{read:config/ocannl_backend.txt} at test/dune:44
-> required by Computing directory contents of _build/default/test
File "arrayjit/bin/dune", line 6, characters 7-20:
6 |   (pps ppx_minidebug ppx_sexp_conv))
^^^^^^^^^^^^^
Error: Library "ppx_minidebug" not found.
-> required by _build/default/arrayjit/bin/.merlin-conf/exe-read_config
-> required by _build/default/arrayjit/bin/read_config.exe
-> required by %{dep:../../arrayjit/bin/read_config.exe} at test/dune:25
-> required by _build/default/test/config/ocannl_backend.txt
-> required by %{read:config/ocannl_backend.txt} at test/dune:44
-> required by Computing directory contents of _build/default/test
File "arrayjit/test/test_numerical_types.ml", line 1, characters 0-0:
diff --git a/_build/default/arrayjit/test/test_numerical_types.ml b/_build/default/arrayjit/test/.formatted/test_numerical_types.ml
index 7a25434..92fcbca 100644
--- a/_build/default/arrayjit/test/test_numerical_types.ml
+++ b/_build/default/arrayjit/test/.formatted/test_numerical_types.ml
@@ -48,13 +48,15 @@ let test_padding () =
Stdio.printf "\n\nTesting padding functionality:\n";


(* Test padding with float32 array *)
-  let padding_config = [| { Ndarray.left = 1; right = 1 }; { left = 2; right = 1 } |] in (* left=1,right=1 for first dim; left=2,right=1 for second dim *)
+  let padding_config = [| { Ndarray.left = 1; right = 1 }; { left = 2; right = 1 } |] in
+  (* left=1,right=1 for first dim; left=2,right=1 for second dim *)
let padding_value = -999.0 in


-  let padded_dims = [| 4; 6 |] in (* (2+1+1) x (3+2+1) *)
-
+  let padded_dims = [| 4; 6 |] in
+  (* (2+1+1) x (3+2+1) *)
+
let arr =
-    Ndarray.create_array ~debug:"padded_test" Ops.single ~dims:padded_dims
+    Ndarray.create_array ~debug:"padded_test" Ops.single ~dims:padded_dims
~padding:(Some (padding_config, padding_value))
(Ops.Constant_fill { values = [| 1.0; 2.0; 3.0; 4.0; 5.0; 6.0 |]; strict = true })
in
@@ -65,12 +67,13 @@ let test_padding () =
for j = 0 to dims.(1) - 1 do
let idx = [| i; j |] in
let value = Ndarray.get_as_float arr idx in
-      Stdio.printf "%8.1f " value;
+      Stdio.printf "%8.1f " value
done;
Stdio.printf "\n"
done;
-
-  Stdio.printf "\nExpected: padding value (-999.0) in margins, data values (1.0-6.0) in center region\n"
+
+  Stdio.printf
+    "\nExpected: padding value (-999.0) in margins, data values (1.0-6.0) in center region\n"


let () =
test_bfloat16_conversions ();
File "arrayjit/lib/assignments.ml", line 1, characters 0-0:
diff --git a/_build/default/arrayjit/lib/assignments.ml b/_build/default/arrayjit/lib/.formatted/assignments.ml
index bd3908f..3e41a7e 100644
--- a/_build/default/arrayjit/lib/assignments.ml
+++ b/_build/default/arrayjit/lib/.formatted/assignments.ml
@@ -154,20 +154,20 @@ let%diagn2_sexp to_low_level code =
let projections = Lazy.force projections in
let basecase rev_iters =
(* Create a substitution from product iterators to loop iterators *)
-      let subst_map =
+      let subst_map =
let loop_iters = Array.of_list_rev rev_iters in
Array.mapi projections.product_iterators ~f:(fun i prod_iter ->
-          (prod_iter, Indexing.Iterator loop_iters.(i)))
+            (prod_iter, Indexing.Iterator loop_iters.(i)))
|> Array.to_list
|> Map.of_alist_exn (module Indexing.Symbol)
in
(* Substitute in projections *)
let subst_index = function
| Indexing.Fixed_idx _ as idx -> idx
-        | Indexing.Iterator s as idx ->
-            Option.value ~default:idx (Map.find subst_map s)
+        | Indexing.Iterator s as idx -> Option.value ~default:idx (Map.find subst_map s)
| Indexing.Affine { symbols; offset } ->
-            (* For affine indices, we don't substitute - they should already use the right symbols *)
+            (* For affine indices, we don't substitute - they should already use the right
+               symbols *)
Indexing.Affine { symbols; offset }
in
let lhs_idcs = Array.map projections.project_lhs ~f:subst_index in
File "arrayjit/lib/tnode.ml", line 1, characters 0-0:
diff --git a/_build/default/arrayjit/lib/tnode.ml b/_build/default/arrayjit/lib/.formatted/tnode.ml
index 93c8f75..0a7293b 100644
--- a/_build/default/arrayjit/lib/tnode.ml
+++ b/_build/default/arrayjit/lib/.formatted/tnode.ml
@@ -105,7 +105,6 @@ let dims_without_padding tn =
Array.map2_exn dims padding ~f:(fun dim { left; right } -> dim - left - right)


let get_padding tn = Lazy.force tn.padding
-
let id { id; _ } = "n" ^ Int.to_string id
let label a = String.concat ~sep:"_" a.label
let is_alphanum_ = String.for_all ~f:(fun c -> Char.equal c '_' || Char.is_alphanum c)
@@ -540,8 +539,8 @@ let create ?default_prec ~id ~label ~dims ~padding init_op =
lazy
(if is_hosted_force tn 30 then
Some
-           (Nd.create_array ~debug (Lazy.force prec) ~dims:(Lazy.force dims) ~padding:(Lazy.force padding)
-              init_op)
+           (Nd.create_array ~debug (Lazy.force prec) ~dims:(Lazy.force dims)
+              ~padding:(Lazy.force padding) init_op)
else None)
and prec =
lazy
File "arrayjit/lib/gcc_backend.ml", line 1, characters 0-0:
diff --git a/_build/default/arrayjit/lib/gcc_backend.ml b/_build/default/arrayjit/lib/.formatted/gcc_backend.ml
index 6bcb3b9..8d7a7ec 100644
--- a/_build/default/arrayjit/lib/gcc_backend.ml
+++ b/_build/default/arrayjit/lib/.formatted/gcc_backend.ml
@@ -233,10 +233,9 @@ let compile_main ~name ~log_functions ~env { ctx; nodes; get_ident; merge_node;
| Iterator s -> Map.find_exn env s
| Affine { symbols; offset } ->
List.fold symbols ~init:(RValue.int ctx c_index offset) ~f:(fun acc (coeff, s) ->
-              RValue.binary_op ctx Plus c_index acc
-                (RValue.binary_op ctx Mult c_index
-                  (RValue.int ctx c_index coeff)
-                  (Map.find_exn env s))))
+                RValue.binary_op ctx Plus c_index acc
+                  (RValue.binary_op ctx Mult c_index (RValue.int ctx c_index coeff)
+                     (Map.find_exn env s))))
with e ->
Stdlib.Format.eprintf
"exec_as_gccjit: missing index from@ %a@ among environment keys:@ %a\n%!" Sexp.pp_hum
@@ -359,10 +358,14 @@ let compile_main ~name ~log_functions ~env { ctx; nodes; get_ident; merge_node;
| Embed_index (Fixed_idx i) -> (Int.to_string i, [])
| Embed_index (Iterator s) -> (Indexing.symbol_ident s ^ "{=%d}", [ Map.find_exn env s ])
| Embed_index (Affine { symbols; offset }) ->
-        let terms = List.map symbols ~f:(fun (coeff, s) ->
-          if coeff = 1 then Indexing.symbol_ident s
-          else Int.to_string coeff ^ "*" ^ Indexing.symbol_ident s) in
-        let expr = String.concat ~sep:"+" (terms @ if offset = 0 then [] else [Int.to_string offset]) in
+        let terms =
+          List.map symbols ~f:(fun (coeff, s) ->
+              if coeff = 1 then Indexing.symbol_ident s
+              else Int.to_string coeff ^ "*" ^ Indexing.symbol_ident s)
+        in
+        let expr =
+          String.concat ~sep:"+" (terms @ if offset = 0 then [] else [ Int.to_string offset ])
+        in
(expr, [])
| Binop (Arg1, v1, _v2) -> loop v1
| Binop (Arg2, _v1, v2) -> loop v2
@@ -524,10 +527,9 @@ let compile_main ~name ~log_functions ~env { ctx; nodes; get_ident; merge_node;
raise e)
| Embed_index (Affine { symbols; offset }) ->
List.fold symbols ~init:(RValue.int ctx num_typ offset) ~f:(fun acc (coeff, s) ->
-          RValue.binary_op ctx Plus num_typ acc
-            (RValue.binary_op ctx Mult num_typ
-              (RValue.int ctx num_typ coeff)
-              (RValue.cast ctx (Map.find_exn env s) num_typ)))
+            RValue.binary_op ctx Plus num_typ acc
+              (RValue.binary_op ctx Mult num_typ (RValue.int ctx num_typ coeff)
+                 (RValue.cast ctx (Map.find_exn env s) num_typ)))
| Binop (Arg2, _, c2) -> loop c2
| Binop (Arg1, c1, _) -> loop c1
| Binop (op, c1, c2) -> loop_binop op ~num_typ prec ~v1:(loop c1) ~v2:(loop c2)
File "arrayjit/lib/ndarray.ml", line 1, characters 0-0:
diff --git a/_build/default/arrayjit/lib/ndarray.ml b/_build/default/arrayjit/lib/.formatted/ndarray.ml
index e7c81cb..39b9190 100644
--- a/_build/default/arrayjit/lib/ndarray.ml
+++ b/_build/default/arrayjit/lib/.formatted/ndarray.ml
@@ -130,48 +130,48 @@ let indices_to_offset ~dims ~idcs =
Array.fold2_exn dims idcs ~init:0 ~f:(fun accu dim idx -> (accu * dim) + idx)


(** {2 *** Initialization ***} *)
-
-type axis_padding = { left : int; right : int }
-[@@deriving sexp, equal]
+
+type axis_padding = { left : int; right : int } [@@deriving sexp, equal]


let create_bigarray (type ocaml elt_t) (prec : (ocaml, elt_t) Ops.precision) ~dims ~padding
(init_op : Ops.init_op) : (ocaml, elt_t) bigarray =
Option.iter Utils.settings.fixed_state_for_init ~f:(fun seed -> Rand.Lib.init seed);
-
+
(* Handle padding: dims already includes padding, compute unpadded dimensions *)
-  let unpadded_dims, padding_info = match padding with
-    | None -> dims, None
+  let unpadded_dims, padding_info =
+    match padding with
+    | None -> (dims, None)
| Some (pad_config, pad_value) ->
-        let unpadded_dims = Array.map2_exn dims pad_config ~f:(fun dim { left; right } ->
-          dim - left - right) in
+        let unpadded_dims =
+          Array.map2_exn dims pad_config ~f:(fun dim { left; right } -> dim - left - right)
+        in
(unpadded_dims, Some (pad_config, pad_value))
in
-
+
let arr = create_bigarray_of_prec prec dims in
-
+
(* Fill with padding value if padding is specified *)
(match padding_info with
-   | None -> ()
-   | Some (_, pad_value) ->
-       (* Fill the entire array with padding value using precision-specific fill *)
-       (match prec with
-        | Ops.Byte -> A.fill arr (Char.of_int_exn @@ Int.of_float pad_value)
-        | Ops.Uint16 -> A.fill arr (Int.of_float pad_value)
-        | Ops.Int32 -> A.fill arr (Int32.of_float pad_value)
-        | Ops.Half -> A.fill arr pad_value
-        | Ops.Bfloat16 -> A.fill arr (float_to_bfloat16 pad_value)
-        | Ops.Fp8 -> A.fill arr (Char.of_int_exn @@ float_to_fp8 pad_value)
-        | Ops.Single -> A.fill arr pad_value
-        | Ops.Double -> A.fill arr pad_value));
-
+  | None -> ()
+  | Some (_, pad_value) -> (
+      (* Fill the entire array with padding value using precision-specific fill *)
+      match prec with
+      | Ops.Byte -> A.fill arr (Char.of_int_exn @@ Int.of_float pad_value)
+      | Ops.Uint16 -> A.fill arr (Int.of_float pad_value)
+      | Ops.Int32 -> A.fill arr (Int32.of_float pad_value)
+      | Ops.Half -> A.fill arr pad_value
+      | Ops.Bfloat16 -> A.fill arr (float_to_bfloat16 pad_value)
+      | Ops.Fp8 -> A.fill arr (Char.of_int_exn @@ float_to_fp8 pad_value)
+      | Ops.Single -> A.fill arr pad_value
+      | Ops.Double -> A.fill arr pad_value));
+
(* Helper function to convert unpadded indices to padded indices *)
let unpadded_to_padded_indices idcs =
match padding_info with
| None -> idcs
-    | Some (pad_config, _) ->
-        Array.map2_exn idcs pad_config ~f:(fun idx { left; _ } -> idx + left)
+    | Some (pad_config, _) -> Array.map2_exn idcs pad_config ~f:(fun idx { left; _ } -> idx + left)
in
-
+
(* For non-constant fill operations, we need to iterate over unpadded dimensions *)
let init_unpadded_region init_func =
let rec loop_dims idcs dim_idx =
@@ -186,7 +186,7 @@ let create_bigarray (type ocaml elt_t) (prec : (ocaml, elt_t) Ops.precision) ~di
in
loop_dims (Array.create ~len:(Array.length unpadded_dims) 0) 0
in
-
+
let constant_fill_f f values strict =
let len = Array.length values in
if strict then (
@@ -200,32 +200,32 @@ let create_bigarray (type ocaml elt_t) (prec : (ocaml, elt_t) Ops.precision) ~di
init_unpadded_region (fun idcs -> f values.(indices_to_offset ~dims:unpadded_dims ~idcs)))
else
init_unpadded_region (fun idcs ->
-        f values.(indices_to_offset ~dims:unpadded_dims ~idcs % len))
+          f values.(indices_to_offset ~dims:unpadded_dims ~idcs % len))
in
let constant_fill_float values strict = constant_fill_f Fn.id values strict in
-
+
(match (prec, init_op) with
| Ops.Byte, Constant_fill { values; strict } ->
ignore (constant_fill_f (Fn.compose Char.of_int_exn Int.of_float) values strict)
| Ops.Byte, Range_over_offsets ->
-      init_unpadded_region (fun idcs -> Char.of_int_exn @@ indices_to_offset ~dims:unpadded_dims ~idcs)
+      init_unpadded_region (fun idcs ->
+          Char.of_int_exn @@ indices_to_offset ~dims:unpadded_dims ~idcs)
| Ops.Byte, Standard_uniform -> init_unpadded_region (fun _ -> Rand.Lib.char ())
-  | Ops.Uint16, Constant_fill { values; strict } ->
+  | Ops.Uint16, Constant_fill { values; strict } ->
ignore (constant_fill_f Int.of_float values strict)
| Ops.Uint16, Range_over_offsets ->
init_unpadded_region (fun idcs -> indices_to_offset ~dims:unpadded_dims ~idcs)
| Ops.Uint16, Standard_uniform -> init_unpadded_region (fun _ -> Random.int 65536)
-  | Ops.Int32, Constant_fill { values; strict } ->
+  | Ops.Int32, Constant_fill { values; strict } ->
ignore (constant_fill_f Int32.of_float values strict)
| Ops.Int32, Range_over_offsets ->
-      init_unpadded_region (fun idcs -> Int32.of_int_exn @@ indices_to_offset ~dims:unpadded_dims ~idcs)
-  | Ops.Int32, Standard_uniform ->
-      init_unpadded_region (fun _ -> Random.int32 Int32.max_value)
+      init_unpadded_region (fun idcs ->
+          Int32.of_int_exn @@ indices_to_offset ~dims:unpadded_dims ~idcs)
+  | Ops.Int32, Standard_uniform -> init_unpadded_region (fun _ -> Random.int32 Int32.max_value)
| Ops.Half, Constant_fill { values; strict } -> ignore (constant_fill_float values strict)
| Ops.Half, Range_over_offsets ->
init_unpadded_region (fun idcs -> Float.of_int @@ indices_to_offset ~dims:unpadded_dims ~idcs)
-  | Ops.Half, Standard_uniform ->
-      init_unpadded_region (fun _ -> Rand.Lib.float_range 0.0 1.0)
+  | Ops.Half, Standard_uniform -> init_unpadded_region (fun _ -> Rand.Lib.float_range 0.0 1.0)
| Ops.Bfloat16, Constant_fill { values; strict } ->
ignore (constant_fill_f float_to_bfloat16 values strict)
| Ops.Bfloat16, Range_over_offsets ->
@@ -237,23 +237,25 @@ let create_bigarray (type ocaml elt_t) (prec : (ocaml, elt_t) Ops.precision) ~di
ignore (constant_fill_f (Fn.compose Char.of_int_exn float_to_fp8) values strict)
| Ops.Fp8, Range_over_offsets ->
init_unpadded_region (fun idcs ->
-          Char.of_int_exn @@ float_to_fp8 @@ Float.of_int @@ indices_to_offset ~dims:unpadded_dims ~idcs)
+          Char.of_int_exn @@ float_to_fp8 @@ Float.of_int
+          @@ indices_to_offset ~dims:unpadded_dims ~idcs)
| Ops.Fp8, Standard_uniform ->
-      init_unpadded_region (fun _ -> Char.of_int_exn @@ float_to_fp8 @@ Rand.Lib.float_range 0.0 1.0)
+      init_unpadded_region (fun _ ->
+          Char.of_int_exn @@ float_to_fp8 @@ Rand.Lib.float_range 0.0 1.0)
| Ops.Single, Constant_fill { values; strict } -> ignore (constant_fill_float values strict)
| Ops.Single, Range_over_offsets ->
init_unpadded_region (fun idcs -> Float.of_int @@ indices_to_offset ~dims:unpadded_dims ~idcs)
-  | Ops.Single, Standard_uniform ->
-      init_unpadded_region (fun _ -> Rand.Lib.float_range 0.0 1.0)
+  | Ops.Single, Standard_uniform -> init_unpadded_region (fun _ -> Rand.Lib.float_range 0.0 1.0)
| Ops.Double, Constant_fill { values; strict } -> ignore (constant_fill_float values strict)
| Ops.Double, Range_over_offsets ->
init_unpadded_region (fun idcs -> Float.of_int @@ indices_to_offset ~dims:unpadded_dims ~idcs)
-  | Ops.Double, Standard_uniform ->
-      init_unpadded_region (fun _ -> Rand.Lib.float_range 0.0 1.0)
+  | Ops.Double, Standard_uniform -> init_unpadded_region (fun _ -> Rand.Lib.float_range 0.0 1.0)
| _, File_mapped (filename, stored_prec) ->
(* For file mapping, we don't support padding yet - require no padding *)
if Option.is_some padding then
-        raise @@ Utils.User_error "Ndarray.create_bigarray: File_mapped initialization does not support padding";
+        raise
+        @@ Utils.User_error
+             "Ndarray.create_bigarray: File_mapped initialization does not support padding";
(* See: https://github.com/janestreet/torch/blob/master/src/torch/dataset_helper.ml#L3 *)
if not @@ Ops.equal_prec stored_prec (Ops.pack_prec prec) then
raise
@@ -389,8 +391,7 @@ let reset_bigarray (init_op : Ops.init_op) (type o b) (prec : (o, b) Ops.precisi
| Ops.Int32, Constant_fill { values; strict } -> constant_set_f Int32.of_float values strict
| Ops.Int32, Range_over_offsets ->
set_bigarray arr ~f:(fun idcs -> Int32.of_int_exn @@ indices_to_offset ~dims ~idcs)
-  | Ops.Int32, Standard_uniform ->
-      set_bigarray arr ~f:(fun _ -> Random.int32 Int32.max_value)
+  | Ops.Int32, Standard_uniform -> set_bigarray arr ~f:(fun _ -> Random.int32 Int32.max_value)
| Ops.Half, Constant_fill { values; strict } -> constant_set_float values strict
| Ops.Half, Range_over_offsets ->
set_bigarray arr ~f:(fun idcs -> Float.of_int @@ indices_to_offset ~dims ~idcs)
@@ -563,8 +564,8 @@ let hash_t nd = Nativeint.hash @@ to_native nd


let used_memory = Atomic.make 0


-let%track7_sexp create_array ~debug:(_debug : string) (prec : Ops.prec) ~(dims : int array)
-    ~padding init_op =
+let%track7_sexp create_array ~debug:(_debug : string) (prec : Ops.prec) ~(dims : int array) ~padding
+    init_op =
(* dims already includes padding if padding is specified *)
let size_in_bytes : int =
(if Array.length dims = 0 then 0 else Array.reduce_exn dims ~f:( * )) * Ops.prec_in_bytes prec
File "arrayjit/lib/low_level.ml", line 1, characters 0-0:
diff --git a/_build/default/arrayjit/lib/low_level.ml b/_build/default/arrayjit/lib/.formatted/low_level.ml
index 7e519f9..ea6ac75 100644
--- a/_build/default/arrayjit/lib/low_level.ml
+++ b/_build/default/arrayjit/lib/.formatted/low_level.ml
@@ -157,7 +157,7 @@ let visit_llc traced_store ~merge_node_id reverse_node_map ~max_visits llc =
| Iterator s -> Option.value ~default:(* static index *) 0 @@ Map.find env s
| Indexing.Affine { symbols; offset } ->
List.fold symbols ~init:offset ~f:(fun acc (coeff, s) ->
-            acc + coeff * (Option.value ~default:0 @@ Map.find env s)))
+              acc + (coeff * (Option.value ~default:0 @@ Map.find env s))))
in
let rec loop_proc env llc =
let loop = loop_proc env in
@@ -196,8 +196,8 @@ let visit_llc traced_store ~merge_node_id reverse_node_map ~max_visits llc =
assert (Tn.equal old_tn tn)
| Indexing.Affine { symbols; _ } ->
List.iter symbols ~f:(fun (_, s) ->
-                let old_tn = Hashtbl.find_or_add reverse_node_map s ~default:(fun () -> tn) in
-                assert (Tn.equal old_tn tn)))
+                  let old_tn = Hashtbl.find_or_add reverse_node_map s ~default:(fun () -> tn) in
+                  assert (Tn.equal old_tn tn)))
| Set_local (_, llv) -> loop_float env llv
| Comment _ -> ()
| Staged_compilation _ -> ()
@@ -279,11 +279,14 @@ let%diagn2_sexp check_and_store_virtual traced static_indices top_llc =
function
| Fixed_idx _ -> None
| Iterator s -> Option.some_if (not @@ Set.mem static_indices s) s
-               | Affine { symbols; _ } ->
+               | Affine { symbols; _ } -> (
(* For affine indices, collect all symbols that are not static *)
List.filter_map symbols ~f:(fun (_, s) ->
-                     Option.some_if (not @@ Set.mem static_indices s) s)
-                   |> function [] -> None | [s] -> Some s | _ -> failwith "check_idcs: multiple non-static symbols in affine index")
+                       Option.some_if (not @@ Set.mem static_indices s) s)
+                   |> function
+                   | [] -> None
+                   | [ s ] -> Some s
+                   | _ -> failwith "check_idcs: multiple non-static symbols in affine index"))
in
let num_syms =
Array.count indices ~f:(function Iterator s -> not @@ Set.mem static_indices s | _ -> false)
@@ -349,11 +352,13 @@ let%diagn2_sexp check_and_store_virtual traced static_indices top_llc =
raise @@ Non_virtual 10)
| Embed_index (Affine { symbols; _ }) ->
List.iter symbols ~f:(fun (_, s) ->
-          if not @@ Set.mem env_dom s then (
-            if not (Set.mem static_indices s) then
-              [%log2
-                "Inlining candidate has an escaping variable", (s : Indexing.symbol), (top_llc : t)];
-            raise @@ Non_virtual 10))
+            if not @@ Set.mem env_dom s then (
+              if not (Set.mem static_indices s) then
+                [%log2
+                  "Inlining candidate has an escaping variable",
+                  (s : Indexing.symbol),
+                  (top_llc : t)];
+              raise @@ Non_virtual 10))
| Ternop (_, llv1, llv2, llv3) ->
loop_float ~env_dom llv1;
loop_float ~env_dom llv2;
@@ -686,7 +691,7 @@ let simplify_llc llc =
| Get_global _ -> llv
| Embed_index (Fixed_idx i) -> Constant (Float.of_int i)
| Embed_index (Iterator _) -> llv
-    | Embed_index (Affine _) -> llv  (* Cannot simplify affine expressions to constants *)
+    | Embed_index (Affine _) -> llv (* Cannot simplify affine expressions to constants *)
| Binop (Arg1, llv1, _) -> loop_float llv1
| Binop (Arg2, _, llv2) -> loop_float llv2
| Binop (op, Constant c1, Constant c2) -> Constant (Ops.interpret_binop op c1 c2)
dune build @fmt failed
"/usr/bin/env" "bash" "-c" "opam exec -- dune build @fmt --ignore-promoted-rules || (echo "dune build @fmt failed"; exit 2)" failed with exit status 2
2025-06-18 10:07.54: Job failed: Failed: Build failed