gitextract__969s3jl/ ├── .github/ │ └── workflows/ │ ├── changelog.yml │ └── ci.yml ├── .gitignore ├── .ocamlformat ├── AGENTS.md ├── CHANGES.md ├── CONTRIBUTING.md ├── LICENSE ├── README.md ├── TODO.md ├── dev/ │ ├── README.md │ ├── mimir/ │ │ ├── README.md │ │ ├── dune-project │ │ └── lib/ │ │ ├── dune │ │ ├── mimir.ml │ │ ├── mimir.mli │ │ ├── sampler.ml │ │ ├── sampler.mli │ │ └── string_util.ml │ └── umbra/ │ ├── README.md │ ├── dune-project │ ├── examples/ │ │ ├── 01-constants-and-units/ │ │ │ ├── README.md │ │ │ ├── dune │ │ │ └── main.ml │ │ ├── 02-cosmological-distances/ │ │ │ ├── README.md │ │ │ ├── dune │ │ │ └── main.ml │ │ ├── 03-blackbody-fitting/ │ │ │ ├── README.md │ │ │ ├── dune │ │ │ └── main.ml │ │ ├── 04-extinction-and-magnitudes/ │ │ │ ├── README.md │ │ │ ├── dune │ │ │ └── main.ml │ │ ├── 05-sed-fitting/ │ │ │ ├── README.md │ │ │ ├── dune │ │ │ └── main.ml │ │ ├── 06-coordinates-and-time/ │ │ │ ├── README.md │ │ │ ├── dune │ │ │ └── main.ml │ │ ├── 07-batch-photometry/ │ │ │ ├── README.md │ │ │ ├── dune │ │ │ └── main.ml │ │ ├── 08-photometric-redshifts/ │ │ │ ├── README.md │ │ │ ├── dune │ │ │ └── main.ml │ │ ├── 09-gravitational-lensing/ │ │ │ ├── README.md │ │ │ ├── dune │ │ │ └── main.ml │ │ ├── 10-uncertainty-propagation/ │ │ │ ├── README.md │ │ │ ├── dune │ │ │ └── main.ml │ │ ├── 11-bayesian-sed/ │ │ │ ├── README.md │ │ │ ├── dune │ │ │ └── main.ml │ │ ├── 12-survey-optimization/ │ │ │ ├── README.md │ │ │ ├── dune │ │ │ └── main.ml │ │ └── README.md │ ├── lib/ │ │ ├── altaz.ml │ │ ├── altaz.mli │ │ ├── const.ml │ │ ├── const.mli │ │ ├── coord.ml │ │ ├── coord.mli │ │ ├── cosmo.ml │ │ ├── cosmo.mli │ │ ├── dune │ │ ├── extinction.ml │ │ ├── extinction.mli │ │ ├── filter_data.ml │ │ ├── filters.ml │ │ ├── filters.mli │ │ ├── fits/ │ │ │ ├── dune │ │ │ ├── fits_parser.ml │ │ │ ├── fits_parser.mli │ │ │ ├── umbra_fits.ml │ │ │ └── umbra_fits.mli │ │ ├── galactocentric.ml │ │ ├── galactocentric.mli │ │ ├── kdtree.ml │ │ ├── kdtree.mli │ │ ├── photometry.ml │ │ ├── photometry.mli │ │ ├── spectrum.ml │ │ ├── spectrum.mli │ │ ├── survey.ml │ │ ├── survey.mli │ │ ├── time.ml │ │ ├── time.mli │ │ ├── umbra.ml │ │ ├── umbra.mli │ │ ├── unit.ml │ │ ├── unit.mli │ │ └── vega_data.ml │ ├── papers/ │ │ └── perlmutter1999/ │ │ ├── .gitignore │ │ ├── download_data.sh │ │ └── perlmutter1999.md │ └── test/ │ ├── dune │ └── test_umbra.ml ├── doc/ │ ├── coming-from-python.md │ ├── ecosystem-overview.md │ ├── index.md │ ├── installation.md │ ├── introduction.md │ ├── quickstart.md │ ├── roadmap.md │ └── support-raven.md ├── dune-project ├── dune-workspace.tsan ├── opam/ │ ├── brot.opam │ ├── fehu.opam │ ├── hugin.opam │ ├── kaun-board.opam │ ├── kaun.opam │ ├── munin.opam │ ├── norn.opam │ ├── nx.opam │ ├── nx.opam.template │ ├── quill.opam │ ├── raven.opam │ ├── rune.opam │ ├── sowilo.opam │ ├── talon.opam │ ├── tolk.opam │ └── vega.opam ├── packages/ │ ├── brot/ │ │ ├── README.md │ │ ├── bench/ │ │ │ ├── README.md │ │ │ ├── bench_brot.ml │ │ │ ├── bench_rust/ │ │ │ │ ├── .gitignore │ │ │ │ ├── Cargo.toml │ │ │ │ └── main.rs │ │ │ ├── bench_tokenizers.py │ │ │ ├── brot.thumper │ │ │ ├── data/ │ │ │ │ ├── .gitignore │ │ │ │ ├── news_1k.txt │ │ │ │ └── wiki_64k.txt │ │ │ ├── download_data.sh │ │ │ └── dune │ │ ├── doc/ │ │ │ ├── 01-getting-started.md │ │ │ ├── 02-pipeline.md │ │ │ ├── 03-pretrained.md │ │ │ ├── 04-batch-processing.md │ │ │ ├── 05-algorithms.md │ │ │ ├── 06-hf-tokenizers-comparison.md │ │ │ ├── dune │ │ │ └── index.md │ │ ├── examples/ │ │ │ ├── 01-encode-decode/ │ │ │ │ ├── README.md │ │ │ │ ├── dune │ │ │ │ └── main.ml │ │ │ ├── 02-encoding-fields/ │ │ │ │ ├── README.md │ │ │ │ ├── dune │ │ │ │ └── main.ml │ │ │ ├── 03-normalizers/ │ │ │ │ ├── README.md │ │ │ │ ├── dune │ │ │ │ └── main.ml │ │ │ ├── 04-pre-tokenizers/ │ │ │ │ ├── README.md │ │ │ │ ├── dune │ │ │ │ └── main.ml │ │ │ ├── 05-algorithms/ │ │ │ │ ├── README.md │ │ │ │ ├── dune │ │ │ │ └── main.ml │ │ │ ├── 06-special-tokens/ │ │ │ │ ├── README.md │ │ │ │ ├── dune │ │ │ │ └── main.ml │ │ │ ├── 07-padding-truncation/ │ │ │ │ ├── README.md │ │ │ │ ├── dune │ │ │ │ └── main.ml │ │ │ ├── 08-decoders/ │ │ │ │ ├── README.md │ │ │ │ ├── dune │ │ │ │ └── main.ml │ │ │ ├── 09-training/ │ │ │ │ ├── README.md │ │ │ │ ├── dune │ │ │ │ └── main.ml │ │ │ ├── 10-bert-pipeline/ │ │ │ │ ├── README.md │ │ │ │ ├── dune │ │ │ │ └── main.ml │ │ │ ├── README.md │ │ │ └── x-gpt2-tokenizer/ │ │ │ ├── README.md │ │ │ ├── dune │ │ │ └── main.ml │ │ ├── lib/ │ │ │ ├── bpe.ml │ │ │ ├── bpe.mli │ │ │ ├── brot.ml │ │ │ ├── brot.mli │ │ │ ├── chars.ml │ │ │ ├── chars.mli │ │ │ ├── decoder.ml │ │ │ ├── decoder.mli │ │ │ ├── dune │ │ │ ├── encoding.ml │ │ │ ├── encoding.mli │ │ │ ├── normalizer.ml │ │ │ ├── normalizer.mli │ │ │ ├── post_processor.ml │ │ │ ├── post_processor.mli │ │ │ ├── pre_tokenizer.ml │ │ │ ├── pre_tokenizer.mli │ │ │ ├── unigram.ml │ │ │ ├── unigram.mli │ │ │ ├── word_level.ml │ │ │ ├── word_level.mli │ │ │ ├── wordpiece.ml │ │ │ └── wordpiece.mli │ │ └── test/ │ │ ├── dune │ │ ├── fixtures/ │ │ │ └── .gitignore │ │ ├── scripts/ │ │ │ └── download_hf_tokenizers.py │ │ ├── test_bpe.ml │ │ ├── test_encoding.ml │ │ ├── test_hf_tokenizers.ml │ │ ├── test_pretokenizers.ml │ │ ├── test_processors.ml │ │ ├── test_tokenization.ml │ │ ├── test_unicode.ml │ │ ├── test_vocab.ml │ │ └── test_wordpiece.ml │ ├── dune │ ├── fehu/ │ │ ├── README.md │ │ ├── bench/ │ │ │ ├── bench_fehu.ml │ │ │ ├── dune │ │ │ └── fehu.thumper │ │ ├── doc/ │ │ │ ├── 01-getting-started.md │ │ │ ├── 02-environments.md │ │ │ ├── 03-collection-and-evaluation.md │ │ │ ├── 04-gymnasium-comparison.md │ │ │ ├── dune │ │ │ └── index.md │ │ ├── examples/ │ │ │ ├── 01-random-agent/ │ │ │ │ ├── dune │ │ │ │ └── main.ml │ │ │ ├── 02-q-learning/ │ │ │ │ ├── dune │ │ │ │ └── main.ml │ │ │ ├── 03-reinforce/ │ │ │ │ ├── dune │ │ │ │ └── main.ml │ │ │ └── 04-dqn/ │ │ │ ├── dune │ │ │ └── main.ml │ │ ├── lib/ │ │ │ ├── buffer.ml │ │ │ ├── buffer.mli │ │ │ ├── collect.ml │ │ │ ├── collect.mli │ │ │ ├── dune │ │ │ ├── env.ml │ │ │ ├── env.mli │ │ │ ├── envs/ │ │ │ │ ├── cartpole.ml │ │ │ │ ├── dune │ │ │ │ ├── fehu_envs.ml │ │ │ │ ├── fehu_envs.mli │ │ │ │ ├── grid_world.ml │ │ │ │ ├── mountain_car.ml │ │ │ │ └── random_walk.ml │ │ │ ├── eval.ml │ │ │ ├── eval.mli │ │ │ ├── fehu.ml │ │ │ ├── fehu.mli │ │ │ ├── gae.ml │ │ │ ├── gae.mli │ │ │ ├── info.ml │ │ │ ├── info.mli │ │ │ ├── render.ml │ │ │ ├── render.mli │ │ │ ├── space.ml │ │ │ ├── space.mli │ │ │ ├── value.ml │ │ │ ├── value.mli │ │ │ ├── vec_env.ml │ │ │ └── vec_env.mli │ │ └── test/ │ │ ├── dune │ │ ├── test_buffer.ml │ │ ├── test_collect.ml │ │ ├── test_env.ml │ │ ├── test_env_wrappers.ml │ │ ├── test_envs.ml │ │ ├── test_eval.ml │ │ ├── test_gae.ml │ │ ├── test_info.ml │ │ ├── test_render.ml │ │ ├── test_space.ml │ │ ├── test_value.ml │ │ └── test_vec_env.ml │ ├── hugin/ │ │ ├── README.md │ │ ├── doc/ │ │ │ ├── 01-getting-started.md │ │ │ ├── 02-marks-and-styling.md │ │ │ ├── 03-layout-and-decorations.md │ │ │ ├── 04-colors-and-colormaps.md │ │ │ ├── 05-matplotlib-comparison.md │ │ │ └── index.md │ │ ├── examples/ │ │ │ ├── 01-line-plot/ │ │ │ │ ├── README.md │ │ │ │ ├── dune │ │ │ │ └── main.ml │ │ │ ├── 02-styling/ │ │ │ │ ├── README.md │ │ │ │ ├── dune │ │ │ │ └── main.ml │ │ │ ├── 03-scatter/ │ │ │ │ ├── README.md │ │ │ │ ├── dune │ │ │ │ └── main.ml │ │ │ ├── 04-bar-chart/ │ │ │ │ ├── README.md │ │ │ │ ├── dune │ │ │ │ └── main.ml │ │ │ ├── 05-histogram/ │ │ │ │ ├── README.md │ │ │ │ ├── dune │ │ │ │ └── main.ml │ │ │ ├── 06-layers/ │ │ │ │ ├── README.md │ │ │ │ ├── dune │ │ │ │ └── main.ml │ │ │ ├── 07-decorations/ │ │ │ │ ├── README.md │ │ │ │ ├── dune │ │ │ │ └── main.ml │ │ │ ├── 08-grid-layout/ │ │ │ │ ├── README.md │ │ │ │ ├── dune │ │ │ │ └── main.ml │ │ │ ├── 09-themes/ │ │ │ │ ├── README.md │ │ │ │ ├── dune │ │ │ │ └── main.ml │ │ │ ├── 10-showcase/ │ │ │ │ ├── README.md │ │ │ │ ├── dune │ │ │ │ └── main.ml │ │ │ ├── 11-errorbar/ │ │ │ │ ├── README.md │ │ │ │ ├── dune │ │ │ │ └── main.ml │ │ │ └── README.md │ │ ├── lib/ │ │ │ ├── axis.ml │ │ │ ├── axis.mli │ │ │ ├── cairo_backend.ml │ │ │ ├── cairo_backend.mli │ │ │ ├── cairo_sdl.ml │ │ │ ├── cairo_sdl.mli │ │ │ ├── cmap.ml │ │ │ ├── cmap.mli │ │ │ ├── cmap_data.ml │ │ │ ├── color.ml │ │ │ ├── color.mli │ │ │ ├── dune │ │ │ ├── hugin.ml │ │ │ ├── hugin.mli │ │ │ ├── image_util.ml │ │ │ ├── image_util.mli │ │ │ ├── prepared.ml │ │ │ ├── prepared.mli │ │ │ ├── resolve.ml │ │ │ ├── resolve.mli │ │ │ ├── scale.ml │ │ │ ├── scale.mli │ │ │ ├── scene.ml │ │ │ ├── scene.mli │ │ │ ├── spec.ml │ │ │ ├── spec.mli │ │ │ ├── svg_backend.ml │ │ │ ├── svg_backend.mli │ │ │ ├── theme.ml │ │ │ ├── theme.mli │ │ │ ├── ticks.ml │ │ │ └── ticks.mli │ │ ├── test/ │ │ │ ├── dune │ │ │ ├── test_cmap.ml │ │ │ ├── test_color.ml │ │ │ ├── test_image_util.ml │ │ │ ├── test_resolve.ml │ │ │ ├── test_scale.ml │ │ │ ├── test_svg_backend.ml │ │ │ └── test_ticks.ml │ │ ├── top/ │ │ │ ├── dune │ │ │ └── hugin_top.ml │ │ ├── ucairo/ │ │ │ ├── discover/ │ │ │ │ ├── discover.ml │ │ │ │ └── dune │ │ │ ├── dune │ │ │ ├── ucairo.ml │ │ │ ├── ucairo.mli │ │ │ └── ucairo_stubs.c │ │ └── usdl/ │ │ ├── discover/ │ │ │ ├── discover.ml │ │ │ └── dune │ │ ├── dune │ │ ├── usdl.ml │ │ ├── usdl.mli │ │ └── usdl_stubs.c │ ├── kaun/ │ │ ├── README.md │ │ ├── bench/ │ │ │ ├── bench_kaun.ml │ │ │ ├── dune │ │ │ └── kaun.thumper │ │ ├── doc/ │ │ │ ├── 01-getting-started.md │ │ │ ├── 02-layers-and-models.md │ │ │ ├── 03-training.md │ │ │ ├── 04-checkpoints-and-pretrained.md │ │ │ ├── 06-pytorch-comparison.md │ │ │ ├── dune │ │ │ └── index.md │ │ ├── examples/ │ │ │ ├── 01-xor/ │ │ │ │ ├── dune │ │ │ │ └── main.ml │ │ │ ├── 02-mnist/ │ │ │ │ ├── dune │ │ │ │ └── main.ml │ │ │ ├── 03-bert/ │ │ │ │ ├── bert.ml │ │ │ │ ├── bert.mli │ │ │ │ ├── dune │ │ │ │ ├── main.ml │ │ │ │ └── reference_hf_output.py │ │ │ └── 04-gpt2/ │ │ │ ├── dune │ │ │ ├── gpt2.ml │ │ │ ├── gpt2.mli │ │ │ ├── main.ml │ │ │ └── reference_hf_output.py │ │ ├── lib/ │ │ │ ├── activation.ml │ │ │ ├── activation.mli │ │ │ ├── attention.ml │ │ │ ├── attention.mli │ │ │ ├── checkpoint.ml │ │ │ ├── checkpoint.mli │ │ │ ├── context.ml │ │ │ ├── context.mli │ │ │ ├── data.ml │ │ │ ├── data.mli │ │ │ ├── datasets/ │ │ │ │ ├── cifar10.ml │ │ │ │ ├── dataset_utils.ml │ │ │ │ ├── dune │ │ │ │ ├── kaun_datasets.ml │ │ │ │ ├── kaun_datasets.mli │ │ │ │ └── mnist.ml │ │ │ ├── dune │ │ │ ├── fn.ml │ │ │ ├── fn.mli │ │ │ ├── grad.ml │ │ │ ├── grad.mli │ │ │ ├── hf/ │ │ │ │ ├── dune │ │ │ │ ├── kaun_hf.ml │ │ │ │ └── kaun_hf.mli │ │ │ ├── init.ml │ │ │ ├── init.mli │ │ │ ├── layer.ml │ │ │ ├── layer.mli │ │ │ ├── loss.ml │ │ │ ├── loss.mli │ │ │ ├── metric.ml │ │ │ ├── metric.mli │ │ │ ├── optim.ml │ │ │ ├── optim.mli │ │ │ ├── ptree.ml │ │ │ ├── ptree.mli │ │ │ ├── train.ml │ │ │ └── train.mli │ │ └── test/ │ │ ├── dune │ │ ├── test_attention.ml │ │ ├── test_checkpoint.ml │ │ ├── test_data.ml │ │ ├── test_fn.ml │ │ ├── test_grad.ml │ │ ├── test_init.ml │ │ ├── test_layer.ml │ │ ├── test_loss.ml │ │ ├── test_metric.ml │ │ ├── test_optim.ml │ │ ├── test_ptree.ml │ │ └── test_train.ml │ ├── munin/ │ │ ├── README.md │ │ ├── bin/ │ │ │ ├── dune │ │ │ └── main.ml │ │ ├── doc/ │ │ │ ├── 01-getting-started.md │ │ │ ├── 02-tracking.md │ │ │ ├── 03-artifacts.md │ │ │ ├── 04-cli.md │ │ │ ├── 05-dashboard.md │ │ │ ├── 06-system-monitoring.md │ │ │ ├── dune │ │ │ └── index.md │ │ ├── examples/ │ │ │ ├── 01-basic/ │ │ │ │ ├── README.md │ │ │ │ ├── dune │ │ │ │ └── main.ml │ │ │ ├── 02-metrics/ │ │ │ │ ├── dune │ │ │ │ └── main.ml │ │ │ ├── 03-artifacts/ │ │ │ │ ├── dune │ │ │ │ └── main.ml │ │ │ ├── 04-media/ │ │ │ │ ├── dune │ │ │ │ └── main.ml │ │ │ ├── 05-parameter-sweep/ │ │ │ │ ├── dune │ │ │ │ └── main.ml │ │ │ ├── 06-inspect/ │ │ │ │ ├── dune │ │ │ │ └── main.ml │ │ │ ├── 07-system-monitor/ │ │ │ │ ├── dune │ │ │ │ └── main.ml │ │ │ ├── README.md │ │ │ └── x-kaun-mnist/ │ │ │ ├── dune │ │ │ └── main.ml │ │ ├── lib/ │ │ │ ├── artifact.ml │ │ │ ├── artifact.mli │ │ │ ├── dune │ │ │ ├── env.ml │ │ │ ├── event_log.ml │ │ │ ├── fs.ml │ │ │ ├── index.ml │ │ │ ├── json_utils.ml │ │ │ ├── munin.ml │ │ │ ├── munin.mli │ │ │ ├── run.ml │ │ │ ├── run.mli │ │ │ ├── run_monitor.ml │ │ │ ├── run_monitor.mli │ │ │ ├── session.ml │ │ │ ├── session.mli │ │ │ ├── store.ml │ │ │ ├── store.mli │ │ │ ├── sys/ │ │ │ │ ├── config/ │ │ │ │ │ ├── discover.ml │ │ │ │ │ └── dune │ │ │ │ ├── dune │ │ │ │ ├── munin_sys.ml │ │ │ │ ├── munin_sys.mli │ │ │ │ ├── sysstat.ml │ │ │ │ ├── sysstat.mli │ │ │ │ └── sysstat_stubs.c │ │ │ ├── tui/ │ │ │ │ ├── detail.ml │ │ │ │ ├── dune │ │ │ │ ├── footer.ml │ │ │ │ ├── header.ml │ │ │ │ ├── info.ml │ │ │ │ ├── metrics.ml │ │ │ │ ├── munin_tui.ml │ │ │ │ ├── munin_tui.mli │ │ │ │ ├── overview.ml │ │ │ │ ├── system.ml │ │ │ │ └── theme.ml │ │ │ ├── value.ml │ │ │ └── value.mli │ │ └── test/ │ │ ├── dune │ │ └── test_munin.ml │ ├── norn/ │ │ ├── README.md │ │ ├── bench/ │ │ │ ├── bench_norn.ml │ │ │ ├── dune │ │ │ └── norn.thumper │ │ ├── doc/ │ │ │ ├── 01-getting-started.md │ │ │ ├── 02-adaptation-and-diagnostics.md │ │ │ ├── 03-advanced-usage.md │ │ │ ├── 04-pymc-comparison.md │ │ │ ├── dune │ │ │ └── index.md │ │ ├── examples/ │ │ │ ├── 01-sampling-basics/ │ │ │ │ ├── README.md │ │ │ │ ├── dune │ │ │ │ └── main.ml │ │ │ ├── 02-bayesian-regression/ │ │ │ │ ├── README.md │ │ │ │ ├── dune │ │ │ │ └── main.ml │ │ │ ├── 03-diagnostics/ │ │ │ │ ├── README.md │ │ │ │ ├── dune │ │ │ │ └── main.ml │ │ │ └── README.md │ │ ├── lib/ │ │ │ ├── adapt.ml │ │ │ ├── dune │ │ │ ├── internal.ml │ │ │ ├── norn.ml │ │ │ ├── norn.mli │ │ │ └── nuts.ml │ │ └── test/ │ │ ├── debug_nuts.ml │ │ ├── dune │ │ ├── test_blackjax_ref.py │ │ └── test_norn.ml │ ├── nx/ │ │ ├── README.md │ │ ├── bench/ │ │ │ ├── README.md │ │ │ ├── bench_numpy.py │ │ │ ├── bench_nx.ml │ │ │ ├── conv2d/ │ │ │ │ ├── README.md │ │ │ │ ├── bench_conv2d_nx.ml │ │ │ │ ├── bench_conv2d_pytorch.py │ │ │ │ ├── dune │ │ │ │ └── nx_conv2d.thumper │ │ │ ├── dune │ │ │ ├── einsum/ │ │ │ │ ├── README.md │ │ │ │ ├── bench_einsum_numpy.py │ │ │ │ ├── bench_einsum_nx.ml │ │ │ │ ├── dune │ │ │ │ └── nx_einsum.thumper │ │ │ ├── matmul/ │ │ │ │ ├── README.md │ │ │ │ ├── bench_matmul_numpy.py │ │ │ │ ├── bench_matmul_nx.ml │ │ │ │ ├── dune │ │ │ │ └── nx_matmul.thumper │ │ │ └── nx.thumper │ │ ├── doc/ │ │ │ ├── 01-getting-started.md │ │ │ ├── 02-array-operations.md │ │ │ ├── 03-linear-algebra.md │ │ │ ├── 04-io.md │ │ │ ├── 05-numpy-comparison.md │ │ │ ├── dune │ │ │ └── index.md │ │ ├── examples/ │ │ │ ├── 01-creating-arrays/ │ │ │ │ ├── README.md │ │ │ │ ├── dune │ │ │ │ └── main.ml │ │ │ ├── 02-infix-and-arithmetic/ │ │ │ │ ├── README.md │ │ │ │ ├── dune │ │ │ │ └── main.ml │ │ │ ├── 03-indexing-and-slicing/ │ │ │ │ ├── README.md │ │ │ │ ├── dune │ │ │ │ └── main.ml │ │ │ ├── 04-reshaping-and-broadcasting/ │ │ │ │ ├── README.md │ │ │ │ ├── dune │ │ │ │ └── main.ml │ │ │ ├── 05-reductions-and-statistics/ │ │ │ │ ├── README.md │ │ │ │ ├── dune │ │ │ │ └── main.ml │ │ │ ├── 06-random-numbers/ │ │ │ │ ├── README.md │ │ │ │ ├── dune │ │ │ │ └── main.ml │ │ │ ├── 07-linear-algebra/ │ │ │ │ ├── README.md │ │ │ │ ├── dune │ │ │ │ └── main.ml │ │ │ ├── 08-signal-processing/ │ │ │ │ ├── README.md │ │ │ │ ├── dune │ │ │ │ └── main.ml │ │ │ ├── 09-image-processing/ │ │ │ │ ├── README.md │ │ │ │ ├── dune │ │ │ │ └── main.ml │ │ │ ├── 10-machine-learning/ │ │ │ │ ├── README.md │ │ │ │ ├── dbscan.ml │ │ │ │ ├── dune │ │ │ │ ├── kmeans.ml │ │ │ │ ├── pca.ml │ │ │ │ └── tsne.ml │ │ │ └── README.md │ │ ├── lib/ │ │ │ ├── .ocamlformat-ignore │ │ │ ├── backend/ │ │ │ │ ├── dune │ │ │ │ └── nx_backend.mli │ │ │ ├── backend_c/ │ │ │ │ ├── config/ │ │ │ │ │ ├── discover.ml │ │ │ │ │ └── dune │ │ │ │ ├── dune │ │ │ │ ├── nx_backend.ml │ │ │ │ ├── nx_c_binary.c │ │ │ │ ├── nx_c_cast.c │ │ │ │ ├── nx_c_cholesky.c │ │ │ │ ├── nx_c_eig.c │ │ │ │ ├── nx_c_index.c │ │ │ │ ├── nx_c_matmul.c │ │ │ │ ├── nx_c_memory.c │ │ │ │ ├── nx_c_qr.c │ │ │ │ ├── nx_c_random.c │ │ │ │ ├── nx_c_reduce.c │ │ │ │ ├── nx_c_scan.c │ │ │ │ ├── nx_c_shape.c │ │ │ │ ├── nx_c_shared.h │ │ │ │ ├── nx_c_solve.c │ │ │ │ ├── nx_c_sort.c │ │ │ │ ├── nx_c_svd.c │ │ │ │ ├── nx_c_ternary.c │ │ │ │ ├── nx_c_unary.c │ │ │ │ └── nx_c_window.c │ │ │ ├── buffer/ │ │ │ │ ├── dune │ │ │ │ ├── nx_buffer.ml │ │ │ │ ├── nx_buffer.mli │ │ │ │ ├── nx_buffer_stubs.c │ │ │ │ ├── nx_buffer_stubs.h │ │ │ │ ├── nx_buffer_stubs.js │ │ │ │ └── test/ │ │ │ │ ├── dune │ │ │ │ └── test_nx_buffer.ml │ │ │ ├── core/ │ │ │ │ ├── backend_intf.ml │ │ │ │ ├── dtype.ml │ │ │ │ ├── dtype.mli │ │ │ │ ├── dune │ │ │ │ ├── frontend.ml │ │ │ │ ├── nx_core.ml │ │ │ │ ├── nx_core.mli │ │ │ │ ├── rng.ml │ │ │ │ ├── rng.mli │ │ │ │ ├── shape.ml │ │ │ │ ├── shape.mli │ │ │ │ ├── view.ml │ │ │ │ └── view.mli │ │ │ ├── dune │ │ │ ├── effect/ │ │ │ │ ├── dune │ │ │ │ └── nx_effect.ml │ │ │ ├── io/ │ │ │ │ ├── dune │ │ │ │ ├── error.ml │ │ │ │ ├── npy.ml │ │ │ │ ├── nx_io.ml │ │ │ │ ├── nx_io.mli │ │ │ │ ├── nx_npy.ml │ │ │ │ ├── nx_safetensors.ml │ │ │ │ ├── nx_txt.ml │ │ │ │ ├── packed_nx.ml │ │ │ │ └── safetensors.ml │ │ │ ├── nx.ml │ │ │ ├── nx.mli │ │ │ └── prelude.ml │ │ ├── test/ │ │ │ ├── dune │ │ │ ├── failing/ │ │ │ │ ├── bug_blit_overlapping.ml │ │ │ │ └── dune │ │ │ ├── fixtures/ │ │ │ │ ├── bf16_bit_exact.safetensors │ │ │ │ ├── f16_bit_exact.safetensors │ │ │ │ └── generate.py │ │ │ ├── props/ │ │ │ │ ├── dune │ │ │ │ ├── test_nx_props.ml │ │ │ │ └── test_nx_props_support.ml │ │ │ ├── test_nx_basics.ml │ │ │ ├── test_nx_extended_dtypes.ml │ │ │ ├── test_nx_fft.ml │ │ │ ├── test_nx_indexing.ml │ │ │ ├── test_nx_io.ml │ │ │ ├── test_nx_linalg.ml │ │ │ ├── test_nx_manipulation.ml │ │ │ ├── test_nx_ops.ml │ │ │ ├── test_nx_rng.ml │ │ │ ├── test_nx_sanity.ml │ │ │ ├── test_nx_sorting.ml │ │ │ └── test_nx_support.ml │ │ ├── top/ │ │ │ ├── dune │ │ │ └── nx_top.ml │ │ └── vendor/ │ │ ├── camlzip/ │ │ │ ├── LICENSE │ │ │ ├── config/ │ │ │ │ ├── discover.ml │ │ │ │ └── dune │ │ │ ├── dune │ │ │ ├── gzip.ml │ │ │ ├── gzip.mli │ │ │ ├── zip.ml │ │ │ ├── zip.mli │ │ │ ├── zlib.ml │ │ │ ├── zlib.mli │ │ │ └── zlibstubs.c │ │ ├── dune │ │ ├── ocaml-pocketfft/ │ │ │ ├── config/ │ │ │ │ ├── discover.ml │ │ │ │ └── dune │ │ │ ├── dune │ │ │ ├── pocketfft/ │ │ │ │ ├── LICENSE │ │ │ │ └── pocketfft_hdronly.h │ │ │ ├── pocketfft.ml │ │ │ └── pocketfft_stubs.cpp │ │ ├── stb_image/ │ │ │ ├── dune │ │ │ ├── ml_stb_image.c │ │ │ ├── stb_image.h │ │ │ ├── stb_image.ml │ │ │ └── stb_image.mli │ │ └── stb_image_write/ │ │ ├── dune │ │ ├── ml_stb_image_write.c │ │ ├── stb_image_write.h │ │ ├── stb_image_write.ml │ │ └── stb_image_write.mli │ ├── nx-oxcaml/ │ │ ├── .ocamlformat │ │ ├── AGENTS.md │ │ ├── README.md │ │ ├── bench/ │ │ │ ├── README.md │ │ │ ├── bench_nx_c.ml │ │ │ ├── bench_nx_common.ml │ │ │ ├── bench_nx_oxcaml.ml │ │ │ └── dune │ │ ├── dune-project │ │ ├── dune-workspace │ │ ├── lib/ │ │ │ ├── binary_ops/ │ │ │ │ ├── op_add.ml │ │ │ │ ├── op_atan2.ml │ │ │ │ ├── op_fdiv.ml │ │ │ │ ├── op_idiv.ml │ │ │ │ ├── op_max.ml │ │ │ │ ├── op_min.ml │ │ │ │ ├── op_mod.ml │ │ │ │ ├── op_mul.ml │ │ │ │ ├── op_pow.ml │ │ │ │ └── op_sub.ml │ │ │ ├── comparison_ops/ │ │ │ │ ├── op_cmpeq.ml │ │ │ │ ├── op_cmple.ml │ │ │ │ ├── op_cmplt.ml │ │ │ │ └── op_cmpne.ml │ │ │ ├── dune │ │ │ ├── import.ml │ │ │ ├── logical_ops/ │ │ │ │ ├── op_and.ml │ │ │ │ ├── op_or.ml │ │ │ │ └── op_xor.ml │ │ │ ├── nx_backend.ml │ │ │ ├── nx_oxcaml_stubs.c │ │ │ ├── op_argmax.ml │ │ │ ├── op_associative_scan.ml │ │ │ ├── op_cast.ml │ │ │ ├── op_cat.ml │ │ │ ├── op_fold.ml │ │ │ ├── op_gather.ml │ │ │ ├── op_matmul.ml │ │ │ ├── op_pad.ml │ │ │ ├── op_scatter.ml │ │ │ ├── op_sort.ml │ │ │ ├── op_threefry.ml │ │ │ ├── op_unfold.ml │ │ │ ├── parallel.ml │ │ │ ├── reduce_ops.ml │ │ │ ├── simd_neon.ml │ │ │ ├── simd_sse.ml │ │ │ ├── simd_stubs.c │ │ │ ├── ternary_ops/ │ │ │ │ └── op_where.ml │ │ │ └── unary_ops/ │ │ │ ├── op_abs.ml │ │ │ ├── op_acos.ml │ │ │ ├── op_asin.ml │ │ │ ├── op_atan.ml │ │ │ ├── op_ceil.ml │ │ │ ├── op_cos.ml │ │ │ ├── op_cosh.ml │ │ │ ├── op_erf.ml │ │ │ ├── op_exp.ml │ │ │ ├── op_floor.ml │ │ │ ├── op_log.ml │ │ │ ├── op_neg.ml │ │ │ ├── op_recip.ml │ │ │ ├── op_round.ml │ │ │ ├── op_sign.ml │ │ │ ├── op_sin.ml │ │ │ ├── op_sinh.ml │ │ │ ├── op_sqrt.ml │ │ │ ├── op_tan.ml │ │ │ ├── op_tanh.ml │ │ │ └── op_trunc.ml │ │ ├── nx-oxcaml.opam │ │ ├── test/ │ │ │ ├── dune │ │ │ └── test_nx_oxcaml.ml │ │ └── vendor/ │ │ └── dune │ ├── quill/ │ │ ├── README.md │ │ ├── bin/ │ │ │ ├── dune │ │ │ └── main.ml │ │ ├── doc/ │ │ │ ├── 01-getting-started.md │ │ │ ├── 02-notebook-format.md │ │ │ ├── 03-execution-modes.md │ │ │ ├── dune │ │ │ └── index.md │ │ ├── examples/ │ │ │ ├── hello.md │ │ │ └── mnist.md │ │ ├── lib/ │ │ │ ├── quill/ │ │ │ │ ├── cell.ml │ │ │ │ ├── cell.mli │ │ │ │ ├── doc.ml │ │ │ │ ├── doc.mli │ │ │ │ ├── dune │ │ │ │ ├── eval.ml │ │ │ │ ├── eval.mli │ │ │ │ ├── kernel.ml │ │ │ │ ├── kernel.mli │ │ │ │ ├── quill.ml │ │ │ │ ├── quill.mli │ │ │ │ ├── session.ml │ │ │ │ └── session.mli │ │ │ ├── quill-book/ │ │ │ │ ├── build.ml │ │ │ │ ├── build.mli │ │ │ │ ├── dune │ │ │ │ ├── quill_book.ml │ │ │ │ ├── quill_book.mli │ │ │ │ ├── render.ml │ │ │ │ ├── render.mli │ │ │ │ └── theme.ml │ │ │ ├── quill-markdown/ │ │ │ │ ├── dune │ │ │ │ ├── edit.ml │ │ │ │ ├── edit.mli │ │ │ │ ├── quill_markdown.ml │ │ │ │ └── quill_markdown.mli │ │ │ ├── quill-project/ │ │ │ │ ├── dune │ │ │ │ ├── quill_project.ml │ │ │ │ └── quill_project.mli │ │ │ ├── quill-server/ │ │ │ │ ├── dune │ │ │ │ ├── frontend/ │ │ │ │ │ ├── .gitignore │ │ │ │ │ ├── css/ │ │ │ │ │ │ └── notebook.css │ │ │ │ │ ├── dist/ │ │ │ │ │ │ ├── app.css │ │ │ │ │ │ └── app.js │ │ │ │ │ ├── dune │ │ │ │ │ ├── esbuild.config.mjs │ │ │ │ │ ├── index.html │ │ │ │ │ ├── package.json │ │ │ │ │ └── src/ │ │ │ │ │ ├── app.js │ │ │ │ │ ├── cell.js │ │ │ │ │ ├── editor.js │ │ │ │ │ ├── math.js │ │ │ │ │ ├── notebook.js │ │ │ │ │ ├── output.js │ │ │ │ │ ├── shortcuts.js │ │ │ │ │ ├── store.js │ │ │ │ │ └── ws.js │ │ │ │ ├── httpd.ml │ │ │ │ ├── httpd.mli │ │ │ │ ├── protocol.ml │ │ │ │ ├── protocol.mli │ │ │ │ ├── quill_server.ml │ │ │ │ ├── quill_server.mli │ │ │ │ └── support/ │ │ │ │ └── gen_assets.ml │ │ │ ├── quill-top/ │ │ │ │ ├── dune │ │ │ │ ├── quill_top.ml │ │ │ │ └── quill_top.mli │ │ │ └── quill-tui/ │ │ │ ├── dune │ │ │ ├── quill_tui.ml │ │ │ └── quill_tui.mli │ │ └── test/ │ │ ├── dune │ │ ├── test_cell.ml │ │ ├── test_doc.ml │ │ ├── test_markdown.ml │ │ └── test_session.ml │ ├── rune/ │ │ ├── README.md │ │ ├── bench/ │ │ │ ├── README.md │ │ │ ├── bench_grad_pytorch.py │ │ │ ├── bench_grad_rune.ml │ │ │ ├── dune │ │ │ └── rune_grad.thumper │ │ ├── doc/ │ │ │ ├── 01-getting-started.md │ │ │ ├── 02-transformations.md │ │ │ ├── 03-how-it-works.md │ │ │ ├── 04-jax-comparison.md │ │ │ ├── dune │ │ │ └── index.md │ │ ├── examples/ │ │ │ ├── 01-mlp/ │ │ │ │ ├── README.md │ │ │ │ ├── dune │ │ │ │ └── main.ml │ │ │ └── xx-higher-derivative/ │ │ │ ├── README.md │ │ │ ├── dune │ │ │ └── main.ml │ │ ├── lib/ │ │ │ ├── autodiff.ml │ │ │ ├── custom_diff.ml │ │ │ ├── debug.ml │ │ │ ├── dune │ │ │ ├── finite_diff.ml │ │ │ ├── gradcheck.ml │ │ │ ├── jacobian.ml │ │ │ ├── jit.ml │ │ │ ├── jit.mli │ │ │ ├── jvp.ml │ │ │ ├── rune.ml │ │ │ ├── rune.mli │ │ │ ├── vjp.ml │ │ │ └── vmap.ml │ │ └── test/ │ │ ├── dune │ │ ├── golden/ │ │ │ ├── jit_grad/ │ │ │ │ ├── dune │ │ │ │ ├── generate_actual.ml │ │ │ │ ├── generate_expected.py │ │ │ │ ├── grad_cube.expected │ │ │ │ ├── grad_polynomial.expected │ │ │ │ ├── grad_sin.expected │ │ │ │ ├── grad_square.expected │ │ │ │ └── grad_sum.expected │ │ │ └── jit_trace/ │ │ │ ├── add_const.expected │ │ │ ├── chain.expected │ │ │ ├── dune │ │ │ ├── generate_actual.ml │ │ │ ├── generate_expected.py │ │ │ ├── mul_self.expected │ │ │ └── sum.expected │ │ ├── support/ │ │ │ ├── dune │ │ │ └── test_rune_support.ml │ │ ├── test_custom_diff.ml │ │ ├── test_gradcheck.ml │ │ ├── test_jacobian.ml │ │ ├── test_jit.ml │ │ ├── test_jit_grad.ml │ │ ├── test_jit_vmap.ml │ │ ├── test_jvp.ml │ │ ├── test_vjp.ml │ │ └── test_vmap.ml │ ├── sowilo/ │ │ ├── README.md │ │ ├── bench/ │ │ │ ├── README.md │ │ │ ├── bench_sowilo.ml │ │ │ ├── bench_sowilo.py │ │ │ ├── dune │ │ │ ├── scripts/ │ │ │ │ └── generate_fixtures.py │ │ │ └── sowilo.thumper │ │ ├── doc/ │ │ │ ├── 01-getting-started.md │ │ │ ├── 02-operations.md │ │ │ ├── 03-pipelines.md │ │ │ ├── 04-opencv-comparison.md │ │ │ ├── dune │ │ │ └── index.md │ │ ├── examples/ │ │ │ ├── 01-grayscale/ │ │ │ │ ├── README.md │ │ │ │ ├── dune │ │ │ │ └── main.ml │ │ │ ├── 02-gaussian-blur/ │ │ │ │ ├── README.md │ │ │ │ ├── dune │ │ │ │ └── main.ml │ │ │ ├── 03-median-blur/ │ │ │ │ ├── README.md │ │ │ │ ├── dune │ │ │ │ └── main.ml │ │ │ ├── 04-threshold/ │ │ │ │ ├── README.md │ │ │ │ ├── dune │ │ │ │ └── main.ml │ │ │ ├── 05-sobel/ │ │ │ │ ├── README.md │ │ │ │ ├── dune │ │ │ │ └── main.ml │ │ │ ├── 06-canny/ │ │ │ │ ├── README.md │ │ │ │ ├── dune │ │ │ │ └── main.ml │ │ │ └── 07-morphology/ │ │ │ ├── README.md │ │ │ ├── dune │ │ │ └── main.ml │ │ ├── lib/ │ │ │ ├── color.ml │ │ │ ├── dune │ │ │ ├── edge.ml │ │ │ ├── filter.ml │ │ │ ├── helpers.ml │ │ │ ├── morphology.ml │ │ │ ├── sowilo.ml │ │ │ ├── sowilo.mli │ │ │ └── transform.ml │ │ └── test/ │ │ ├── dune │ │ └── test_sowilo.ml │ ├── talon/ │ │ ├── README.md │ │ ├── bench/ │ │ │ ├── README.md │ │ │ ├── bench_talon.ml │ │ │ ├── bench_talon.py │ │ │ ├── data/ │ │ │ │ ├── customers.csv │ │ │ │ └── transactions.csv │ │ │ ├── dune │ │ │ ├── scripts/ │ │ │ │ └── generate_fixtures.py │ │ │ └── talon.thumper │ │ ├── doc/ │ │ │ ├── 01-getting-started.md │ │ │ ├── 02-row-operations.md │ │ │ ├── 03-pandas-comparison.md │ │ │ ├── dune │ │ │ └── index.md │ │ ├── examples/ │ │ │ ├── 01-quickstart/ │ │ │ │ ├── README.md │ │ │ │ ├── dune │ │ │ │ └── main.ml │ │ │ ├── 02-wide-features/ │ │ │ │ ├── README.md │ │ │ │ ├── dune │ │ │ │ └── main.ml │ │ │ ├── 03-selectors/ │ │ │ │ ├── README.md │ │ │ │ ├── dune │ │ │ │ └── main.ml │ │ │ ├── 04-row-reduce/ │ │ │ │ ├── README.md │ │ │ │ ├── dune │ │ │ │ └── main.ml │ │ │ └── 05-sorting-and-grouping/ │ │ │ ├── README.md │ │ │ ├── dune │ │ │ └── main.ml │ │ ├── lib/ │ │ │ ├── col.ml │ │ │ ├── csv/ │ │ │ │ ├── csv_io.ml │ │ │ │ ├── dune │ │ │ │ ├── talon_csv.ml │ │ │ │ └── talon_csv.mli │ │ │ ├── dune │ │ │ ├── talon.ml │ │ │ └── talon.mli │ │ └── test/ │ │ ├── dune │ │ ├── test_talon.ml │ │ └── test_talon_csv.ml │ ├── tolk/ │ │ ├── .gitignore │ │ ├── .ocamlformat │ │ ├── LICENSE-tinygrad │ │ ├── README.md │ │ ├── doc/ │ │ │ ├── dune │ │ │ └── index.md │ │ ├── lib/ │ │ │ ├── codegen/ │ │ │ │ ├── codegen.ml │ │ │ │ ├── codegen.mli │ │ │ │ ├── codegen_lower.ml │ │ │ │ ├── codegen_lower.mli │ │ │ │ ├── gpudims.ml │ │ │ │ ├── gpudims.mli │ │ │ │ ├── late/ │ │ │ │ │ ├── devectorizer.ml │ │ │ │ │ ├── devectorizer.mli │ │ │ │ │ ├── expander.ml │ │ │ │ │ ├── expander.mli │ │ │ │ │ ├── images.ml │ │ │ │ │ ├── images.mli │ │ │ │ │ ├── linearizer.ml │ │ │ │ │ └── linearizer.mli │ │ │ │ ├── opt/ │ │ │ │ │ ├── heuristic.ml │ │ │ │ │ ├── heuristic.mli │ │ │ │ │ ├── postrange.ml │ │ │ │ │ ├── postrange.mli │ │ │ │ │ ├── search.ml │ │ │ │ │ ├── search.mli │ │ │ │ │ ├── tc.ml │ │ │ │ │ └── tc.mli │ │ │ │ ├── simplify.ml │ │ │ │ └── simplify.mli │ │ │ ├── compiler.ml │ │ │ ├── compiler.mli │ │ │ ├── device.ml │ │ │ ├── device.mli │ │ │ ├── diskcache.ml │ │ │ ├── diskcache.mli │ │ │ ├── dune │ │ │ ├── engine/ │ │ │ │ ├── allocations.ml │ │ │ │ ├── allocations.mli │ │ │ │ ├── jit.ml │ │ │ │ ├── jit.mli │ │ │ │ ├── memory.ml │ │ │ │ ├── memory.mli │ │ │ │ ├── realize.ml │ │ │ │ ├── realize.mli │ │ │ │ └── schedule.ml │ │ │ ├── gpu_target.ml │ │ │ ├── gpu_target.mli │ │ │ ├── helpers.ml │ │ │ ├── ir/ │ │ │ │ ├── axis_kind.ml │ │ │ │ ├── axis_kind.mli │ │ │ │ ├── const.ml │ │ │ │ ├── const.mli │ │ │ │ ├── decomposition.ml │ │ │ │ ├── decomposition.mli │ │ │ │ ├── divandmod.ml │ │ │ │ ├── divandmod.mli │ │ │ │ ├── dtype.ml │ │ │ │ ├── dtype.mli │ │ │ │ ├── dune │ │ │ │ ├── hashcons.ml │ │ │ │ ├── hashcons.mli │ │ │ │ ├── kernel.ml │ │ │ │ ├── kernel.mli │ │ │ │ ├── op.ml │ │ │ │ ├── op.mli │ │ │ │ ├── program.ml │ │ │ │ ├── program.mli │ │ │ │ ├── shape.ml │ │ │ │ ├── shape.mli │ │ │ │ ├── special_dim.ml │ │ │ │ ├── special_dim.mli │ │ │ │ ├── symbolic.ml │ │ │ │ ├── symbolic.mli │ │ │ │ ├── tensor.ml │ │ │ │ ├── tensor.mli │ │ │ │ ├── tolk_ir.ml │ │ │ │ └── tolk_ir.mli │ │ │ ├── program_spec.ml │ │ │ ├── program_spec.mli │ │ │ ├── renderer/ │ │ │ │ ├── cstyle.ml │ │ │ │ └── cstyle.mli │ │ │ ├── renderer.ml │ │ │ ├── renderer.mli │ │ │ ├── runtime/ │ │ │ │ ├── cpu/ │ │ │ │ │ ├── compiler_cpu.ml │ │ │ │ │ ├── compiler_cpu.mli │ │ │ │ │ ├── dune │ │ │ │ │ ├── elf_cpu_loader.ml │ │ │ │ │ ├── elf_cpu_loader.mli │ │ │ │ │ ├── tolk_cpu.ml │ │ │ │ │ ├── tolk_cpu.mli │ │ │ │ │ └── tolk_cpu_stubs.c │ │ │ │ ├── metal/ │ │ │ │ │ ├── dune │ │ │ │ │ ├── tolk_metal.ml │ │ │ │ │ ├── tolk_metal.mli │ │ │ │ │ └── tolk_metal_stubs.c │ │ │ │ └── support/ │ │ │ │ ├── elf.ml │ │ │ │ ├── elf.mli │ │ │ │ ├── tlsf.ml │ │ │ │ └── tlsf.mli │ │ │ └── schedule/ │ │ │ ├── allreduce.ml │ │ │ ├── allreduce.mli │ │ │ ├── indexing.ml │ │ │ ├── indexing.mli │ │ │ ├── multi.ml │ │ │ ├── multi.mli │ │ │ ├── rangeify.ml │ │ │ └── rangeify.mli │ │ └── test/ │ │ ├── golden/ │ │ │ ├── codegen/ │ │ │ │ ├── clang_dot_product.expected │ │ │ │ ├── clang_elementwise_add.expected │ │ │ │ ├── clang_elementwise_cast_f16.expected │ │ │ │ ├── clang_elementwise_int32.expected │ │ │ │ ├── clang_elementwise_sqrt.expected │ │ │ │ ├── clang_elementwise_where.expected │ │ │ │ ├── clang_gated_store.expected │ │ │ │ ├── clang_max_reduce.expected │ │ │ │ ├── clang_multi_output.expected │ │ │ │ ├── clang_no_optimize.expected │ │ │ │ ├── clang_parallel_reduce.expected │ │ │ │ ├── clang_reduce_rows.expected │ │ │ │ ├── clang_sum_reduce.expected │ │ │ │ ├── cuda_dot_product.expected │ │ │ │ ├── cuda_elementwise_2d.expected │ │ │ │ ├── cuda_elementwise_add.expected │ │ │ │ ├── cuda_elementwise_cast_f16.expected │ │ │ │ ├── cuda_elementwise_int32.expected │ │ │ │ ├── cuda_elementwise_sqrt.expected │ │ │ │ ├── cuda_elementwise_where.expected │ │ │ │ ├── cuda_gated_store.expected │ │ │ │ ├── cuda_matmul_small.expected │ │ │ │ ├── cuda_max_reduce.expected │ │ │ │ ├── cuda_multi_output.expected │ │ │ │ ├── cuda_no_optimize.expected │ │ │ │ ├── cuda_parallel_reduce.expected │ │ │ │ ├── cuda_reduce_rows.expected │ │ │ │ ├── cuda_sum_reduce.expected │ │ │ │ ├── dune │ │ │ │ ├── generate_actual.ml │ │ │ │ ├── generate_expected.py │ │ │ │ ├── metal_dot_product.expected │ │ │ │ ├── metal_elementwise_2d.expected │ │ │ │ ├── metal_elementwise_add.expected │ │ │ │ ├── metal_elementwise_cast_f16.expected │ │ │ │ ├── metal_elementwise_int32.expected │ │ │ │ ├── metal_elementwise_sqrt.expected │ │ │ │ ├── metal_elementwise_where.expected │ │ │ │ ├── metal_gated_store.expected │ │ │ │ ├── metal_matmul_small.expected │ │ │ │ ├── metal_max_reduce.expected │ │ │ │ ├── metal_multi_output.expected │ │ │ │ ├── metal_no_optimize.expected │ │ │ │ ├── metal_parallel_reduce.expected │ │ │ │ ├── metal_reduce_rows.expected │ │ │ │ ├── metal_sum_reduce.expected │ │ │ │ ├── opencl_dot_product.expected │ │ │ │ ├── opencl_elementwise_2d.expected │ │ │ │ ├── opencl_elementwise_add.expected │ │ │ │ ├── opencl_elementwise_cast_f16.expected │ │ │ │ ├── opencl_elementwise_int32.expected │ │ │ │ ├── opencl_elementwise_sqrt.expected │ │ │ │ ├── opencl_elementwise_where.expected │ │ │ │ ├── opencl_gated_store.expected │ │ │ │ ├── opencl_matmul_small.expected │ │ │ │ ├── opencl_max_reduce.expected │ │ │ │ ├── opencl_multi_output.expected │ │ │ │ ├── opencl_no_optimize.expected │ │ │ │ ├── opencl_parallel_reduce.expected │ │ │ │ ├── opencl_reduce_rows.expected │ │ │ │ └── opencl_sum_reduce.expected │ │ │ ├── cstyle/ │ │ │ │ ├── clang_bitcast_f32_to_i32.expected │ │ │ │ ├── clang_cast_f16_to_f32.expected │ │ │ │ ├── clang_conditional.expected │ │ │ │ ├── clang_const_inf_nan.expected │ │ │ │ ├── clang_gated_load.expected │ │ │ │ ├── clang_loop.expected │ │ │ │ ├── clang_multi_param.expected │ │ │ │ ├── clang_nested_loops.expected │ │ │ │ ├── clang_simple_add_f32.expected │ │ │ │ ├── clang_simple_mul_i32.expected │ │ │ │ ├── clang_unary_sqrt_f16.expected │ │ │ │ ├── clang_unary_sqrt_f32.expected │ │ │ │ ├── clang_vectorize_gep.expected │ │ │ │ ├── clang_where_select.expected │ │ │ │ ├── cuda_bitcast_f32_to_i32.expected │ │ │ │ ├── cuda_cast_f16_to_f32.expected │ │ │ │ ├── cuda_conditional.expected │ │ │ │ ├── cuda_const_inf_nan.expected │ │ │ │ ├── cuda_gated_load.expected │ │ │ │ ├── cuda_loop.expected │ │ │ │ ├── cuda_multi_param.expected │ │ │ │ ├── cuda_nested_loops.expected │ │ │ │ ├── cuda_shared_memory.expected │ │ │ │ ├── cuda_simple_add_f32.expected │ │ │ │ ├── cuda_simple_mul_i32.expected │ │ │ │ ├── cuda_special_dims.expected │ │ │ │ ├── cuda_unary_sqrt_f16.expected │ │ │ │ ├── cuda_unary_sqrt_f32.expected │ │ │ │ ├── cuda_vectorize_gep.expected │ │ │ │ ├── cuda_where_select.expected │ │ │ │ ├── dune │ │ │ │ ├── generate_actual.ml │ │ │ │ ├── generate_expected.py │ │ │ │ ├── metal_bitcast_f32_to_i32.expected │ │ │ │ ├── metal_cast_f16_to_f32.expected │ │ │ │ ├── metal_conditional.expected │ │ │ │ ├── metal_const_inf_nan.expected │ │ │ │ ├── metal_gated_load.expected │ │ │ │ ├── metal_loop.expected │ │ │ │ ├── metal_multi_param.expected │ │ │ │ ├── metal_nested_loops.expected │ │ │ │ ├── metal_shared_memory.expected │ │ │ │ ├── metal_simple_add_f32.expected │ │ │ │ ├── metal_simple_mul_i32.expected │ │ │ │ ├── metal_special_dims.expected │ │ │ │ ├── metal_unary_sqrt_f16.expected │ │ │ │ ├── metal_unary_sqrt_f32.expected │ │ │ │ ├── metal_vectorize_gep.expected │ │ │ │ ├── metal_where_select.expected │ │ │ │ ├── opencl_bitcast_f32_to_i32.expected │ │ │ │ ├── opencl_cast_f16_to_f32.expected │ │ │ │ ├── opencl_conditional.expected │ │ │ │ ├── opencl_const_inf_nan.expected │ │ │ │ ├── opencl_gated_load.expected │ │ │ │ ├── opencl_loop.expected │ │ │ │ ├── opencl_multi_param.expected │ │ │ │ ├── opencl_nested_loops.expected │ │ │ │ ├── opencl_shared_memory.expected │ │ │ │ ├── opencl_simple_add_f32.expected │ │ │ │ ├── opencl_simple_mul_i32.expected │ │ │ │ ├── opencl_special_dims.expected │ │ │ │ ├── opencl_unary_sqrt_f16.expected │ │ │ │ ├── opencl_unary_sqrt_f32.expected │ │ │ │ ├── opencl_vectorize_gep.expected │ │ │ │ └── opencl_where_select.expected │ │ │ ├── debug/ │ │ │ │ ├── dune │ │ │ │ ├── elementwise_add.expected │ │ │ │ ├── elementwise_add_opt.expected │ │ │ │ ├── generate_actual.ml │ │ │ │ └── generate_expected.py │ │ │ └── rangeify/ │ │ │ ├── clang_binop_permute.expected │ │ │ ├── clang_binop_reshape.expected │ │ │ ├── clang_contiguous_add.expected │ │ │ ├── clang_diamond.expected │ │ │ ├── clang_elementwise_3way.expected │ │ │ ├── clang_elementwise_add.expected │ │ │ ├── clang_expand_permute.expected │ │ │ ├── clang_mulacc.expected │ │ │ ├── clang_multistage_reduce.expected │ │ │ ├── clang_permute_through_reshape.expected │ │ │ ├── clang_reduce_permute_binop.expected │ │ │ ├── clang_reduce_reshape_binop.expected │ │ │ ├── clang_reduce_shrink.expected │ │ │ ├── clang_reduce_unary.expected │ │ │ ├── clang_reshape_chain.expected │ │ │ ├── clang_shrink_fuse.expected │ │ │ ├── clang_two_sum.expected │ │ │ ├── cuda_binop_permute.expected │ │ │ ├── cuda_binop_reshape.expected │ │ │ ├── cuda_contiguous_add.expected │ │ │ ├── cuda_diamond.expected │ │ │ ├── cuda_elementwise_3way.expected │ │ │ ├── cuda_elementwise_add.expected │ │ │ ├── cuda_expand_permute.expected │ │ │ ├── cuda_mulacc.expected │ │ │ ├── cuda_multistage_reduce.expected │ │ │ ├── cuda_permute_through_reshape.expected │ │ │ ├── cuda_reduce_permute_binop.expected │ │ │ ├── cuda_reduce_reshape_binop.expected │ │ │ ├── cuda_reduce_shrink.expected │ │ │ ├── cuda_reduce_unary.expected │ │ │ ├── cuda_reshape_chain.expected │ │ │ ├── cuda_shrink_fuse.expected │ │ │ ├── cuda_two_sum.expected │ │ │ ├── dune │ │ │ ├── generate_actual.ml │ │ │ ├── generate_expected.py │ │ │ ├── metal_binop_permute.expected │ │ │ ├── metal_binop_reshape.expected │ │ │ ├── metal_contiguous_add.expected │ │ │ ├── metal_diamond.expected │ │ │ ├── metal_elementwise_3way.expected │ │ │ ├── metal_elementwise_add.expected │ │ │ ├── metal_expand_permute.expected │ │ │ ├── metal_mulacc.expected │ │ │ ├── metal_multistage_reduce.expected │ │ │ ├── metal_permute_through_reshape.expected │ │ │ ├── metal_reduce_permute_binop.expected │ │ │ ├── metal_reduce_reshape_binop.expected │ │ │ ├── metal_reduce_shrink.expected │ │ │ ├── metal_reduce_unary.expected │ │ │ ├── metal_reshape_chain.expected │ │ │ ├── metal_shrink_fuse.expected │ │ │ ├── metal_two_sum.expected │ │ │ ├── opencl_binop_permute.expected │ │ │ ├── opencl_binop_reshape.expected │ │ │ ├── opencl_contiguous_add.expected │ │ │ ├── opencl_diamond.expected │ │ │ ├── opencl_elementwise_3way.expected │ │ │ ├── opencl_elementwise_add.expected │ │ │ ├── opencl_expand_permute.expected │ │ │ ├── opencl_mulacc.expected │ │ │ ├── opencl_multistage_reduce.expected │ │ │ ├── opencl_permute_through_reshape.expected │ │ │ ├── opencl_reduce_permute_binop.expected │ │ │ ├── opencl_reduce_reshape_binop.expected │ │ │ ├── opencl_reduce_shrink.expected │ │ │ ├── opencl_reduce_unary.expected │ │ │ ├── opencl_reshape_chain.expected │ │ │ ├── opencl_shrink_fuse.expected │ │ │ └── opencl_two_sum.expected │ │ └── unit/ │ │ ├── dune │ │ ├── test_codegen_devectorizer.ml │ │ ├── test_codegen_expander.ml │ │ ├── test_codegen_gpudims.ml │ │ ├── test_codegen_heuristic.ml │ │ ├── test_codegen_images.ml │ │ ├── test_codegen_linearizer.ml │ │ ├── test_codegen_postrange.ml │ │ ├── test_codegen_simplify.ml │ │ ├── test_codegen_tc.ml │ │ ├── test_cstyle.ml │ │ ├── test_elf.ml │ │ ├── test_ir_dtype.ml │ │ ├── test_ir_kernel.ml │ │ ├── test_ir_program.ml │ │ ├── test_ir_symbolic.ml │ │ ├── test_ir_tensor.ml │ │ ├── test_program_spec.ml │ │ ├── test_runtime_cpu.ml │ │ ├── test_runtime_metal.ml │ │ ├── test_runtime_search.ml │ │ └── test_schedule_rangeify.ml │ └── vega/ │ ├── README.md │ ├── bench/ │ │ ├── bench_vega.ml │ │ ├── dune │ │ └── vega.thumper │ ├── doc/ │ │ ├── 01-getting-started.md │ │ ├── 02-composing-transforms.md │ │ ├── 03-schedules.md │ │ ├── 04-optax-comparison.md │ │ ├── dune │ │ └── index.md │ ├── examples/ │ │ ├── 01-basic-optimizers/ │ │ │ ├── README.md │ │ │ ├── dune │ │ │ └── main.ml │ │ ├── 02-composing-transforms/ │ │ │ ├── README.md │ │ │ ├── dune │ │ │ └── main.ml │ │ ├── 03-learning-rate-schedules/ │ │ │ ├── README.md │ │ │ ├── dune │ │ │ └── main.ml │ │ └── README.md │ ├── lib/ │ │ ├── dune │ │ ├── schedule.ml │ │ ├── schedule.mli │ │ ├── vega.ml │ │ └── vega.mli │ └── test/ │ ├── dune │ └── test_vega.ml ├── scripts/ │ └── ubench.py └── www/ ├── .gitignore ├── README.md ├── dune ├── dune-project ├── generate/ │ ├── api.ml │ ├── dune │ ├── generate.ml │ └── site.ml ├── process/ │ ├── dream_process.ml │ ├── dune │ ├── generate_api_rules.ml │ ├── index.ml │ └── sidebar.ml ├── site/ │ ├── docs.css │ ├── index.html │ ├── odoc.css │ └── styles.css └── templates/ ├── layout_docs.html ├── layout_docs_lib.html └── main.html