Shadow Caches#

Shadow Cache Density
[Taichi] Starting on arch=arm64
/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/taichi/lang/util.py:370: UserWarning: Taichi matrices/vectors with 16x3 > 32 entries are not suggested. Matrices/vectors will be automatically unrolled at compile-time for performance. So the compilation time could be extremely long if the matrix size is too big. You may use a field to store a large matrix like this, e.g.:
    x = ti.field(ti.f32, (16, 3)).
 See https://docs.taichi-lang.org/docs/field#matrix-size for more details.
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/bin/sphinx-build", line 8, in <module>
    sys.exit(main())
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx/cmd/build.py", line 382, in main
    return make_main(argv)
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx/cmd/build.py", line 217, in make_main
    return make_mode.run_make_mode(argv[1:])
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx/cmd/make_mode.py", line 176, in run_make_mode
    return make.run_generic_build(args[0])
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx/cmd/make_mode.py", line 164, in run_generic_build
    return build_main(args + opts)
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx/cmd/build.py", line 332, in build_main
    app = Sphinx(args.sourcedir, args.confdir, args.outputdir,
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx/application.py", line 292, in __init__
    self._init_builder()
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx/application.py", line 366, in _init_builder
    self.events.emit('builder-inited')
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx/events.py", line 100, in emit
    results.append(listener.handler(self.app, *args))
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx_gallery/gen_gallery.py", line 787, in generate_gallery_rst
    ) = generate_dir_rst(src_dir, target_dir, gallery_conf, seen_backrefs)
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx_gallery/gen_rst.py", line 598, in generate_dir_rst
    results = parallel(
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx_gallery/gen_rst.py", line 599, in <genexpr>
    p_fun(fname, target_dir, src_dir, gallery_conf) for fname in iterator
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx_gallery/gen_rst.py", line 1346, in generate_file_rst
    output_blocks, time_elapsed = execute_script(
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx_gallery/gen_rst.py", line 1164, in execute_script
    execute_code_block(
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx_gallery/gen_rst.py", line 1020, in execute_code_block
    is_last_expr, mem_max = _exec_and_get_memory(
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx_gallery/gen_rst.py", line 848, in _exec_and_get_memory
    mem_body, _ = call_memory(
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx_gallery/gen_rst.py", line 1700, in _sg_call_memory_noop
    return 0.0, func()
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx_gallery/gen_rst.py", line 783, in __call__
    exec(self.code, self.fake_main.__dict__)
  File "/Users/liamrobinson/Documents/maintained-research/mirage/examples/15-attitude-sdc-2025/plot_cache_rb.py", line 41, in <module>
    finfo = ticlip.load_finfo(obj_path)
  File "/Users/liamrobinson/Documents/maintained-wip/taichi-polyclip/ticlip/handler.py", line 38, in load_finfo
    poly = PC3TYPE(0.0)
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/taichi/lang/matrix.py", line 1436, in __call__
    return self._instantiate(entries)
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/taichi/lang/matrix.py", line 1530, in _instantiate
    return self._instantiate_in_python_scope(entries)
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/taichi/lang/matrix.py", line 1517, in _instantiate_in_python_scope
    return Matrix(

  warnings.warn(Fore.YELLOW + Style.BRIGHT + msg + Style.RESET_ALL, warning_type)
/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/taichi/lang/util.py:370: UserWarning: Taichi matrices/vectors with 16x3 > 32 entries are not suggested. Matrices/vectors will be automatically unrolled at compile-time for performance. So the compilation time could be extremely long if the matrix size is too big. You may use a field to store a large matrix like this, e.g.:
    x = ti.field(ti.f32, (16, 3)).
 See https://docs.taichi-lang.org/docs/field#matrix-size for more details.
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/bin/sphinx-build", line 8, in <module>
    sys.exit(main())
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx/cmd/build.py", line 382, in main
    return make_main(argv)
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx/cmd/build.py", line 217, in make_main
    return make_mode.run_make_mode(argv[1:])
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx/cmd/make_mode.py", line 176, in run_make_mode
    return make.run_generic_build(args[0])
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx/cmd/make_mode.py", line 164, in run_generic_build
    return build_main(args + opts)
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx/cmd/build.py", line 332, in build_main
    app = Sphinx(args.sourcedir, args.confdir, args.outputdir,
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx/application.py", line 292, in __init__
    self._init_builder()
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx/application.py", line 366, in _init_builder
    self.events.emit('builder-inited')
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx/events.py", line 100, in emit
    results.append(listener.handler(self.app, *args))
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx_gallery/gen_gallery.py", line 787, in generate_gallery_rst
    ) = generate_dir_rst(src_dir, target_dir, gallery_conf, seen_backrefs)
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx_gallery/gen_rst.py", line 598, in generate_dir_rst
    results = parallel(
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx_gallery/gen_rst.py", line 599, in <genexpr>
    p_fun(fname, target_dir, src_dir, gallery_conf) for fname in iterator
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx_gallery/gen_rst.py", line 1346, in generate_file_rst
    output_blocks, time_elapsed = execute_script(
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx_gallery/gen_rst.py", line 1164, in execute_script
    execute_code_block(
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx_gallery/gen_rst.py", line 1020, in execute_code_block
    is_last_expr, mem_max = _exec_and_get_memory(
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx_gallery/gen_rst.py", line 848, in _exec_and_get_memory
    mem_body, _ = call_memory(
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx_gallery/gen_rst.py", line 1700, in _sg_call_memory_noop
    return 0.0, func()
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx_gallery/gen_rst.py", line 783, in __call__
    exec(self.code, self.fake_main.__dict__)
  File "/Users/liamrobinson/Documents/maintained-research/mirage/examples/15-attitude-sdc-2025/plot_cache_rb.py", line 41, in <module>
    finfo = ticlip.load_finfo(obj_path)
  File "/Users/liamrobinson/Documents/maintained-wip/taichi-polyclip/ticlip/handler.py", line 40, in load_finfo
    FINFOFIELD[i].vi = P3STRUCT(polygon=poly, k=num_verts)
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/taichi/lang/struct.py", line 634, in __call__
    data = dtype(data)
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/taichi/lang/matrix.py", line 1451, in __call__
    return self._instantiate(entries)
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/taichi/lang/matrix.py", line 1530, in _instantiate
    return self._instantiate_in_python_scope(entries)
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/taichi/lang/matrix.py", line 1517, in _instantiate_in_python_scope
    return Matrix(

  warnings.warn(Fore.YELLOW + Style.BRIGHT + msg + Style.RESET_ALL, warning_type)
/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/taichi/lang/util.py:370: UserWarning: Taichi matrices/vectors with 16x3 > 32 entries are not suggested. Matrices/vectors will be automatically unrolled at compile-time for performance. So the compilation time could be extremely long if the matrix size is too big. You may use a field to store a large matrix like this, e.g.:
    x = ti.field(ti.f32, (16, 3)).
 See https://docs.taichi-lang.org/docs/field#matrix-size for more details.
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/bin/sphinx-build", line 8, in <module>
    sys.exit(main())
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx/cmd/build.py", line 382, in main
    return make_main(argv)
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx/cmd/build.py", line 217, in make_main
    return make_mode.run_make_mode(argv[1:])
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx/cmd/make_mode.py", line 176, in run_make_mode
    return make.run_generic_build(args[0])
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx/cmd/make_mode.py", line 164, in run_generic_build
    return build_main(args + opts)
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx/cmd/build.py", line 332, in build_main
    app = Sphinx(args.sourcedir, args.confdir, args.outputdir,
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx/application.py", line 292, in __init__
    self._init_builder()
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx/application.py", line 366, in _init_builder
    self.events.emit('builder-inited')
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx/events.py", line 100, in emit
    results.append(listener.handler(self.app, *args))
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx_gallery/gen_gallery.py", line 787, in generate_gallery_rst
    ) = generate_dir_rst(src_dir, target_dir, gallery_conf, seen_backrefs)
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx_gallery/gen_rst.py", line 598, in generate_dir_rst
    results = parallel(
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx_gallery/gen_rst.py", line 599, in <genexpr>
    p_fun(fname, target_dir, src_dir, gallery_conf) for fname in iterator
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx_gallery/gen_rst.py", line 1346, in generate_file_rst
    output_blocks, time_elapsed = execute_script(
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx_gallery/gen_rst.py", line 1164, in execute_script
    execute_code_block(
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx_gallery/gen_rst.py", line 1020, in execute_code_block
    is_last_expr, mem_max = _exec_and_get_memory(
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx_gallery/gen_rst.py", line 848, in _exec_and_get_memory
    mem_body, _ = call_memory(
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx_gallery/gen_rst.py", line 1700, in _sg_call_memory_noop
    return 0.0, func()
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx_gallery/gen_rst.py", line 783, in __call__
    exec(self.code, self.fake_main.__dict__)
  File "/Users/liamrobinson/Documents/maintained-research/mirage/examples/15-attitude-sdc-2025/plot_cache_rb.py", line 41, in <module>
    finfo = ticlip.load_finfo(obj_path)
  File "/Users/liamrobinson/Documents/maintained-wip/taichi-polyclip/ticlip/handler.py", line 40, in load_finfo
    FINFOFIELD[i].vi = P3STRUCT(polygon=poly, k=num_verts)
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/taichi/lang/struct.py", line 640, in __call__
    struct = self.cast(entries)
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/taichi/lang/struct.py", line 767, in cast
    entries[k] = dtype(struct._Struct__entries[k])
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/taichi/lang/matrix.py", line 1451, in __call__
    return self._instantiate(entries)
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/taichi/lang/matrix.py", line 1530, in _instantiate
    return self._instantiate_in_python_scope(entries)
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/taichi/lang/matrix.py", line 1517, in _instantiate_in_python_scope
    return Matrix(

  warnings.warn(Fore.YELLOW + Style.BRIGHT + msg + Style.RESET_ALL, warning_type)
/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/taichi/lang/util.py:370: UserWarning: Taichi matrices/vectors with 16x3 > 32 entries are not suggested. Matrices/vectors will be automatically unrolled at compile-time for performance. So the compilation time could be extremely long if the matrix size is too big. You may use a field to store a large matrix like this, e.g.:
    x = ti.field(ti.f32, (16, 3)).
 See https://docs.taichi-lang.org/docs/field#matrix-size for more details.
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/bin/sphinx-build", line 8, in <module>
    sys.exit(main())
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx/cmd/build.py", line 382, in main
    return make_main(argv)
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx/cmd/build.py", line 217, in make_main
    return make_mode.run_make_mode(argv[1:])
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx/cmd/make_mode.py", line 176, in run_make_mode
    return make.run_generic_build(args[0])
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx/cmd/make_mode.py", line 164, in run_generic_build
    return build_main(args + opts)
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx/cmd/build.py", line 332, in build_main
    app = Sphinx(args.sourcedir, args.confdir, args.outputdir,
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx/application.py", line 292, in __init__
    self._init_builder()
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx/application.py", line 366, in _init_builder
    self.events.emit('builder-inited')
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx/events.py", line 100, in emit
    results.append(listener.handler(self.app, *args))
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx_gallery/gen_gallery.py", line 787, in generate_gallery_rst
    ) = generate_dir_rst(src_dir, target_dir, gallery_conf, seen_backrefs)
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx_gallery/gen_rst.py", line 598, in generate_dir_rst
    results = parallel(
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx_gallery/gen_rst.py", line 599, in <genexpr>
    p_fun(fname, target_dir, src_dir, gallery_conf) for fname in iterator
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx_gallery/gen_rst.py", line 1346, in generate_file_rst
    output_blocks, time_elapsed = execute_script(
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx_gallery/gen_rst.py", line 1164, in execute_script
    execute_code_block(
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx_gallery/gen_rst.py", line 1020, in execute_code_block
    is_last_expr, mem_max = _exec_and_get_memory(
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx_gallery/gen_rst.py", line 848, in _exec_and_get_memory
    mem_body, _ = call_memory(
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx_gallery/gen_rst.py", line 1700, in _sg_call_memory_noop
    return 0.0, func()
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx_gallery/gen_rst.py", line 783, in __call__
    exec(self.code, self.fake_main.__dict__)
  File "/Users/liamrobinson/Documents/maintained-research/mirage/examples/15-attitude-sdc-2025/plot_cache_rb.py", line 41, in <module>
    finfo = ticlip.load_finfo(obj_path)
  File "/Users/liamrobinson/Documents/maintained-wip/taichi-polyclip/ticlip/handler.py", line 40, in load_finfo
    FINFOFIELD[i].vi = P3STRUCT(polygon=poly, k=num_verts)
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/taichi/lang/util.py", line 351, in wrapped
    return func(*args, **kwargs)
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/taichi/lang/struct.py", line 591, in __getitem__
    entries = {
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/taichi/lang/struct.py", line 592, in <dictcomp>
    k: v._host_access(self._pad_key(indices))[0] if isinstance(v, ScalarField) else v[indices]
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/taichi/lang/util.py", line 351, in wrapped
    return func(*args, **kwargs)
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/taichi/lang/struct.py", line 591, in __getitem__
    entries = {
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/taichi/lang/struct.py", line 592, in <dictcomp>
    k: v._host_access(self._pad_key(indices))[0] if isinstance(v, ScalarField) else v[indices]
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/taichi/lang/util.py", line 351, in wrapped
    return func(*args, **kwargs)
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/taichi/lang/matrix.py", line 1367, in __getitem__
    return Matrix([[_host_access[i * self.m + j] for j in range(self.m)] for i in range(self.n)])

  warnings.warn(Fore.YELLOW + Style.BRIGHT + msg + Style.RESET_ALL, warning_type)
/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/taichi/lang/util.py:370: UserWarning: Taichi matrices/vectors with 16x3 > 32 entries are not suggested. Matrices/vectors will be automatically unrolled at compile-time for performance. So the compilation time could be extremely long if the matrix size is too big. You may use a field to store a large matrix like this, e.g.:
    x = ti.field(ti.f32, (16, 3)).
 See https://docs.taichi-lang.org/docs/field#matrix-size for more details.
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/bin/sphinx-build", line 8, in <module>
    sys.exit(main())
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx/cmd/build.py", line 382, in main
    return make_main(argv)
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx/cmd/build.py", line 217, in make_main
    return make_mode.run_make_mode(argv[1:])
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx/cmd/make_mode.py", line 176, in run_make_mode
    return make.run_generic_build(args[0])
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx/cmd/make_mode.py", line 164, in run_generic_build
    return build_main(args + opts)
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx/cmd/build.py", line 332, in build_main
    app = Sphinx(args.sourcedir, args.confdir, args.outputdir,
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx/application.py", line 292, in __init__
    self._init_builder()
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx/application.py", line 366, in _init_builder
    self.events.emit('builder-inited')
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx/events.py", line 100, in emit
    results.append(listener.handler(self.app, *args))
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx_gallery/gen_gallery.py", line 787, in generate_gallery_rst
    ) = generate_dir_rst(src_dir, target_dir, gallery_conf, seen_backrefs)
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx_gallery/gen_rst.py", line 598, in generate_dir_rst
    results = parallel(
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx_gallery/gen_rst.py", line 599, in <genexpr>
    p_fun(fname, target_dir, src_dir, gallery_conf) for fname in iterator
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx_gallery/gen_rst.py", line 1346, in generate_file_rst
    output_blocks, time_elapsed = execute_script(
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx_gallery/gen_rst.py", line 1164, in execute_script
    execute_code_block(
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx_gallery/gen_rst.py", line 1020, in execute_code_block
    is_last_expr, mem_max = _exec_and_get_memory(
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx_gallery/gen_rst.py", line 848, in _exec_and_get_memory
    mem_body, _ = call_memory(
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx_gallery/gen_rst.py", line 1700, in _sg_call_memory_noop
    return 0.0, func()
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx_gallery/gen_rst.py", line 783, in __call__
    exec(self.code, self.fake_main.__dict__)
  File "/Users/liamrobinson/Documents/maintained-research/mirage/examples/15-attitude-sdc-2025/plot_cache_rb.py", line 41, in <module>
    finfo = ticlip.load_finfo(obj_path)
  File "/Users/liamrobinson/Documents/maintained-wip/taichi-polyclip/ticlip/handler.py", line 41, in load_finfo
    FINFOFIELD[i].fn = POINT3TYPE(*fn.astype(np.float32))
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/taichi/lang/util.py", line 351, in wrapped
    return func(*args, **kwargs)
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/taichi/lang/struct.py", line 591, in __getitem__
    entries = {
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/taichi/lang/struct.py", line 592, in <dictcomp>
    k: v._host_access(self._pad_key(indices))[0] if isinstance(v, ScalarField) else v[indices]
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/taichi/lang/util.py", line 351, in wrapped
    return func(*args, **kwargs)
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/taichi/lang/struct.py", line 591, in __getitem__
    entries = {
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/taichi/lang/struct.py", line 592, in <dictcomp>
    k: v._host_access(self._pad_key(indices))[0] if isinstance(v, ScalarField) else v[indices]
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/taichi/lang/util.py", line 351, in wrapped
    return func(*args, **kwargs)
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/taichi/lang/matrix.py", line 1367, in __getitem__
    return Matrix([[_host_access[i * self.m + j] for j in range(self.m)] for i in range(self.n)])

  warnings.warn(Fore.YELLOW + Style.BRIGHT + msg + Style.RESET_ALL, warning_type)
/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/taichi/lang/util.py:370: UserWarning: Taichi matrices/vectors with 16x3 > 32 entries are not suggested. Matrices/vectors will be automatically unrolled at compile-time for performance. So the compilation time could be extremely long if the matrix size is too big. You may use a field to store a large matrix like this, e.g.:
    x = ti.field(ti.f32, (16, 3)).
 See https://docs.taichi-lang.org/docs/field#matrix-size for more details.
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/bin/sphinx-build", line 8, in <module>
    sys.exit(main())
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx/cmd/build.py", line 382, in main
    return make_main(argv)
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx/cmd/build.py", line 217, in make_main
    return make_mode.run_make_mode(argv[1:])
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx/cmd/make_mode.py", line 176, in run_make_mode
    return make.run_generic_build(args[0])
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx/cmd/make_mode.py", line 164, in run_generic_build
    return build_main(args + opts)
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx/cmd/build.py", line 332, in build_main
    app = Sphinx(args.sourcedir, args.confdir, args.outputdir,
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx/application.py", line 292, in __init__
    self._init_builder()
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx/application.py", line 366, in _init_builder
    self.events.emit('builder-inited')
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx/events.py", line 100, in emit
    results.append(listener.handler(self.app, *args))
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx_gallery/gen_gallery.py", line 787, in generate_gallery_rst
    ) = generate_dir_rst(src_dir, target_dir, gallery_conf, seen_backrefs)
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx_gallery/gen_rst.py", line 598, in generate_dir_rst
    results = parallel(
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx_gallery/gen_rst.py", line 599, in <genexpr>
    p_fun(fname, target_dir, src_dir, gallery_conf) for fname in iterator
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx_gallery/gen_rst.py", line 1346, in generate_file_rst
    output_blocks, time_elapsed = execute_script(
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx_gallery/gen_rst.py", line 1164, in execute_script
    execute_code_block(
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx_gallery/gen_rst.py", line 1020, in execute_code_block
    is_last_expr, mem_max = _exec_and_get_memory(
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx_gallery/gen_rst.py", line 848, in _exec_and_get_memory
    mem_body, _ = call_memory(
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx_gallery/gen_rst.py", line 1700, in _sg_call_memory_noop
    return 0.0, func()
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx_gallery/gen_rst.py", line 783, in __call__
    exec(self.code, self.fake_main.__dict__)
  File "/Users/liamrobinson/Documents/maintained-research/mirage/examples/15-attitude-sdc-2025/plot_cache_rb.py", line 41, in <module>
    finfo = ticlip.load_finfo(obj_path)
  File "/Users/liamrobinson/Documents/maintained-wip/taichi-polyclip/ticlip/handler.py", line 42, in load_finfo
    FINFOFIELD[i].fc = POINT3TYPE(*fc.astype(np.float32))
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/taichi/lang/util.py", line 351, in wrapped
    return func(*args, **kwargs)
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/taichi/lang/struct.py", line 591, in __getitem__
    entries = {
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/taichi/lang/struct.py", line 592, in <dictcomp>
    k: v._host_access(self._pad_key(indices))[0] if isinstance(v, ScalarField) else v[indices]
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/taichi/lang/util.py", line 351, in wrapped
    return func(*args, **kwargs)
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/taichi/lang/struct.py", line 591, in __getitem__
    entries = {
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/taichi/lang/struct.py", line 592, in <dictcomp>
    k: v._host_access(self._pad_key(indices))[0] if isinstance(v, ScalarField) else v[indices]
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/taichi/lang/util.py", line 351, in wrapped
    return func(*args, **kwargs)
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/taichi/lang/matrix.py", line 1367, in __getitem__
    return Matrix([[_host_access[i * self.m + j] for j in range(self.m)] for i in range(self.n)])

  warnings.warn(Fore.YELLOW + Style.BRIGHT + msg + Style.RESET_ALL, warning_type)
/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/taichi/lang/util.py:370: UserWarning: Taichi matrices/vectors with 16x3 > 32 entries are not suggested. Matrices/vectors will be automatically unrolled at compile-time for performance. So the compilation time could be extremely long if the matrix size is too big. You may use a field to store a large matrix like this, e.g.:
    x = ti.field(ti.f32, (16, 3)).
 See https://docs.taichi-lang.org/docs/field#matrix-size for more details.
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/bin/sphinx-build", line 8, in <module>
    sys.exit(main())
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx/cmd/build.py", line 382, in main
    return make_main(argv)
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx/cmd/build.py", line 217, in make_main
    return make_mode.run_make_mode(argv[1:])
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx/cmd/make_mode.py", line 176, in run_make_mode
    return make.run_generic_build(args[0])
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx/cmd/make_mode.py", line 164, in run_generic_build
    return build_main(args + opts)
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx/cmd/build.py", line 332, in build_main
    app = Sphinx(args.sourcedir, args.confdir, args.outputdir,
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx/application.py", line 292, in __init__
    self._init_builder()
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx/application.py", line 366, in _init_builder
    self.events.emit('builder-inited')
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx/events.py", line 100, in emit
    results.append(listener.handler(self.app, *args))
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx_gallery/gen_gallery.py", line 787, in generate_gallery_rst
    ) = generate_dir_rst(src_dir, target_dir, gallery_conf, seen_backrefs)
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx_gallery/gen_rst.py", line 598, in generate_dir_rst
    results = parallel(
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx_gallery/gen_rst.py", line 599, in <genexpr>
    p_fun(fname, target_dir, src_dir, gallery_conf) for fname in iterator
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx_gallery/gen_rst.py", line 1346, in generate_file_rst
    output_blocks, time_elapsed = execute_script(
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx_gallery/gen_rst.py", line 1164, in execute_script
    execute_code_block(
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx_gallery/gen_rst.py", line 1020, in execute_code_block
    is_last_expr, mem_max = _exec_and_get_memory(
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx_gallery/gen_rst.py", line 848, in _exec_and_get_memory
    mem_body, _ = call_memory(
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx_gallery/gen_rst.py", line 1700, in _sg_call_memory_noop
    return 0.0, func()
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/sphinx_gallery/gen_rst.py", line 783, in __call__
    exec(self.code, self.fake_main.__dict__)
  File "/Users/liamrobinson/Documents/maintained-research/mirage/examples/15-attitude-sdc-2025/plot_cache_rb.py", line 41, in <module>
    finfo = ticlip.load_finfo(obj_path)
  File "/Users/liamrobinson/Documents/maintained-wip/taichi-polyclip/ticlip/handler.py", line 43, in load_finfo
    FINFOFIELD[i].a = _poly_area_r3(vi)
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/taichi/lang/util.py", line 351, in wrapped
    return func(*args, **kwargs)
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/taichi/lang/struct.py", line 591, in __getitem__
    entries = {
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/taichi/lang/struct.py", line 592, in <dictcomp>
    k: v._host_access(self._pad_key(indices))[0] if isinstance(v, ScalarField) else v[indices]
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/taichi/lang/util.py", line 351, in wrapped
    return func(*args, **kwargs)
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/taichi/lang/struct.py", line 591, in __getitem__
    entries = {
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/taichi/lang/struct.py", line 592, in <dictcomp>
    k: v._host_access(self._pad_key(indices))[0] if isinstance(v, ScalarField) else v[indices]
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/taichi/lang/util.py", line 351, in wrapped
    return func(*args, **kwargs)
  File "/Users/liamrobinson/Documents/maintained-research/mirage/.venv/lib/python3.11/site-packages/taichi/lang/matrix.py", line 1367, in __getitem__
    return Matrix([[_host_access[i * self.m + j] for j in range(self.m)] for i in range(self.n)])

  warnings.warn(Fore.YELLOW + Style.BRIGHT + msg + Style.RESET_ALL, warning_type)

import sys

sys.path.append('/Users/liamrobinson/Documents/maintained-wip/taichi-polyclip')
import matplotlib.pyplot as plt
import numpy as np
import taichi as ti
import ticlip

import mirage.vis as mrv


def azel_to_ij(naz: int, nel: int, az: float, el: float):
    i = int(np.floor(az / (np.pi * 2) * (naz - 1)))
    j = int(np.floor((el + np.pi / 2) / np.pi * (nel - 1)))
    return i, j


def ij_to_az_el(naz: int, nel: int, i: int, j: int) -> np.ndarray:
    az = i / naz * ti.math.pi * 2
    el = j / nel * ti.math.pi - ti.math.pi / 2
    return np.array((az, el))


ti.init(
    arch=ti.cpu,
    cfg_optimization=False,
    opt_level=1,
    fast_math=False,
    advanced_optimization=False,
)

obj_path = '/Users/liamrobinson/Documents/maintained-research/mirage/examples/15-attitude-sdc-2025/models/star37e-quad.obj'
# obj_path = '/Users/liamrobinson/Documents/maintained-research/mirage/examples/15-attitude-sdc-2025/models/echostar-ii-quad.obj'
naz, nel = 500, 300

finfo = ticlip.load_finfo(obj_path)

cache = ticlip.gen_cache(naz, nel)
cache_np = cache.to_numpy(dtype=np.uint32)

nf = finfo.fn.shape[0]
n = naz * nel * nf**2  # Number of points actually used for the cache
cache = ticlip.gen_cache(naz, nel)

cache_np = cache.to_numpy(dtype=np.uint8).flatten()[:n].reshape(naz, nel, nf, nf)

assert np.allclose(
    0.0, np.trace(cache_np, axis1=-1, axis2=-2).sum()
)  # Make sure that no face is ever shadowing itself

cache_sum = cache_np.sum(axis=2).sum(axis=2)

plt.figure(figsize=(6, 4))

im = ticlip.plot_cache(cache, naz, nel, nf)

plt.title('Shadow Cache Density')
plt.xlabel('Azimuth ($a$) [deg]')
plt.ylabel('Elevation ($h$) [deg]')
plt.colorbar(im, label='Number of Self-Shadowing Faces', cax=mrv.get_cbar_ax())
plt.tight_layout()
plt.show()

Total running time of the script: (0 minutes 20.147 seconds)

Gallery generated by Sphinx-Gallery