How to use Raven/Nx with jupyter-notebook?

Hello everyone,

I’m trying to translate some python tutorials for scientific computing using Raven/Nx with jupyter notebook. I installed raven and jupter-notebook from OCaml Jupyter | An OCaml kernel for Jupyter notebook. The notebook works with base ocaml. However I can’t use any of the installed packages within jupyter or ocaml.

For example the following code doesn’t work

open Nx;

I get an error `Error: Unbound module Nx` But I’ve the package installed.

The ouput of `#list;;` is

# #list;;
angstrom            (version: 0.16.1)
angstrom.async      (version: n/a)
angstrom.lwt-unix   (version: n/a)
angstrom.unix       (version: n/a)
base                (version: v0.17.3)
base.base_internalhash_types (version: v0.17.3)
base.md5            (version: v0.17.3)
base.shadow_stdlib  (version: v0.17.3)
base64              (version: 3.5.2)
base64.rfc2045      (version: 3.5.2)
base_bigstring      (version: v0.17.0)
base_quickcheck     (version: v0.17.0)
base_quickcheck.ppx_quickcheck (version: v0.17.0)
base_quickcheck.ppx_quickcheck.expander (version: v0.17.0)
base_quickcheck.ppx_quickcheck.runtime (version: v0.17.0)
bigarray-compat     (version: 1.1.0)
bigstringaf         (version: 0.10.0)
bin_prot            (version: v0.17.0)
bin_prot.shape      (version: v0.17.0)
brr                 (version: 0.0.8)
brr.ocaml_poke      (version: 0.0.8)
brr.ocaml_poke_ui   (version: 0.0.8)
brr.poke            (version: 0.0.8)
brr.poked           (version: 0.0.8)
bstr                (version: 0.0.4)
bytes               (version: [distributed with OCaml 4.02 or above])
cairo2              (version: 0.6.5)
camlp-streams       (version: n/a)
camlzip             (version: n/a)
capitalization      (version: v0.17.0)
caqti               (version: 2.0.1)
caqti-lwt           (version: 2.0.1)
caqti-lwt.unix      (version: 2.0.1)
caqti.blocking      (version: 2.0.1)
caqti.platform      (version: 2.0.1)
caqti.platform.unix (version: 2.0.1)
cmarkit             (version: 0.4.0)
cmdliner            (version: 2.1.0)
compiler-libs       (version: 5.2.0)
compiler-libs.bytecomp (version: 5.2.0)
compiler-libs.common (version: 5.2.0)
compiler-libs.native-toplevel (version: 5.2.0)
compiler-libs.optcomp (version: 5.2.0)
compiler-libs.toplevel (version: 5.2.0)
core                (version: v0.17.1)
core.base_for_tests (version: v0.17.1)
core.command        (version: v0.17.1)
core.filename_base  (version: v0.17.1)
core.heap_block     (version: v0.17.1)
core.top            (version: v0.17.1)
core.univ_map       (version: v0.17.1)
core.validate       (version: v0.17.1)
cppo                (version: n/a)
crunch              (version: 4.0.0)
cryptokit           (version: 1.21)
csexp               (version: 1.5.2)
cstruct             (version: 6.2.0)
csv                 (version: 2.4)
ctypes              (version: 0.24.0)
ctypes.foreign      (version: 0.24.0)
ctypes.stubs        (version: 0.24.0)
ctypes.top          (version: 0.24.0)
curl                (version: 0.9.2)
curl.lwt            (version: )
digestif            (version: 1.3.0)
digestif.c          (version: 1.3.0)
digestif.ocaml      (version: 1.3.0)
domain-name         (version: 0.5.0)
dream               (version: n/a)
dream-httpaf        (version: n/a)
dream-pure          (version: n/a)
dream.certificate   (version: n/a)
dream.cipher        (version: n/a)
dream.graphiql      (version: n/a)
dream.graphql       (version: n/a)
dream.http          (version: n/a)
dream.server        (version: n/a)
dream.sql           (version: n/a)
dream.unix          (version: n/a)
dune                (version: n/a)
dune-configurator   (version: 3.21.0)
dune-private-libs   (version: n/a)
dune-private-libs.dune-section (version: 3.21.0)
dune-private-libs.meta_parser (version: 3.21.0)
dune-site           (version: 3.21.0)
dune-site.dynlink   (version: 3.21.0)
dune-site.linker    (version: 3.21.0)
dune-site.plugins   (version: 3.21.0)
dune-site.private   (version: 3.21.0)
dune-site.toplevel  (version: 3.21.0)
dune.configurator   (version: 3.21.0)
duration            (version: 0.2.1)
dyn                 (version: 3.21.0)
dynlink             (version: 5.2.0)
eqaf                (version: 0.10)
eqaf.bigstring      (version: 0.10)
eqaf.bytes          (version: 0.10)
faraday             (version: 0.8.2)
faraday-lwt         (version: 0.8.2)
faraday-lwt-unix    (version: 0.8.2)
faraday.async       (version: n/a)
faraday.lwt         (version: n/a)
faraday.lwt-unix    (version: n/a)
fieldslib           (version: v0.17.0)
findlib             (version: 1.9.8)
findlib.dynload     (version: 1.9.8)
findlib.internal    (version: 1.9.8)
findlib.top         (version: 1.9.8)
fmt                 (version: 0.11.0)
fmt.cli             (version: 0.11.0)
fmt.top             (version: 0.11.0)
fmt.tty             (version: 0.11.0)
fs-io               (version: 3.21.0)
gel                 (version: v0.17.0)
gen                 (version: 1.1)
gen_js_api          (version: 1.1.5)
gen_js_api.lib      (version: 1.1.5)
gen_js_api.ppx      (version: 1.1.5)
gluten              (version: 0.5.2)
gluten-lwt          (version: 0.5.2)
gluten-lwt-unix     (version: 0.5.2)
graphql             (version: 0.14.0)
graphql-lwt         (version: 0.14.0)
graphql_parser      (version: 0.14.0)
h2                  (version: 0.12.0)
h2-lwt              (version: 0.12.0)
h2-lwt-unix         (version: 0.12.0)
hmap                (version: 0.8.1)
hpack               (version: 0.12.0)
httpun              (version: 0.1.0)
httpun-lwt          (version: 0.1.0)
httpun-lwt-unix     (version: 0.1.0)
httpun-types        (version: 0.1.0)
httpun-ws           (version: 0.2.0)
hugin               (version: 1.0.0_alpha0)
hugin.usdl          (version: 1.0.0_alpha0)
int_repr            (version: v0.17.0)
integers            (version: n/a)
integers.top        (version: n/a)
ipaddr              (version: 5.6.1)
ipaddr.top          (version: 5.6.1)
ipaddr.unix         (version: 5.6.1)
jane-street-headers (version: v0.17.0)
js_of_ocaml         (version: 6.2.0)
js_of_ocaml-compiler (version: 6.2.0)
js_of_ocaml-compiler.dynlink (version: 6.2.0)
js_of_ocaml-compiler.findlib-support (version: 6.2.0)
js_of_ocaml-compiler.runtime (version: 6.2.0)
js_of_ocaml-compiler.runtime-files (version: 6.2.0)
js_of_ocaml-toplevel (version: 6.2.0)
js_of_ocaml.deriving (version: 6.2.0)
jst-config          (version: v0.17.0)
jupyter             (version: n/a)
jupyter.comm        (version: n/a)
jupyter.notebook    (version: n/a)
kaun                (version: 1.0.0_alpha0)
kaun.datasets       (version: 1.0.0_alpha0)
ke                  (version: 0.6)
lambdasoup          (version: n/a)
logs                (version: 0.10.0)
logs.browser        (version: 0.10.0)
logs.cli            (version: 0.10.0)
logs.fmt            (version: 0.10.0)
logs.lwt            (version: 0.10.0)
logs.threaded       (version: 0.10.0)
logs.top            (version: 0.10.0)
lwt                 (version: 5.9.2)
lwt-dllist          (version: 1.1.0)
lwt.unix            (version: 5.9.2)
lwt_ppx             (version: 5.9.1)
lwt_ssl             (version: 1.2.0)
macaddr             (version: 5.6.1)
macaddr.top         (version: 5.6.1)
magic-mime          (version: 1.3.1)
markup              (version: n/a)
menhir              (version: n/a)
menhirCST           (version: 20260209)
menhirGLR           (version: 20260209)
menhirLib           (version: 20260209)
menhirSdk           (version: 20260209)
mirage-clock        (version: 4.2.0)
mirage-crypto       (version: 1.2.0)
mirage-crypto-rng   (version: 1.2.0)
mirage-crypto-rng-lwt (version: 1.2.0)
mirage-crypto-rng.unix (version: 1.2.0)
mtime               (version: 2.1.0)
mtime.clock         (version: 2.1.0)
mtime.clock.os      (version: 2.1.0)
mtime.top           (version: 2.1.0)
multipart_form      (version: 0.8.0)
multipart_form-lwt  (version: 0.8.0)
num                 (version: 1.7~dev)
num-top             (version: 1.7~dev)
num.core            (version: 1.7~dev)
nx                  (version: 1.0.0_alpha0)
nx-datasets         (version: 1.0.0_alpha0)
nx-text             (version: 1.0.0_alpha0)
nx.c                (version: 1.0.0_alpha0)
nx.core             (version: 1.0.0_alpha0)
nx.io               (version: 1.0.0_alpha0)
nx.io.npy           (version: 1.0.0_alpha0)
nx.io.stb_image     (version: 1.0.0_alpha0)
nx.io.stb_image_write (version: 1.0.0_alpha0)
nx.native           (version: 1.0.0_alpha0)
ocaml-compiler-libs (version: n/a)
ocaml-compiler-libs.bytecomp (version: v0.17.0)
ocaml-compiler-libs.common (version: v0.17.0)
ocaml-compiler-libs.optcomp (version: v0.17.0)
ocaml-compiler-libs.shadow (version: v0.17.0)
ocaml-compiler-libs.toplevel (version: v0.17.0)
ocaml-syntax-shims  (version: n/a)
ocaml_intrinsics_kernel (version: v0.17.1)
ocamlbuild          (version: 0.16.1)
ocamldoc            (version: 5.2.0)
ocplib-endian       (version: n/a)
ocplib-endian.bigstring (version: n/a)
octavius            (version: n/a)
ojs                 (version: 1.1.5)
ordering            (version: 3.21.0)
parsexp             (version: v0.17.0)
pecu                (version: 0.7)
pp                  (version: 2.0.0)
ppx_assert          (version: v0.17.0)
ppx_assert.runtime-lib (version: v0.17.0)
ppx_base            (version: v0.17.0)
ppx_bench           (version: v0.17.0)
ppx_bench.runtime-lib (version: v0.17.0)
ppx_bin_prot        (version: v0.17.0)
ppx_bin_prot.shape-expander (version: v0.17.0)
ppx_cold            (version: v0.17.0)
ppx_compare         (version: v0.17.0)
ppx_compare.expander (version: v0.17.0)
ppx_compare.runtime-lib (version: v0.17.0)
ppx_custom_printf   (version: v0.17.0)
ppx_derivers        (version: n/a)
ppx_deriving        (version: n/a)
ppx_deriving.api    (version: 6.0.3)
ppx_deriving.create (version: 6.0.3)
ppx_deriving.enum   (version: 6.0.3)
ppx_deriving.eq     (version: 6.0.3)
ppx_deriving.fold   (version: 6.0.3)
ppx_deriving.iter   (version: 6.0.3)
ppx_deriving.make   (version: 6.0.3)
ppx_deriving.map    (version: 6.0.3)
ppx_deriving.ord    (version: 6.0.3)
ppx_deriving.runtime (version: 6.0.3)
ppx_deriving.show   (version: 6.0.3)
ppx_deriving.std    (version: 6.0.3)
ppx_deriving_yojson (version: 3.9.1)
ppx_deriving_yojson.runtime (version: 3.9.1)
ppx_diff            (version: n/a)
ppx_diff.diffable   (version: v0.17.0)
ppx_diff.diffable_cinaps (version: v0.17.0)
ppx_diff.ppx_diff   (version: v0.17.0)
ppx_disable_unused_warnings (version: v0.17.0)
ppx_enumerate       (version: v0.17.0)
ppx_enumerate.runtime-lib (version: v0.17.0)
ppx_expect          (version: v0.17.2)
ppx_expect.config   (version: v0.17.2)
ppx_expect.config_types (version: v0.17.2)
ppx_expect.evaluator (version: v0.17.2)
ppx_expect.make_corrected_file (version: v0.17.2)
ppx_expect.runtime  (version: v0.17.2)
ppx_fields_conv     (version: v0.17.0)
ppx_fixed_literal   (version: v0.17.0)
ppx_globalize       (version: v0.17.0)
ppx_hash            (version: v0.17.0)
ppx_hash.expander   (version: v0.17.0)
ppx_hash.runtime-lib (version: v0.17.0)
ppx_here            (version: v0.17.0)
ppx_here.expander   (version: v0.17.0)
ppx_here.runtime-lib (version: v0.17.0)
ppx_ignore_instrumentation (version: v0.17.0)
ppx_inline_test     (version: v0.17.0)
ppx_inline_test.config (version: v0.17.0)
ppx_inline_test.drop (version: v0.17.0)
ppx_inline_test.libname (version: v0.17.0)
ppx_inline_test.runner (version: v0.17.0)
ppx_inline_test.runner.lib (version: v0.17.0)
ppx_inline_test.runtime-lib (version: v0.17.0)
ppx_jane            (version: v0.17.0)
ppx_jane.kernel     (version: v0.17.0)
ppx_js_style        (version: v0.17.0)
ppx_let             (version: v0.17.0)
ppx_let.expander    (version: v0.17.0)
ppx_log             (version: v0.17.0)
ppx_log.kernel      (version: v0.17.0)
ppx_log.syntax      (version: v0.17.0)
ppx_log.types       (version: v0.17.0)
ppx_module_timer    (version: v0.17.0)
ppx_module_timer.runtime (version: v0.17.0)
ppx_optcomp         (version: v0.17.0)
ppx_optional        (version: v0.17.0)
ppx_pipebang        (version: v0.17.0)
ppx_sexp_conv       (version: v0.17.0)
ppx_sexp_conv.expander (version: v0.17.0)
ppx_sexp_conv.runtime-lib (version: v0.17.0)
ppx_sexp_message    (version: v0.17.0)
ppx_sexp_message.expander (version: v0.17.0)
ppx_sexp_value      (version: v0.17.0)
ppx_stable          (version: v0.17.0)
ppx_stable_witness  (version: v0.17.0)
ppx_stable_witness.runtime (version: v0.17.0)
ppx_stable_witness.stable_witness (version: v0.17.0)
ppx_string          (version: v0.17.0)
ppx_string.runtime  (version: v0.17.0)
ppx_string_conv     (version: v0.17.0)
ppx_tydi            (version: v0.17.0)
ppx_typerep_conv    (version: v0.17.0)
ppx_variants_conv   (version: v0.17.0)
ppx_yojson_conv     (version: v0.17.0)
ppx_yojson_conv.expander (version: v0.17.0)
ppx_yojson_conv_lib (version: v0.17.0)
ppxlib              (version: 0.35.0)
ppxlib.__private__  (version: n/a)
ppxlib.__private__.ppx_foo_deriver (version: 0.35.0)
ppxlib.ast          (version: 0.35.0)
ppxlib.astlib       (version: 0.35.0)
ppxlib.metaquot     (version: 0.35.0)
ppxlib.metaquot_lifters (version: 0.35.0)
ppxlib.print_diff   (version: 0.35.0)
ppxlib.runner       (version: 0.35.0)
ppxlib.runner_as_ppx (version: 0.35.0)
ppxlib.stdppx       (version: 0.35.0)
ppxlib.traverse     (version: 0.35.0)
ppxlib.traverse_builtins (version: 0.35.0)
ppxlib_jane         (version: v0.17.0)
prettym             (version: 0.0.4)
psq                 (version: 0.2.1)
ptime               (version: 1.2.0)
ptime.clock         (version: 1.2.0)
ptime.clock.os      (version: 1.2.0)
ptime.top           (version: 1.2.0)
quill               (version: n/a)
quill.api           (version: 1.0.0_alpha0)
quill.editor        (version: 1.0.0_alpha0)
quill.markdown      (version: 1.0.0_alpha0)
quill.server        (version: 1.0.0_alpha0)
quill.top           (version: 1.0.0_alpha0)
quill.top-js        (version: 1.0.0_alpha0)
quill.top-unix      (version: 1.0.0_alpha0)
raven               (version: n/a)
re                  (version: n/a)
re.emacs            (version: n/a)
re.glob             (version: n/a)
re.pcre             (version: n/a)
re.perl             (version: n/a)
re.posix            (version: n/a)
re.str              (version: n/a)
rresult             (version: 0.7.0)
rresult.top         (version: 0.7.0)
rune                (version: 1.0.0_alpha0)
rune.jit            (version: 1.0.0_alpha0)
rune.metal          (version: 1.0.0_alpha0)
runtime_events      (version: 5.2.0)
sedlex              (version: 3.7)
sedlex.ppx          (version: 3.7)
sedlex.utils        (version: 3.7)
seq                 (version: [distributed with OCaml 4.07 or above])
sexplib             (version: v0.17.0)
sexplib.num         (version: v0.17.0)
sexplib.unix        (version: v0.17.0)
sexplib0            (version: v0.17.0)
sowilo              (version: 1.0.0_alpha0)
splittable_random   (version: v0.17.0)
ssl                 (version: 0.7.0)
stdint              (version: 0.7.2)
stdio               (version: v0.17.0)
stdlib              (version: 5.2.0)
stdlib-shims        (version: 0.3.0)
stdune              (version: 3.21.0)
str                 (version: 5.2.0)
stringext           (version: 1.6.0)
threads             (version: 5.2.0)
threads.posix       (version: [internal])
time_now            (version: v0.17.0)
top-closure         (version: 3.21.0)
topkg               (version: 1.1.1)
typerep             (version: v0.17.1)
uchar               (version: distributed with OCaml 4.03 or above)
unix                (version: 5.2.0)
unstrctrd           (version: 0.4)
unstrctrd.parser    (version: 0.4)
uri                 (version: 4.4.0)
uri.services        (version: 4.4.0)
uri.services_full   (version: 4.4.0)
uucp                (version: 17.0.0)
uuidm               (version: 0.9.10)
uutf                (version: 1.0.4)
variantslib         (version: v0.17.0)
vdom                (version: 0.3)
vdom.base           (version: 0.3)
wasm_of_ocaml-compiler (version: 6.2.0)
yojson              (version: 3.0.0)
zarith              (version: 1.14)
zarith.top          (version: 1.13)
zip                 (version: 1.14)
zmq                 (version: 5.2.2-15-g7cca40d)
zmq-lwt             (version: 5.2.2-15-g7cca40d)
zmq.deferred        (version: 5.2.2-15-g7cca40d)

Any help would be appreciated.

That link has instructions on setting up Topfind, so probably you need to #require “nx”;;before you can use its modules.

Thank you for your reply.

I did as you suggested, but I still get an error

#require "nx";;
File "[28]", line 1:
Error: Reference to undefined compilation unit `Stdlib__Complex'
Hint: This means that the interface of a module is loaded, but its implementation is not.
      Did you mean to load a compiled implementation of the module 
      using #load or by passing it as an argument to the toplevel?

using #load doesn’t work either.

I’ve seen this error before with Digestif, where there are digestif.c and digestif.ocaml packages, though I can’t replicate the error now. What I had to do was require one of those packages instead. GitHub - mirage/digestif: Simple hash algorithms in OCaml has a note about this:

Digestif uses a trick about linking and let the end-user to choose which implementation he wants to use. We provide 2 implementations:

  • C implementation with digestif.c

  • OCaml implementation with digestif.ocaml

Probably you need nx.c or nx.native.