• Parallel ã-WAM: JavaScript Workers as CPU Backend (Re: Parallel ã-WAM:

    From Mild Shock@3:633/10 to All on Mon Jul 20 19:25:15 2026
    Subject: Parallel ã-WAM: JavaScript Workers as CPU Backend (Re: Parallel ã-WAM: 1.7 Giga Lips on a CPU)

    Hi,

    We recently implemented a parallel ã-WAM on
    a CPU backend and could demonstrate an
    estimated 1.7 Giga Lips. This CPU backend
    was written in Java, uses Java platform
    threads and is meanwhile part of library(edge/
    brainfog). In the following we report first
    porting steps to JavaScript.

    With the adoption of JavaScript workers we
    embrace preemptive multithreading, even
    for a Web Prolog, and depart from Dogelog
    Players cooperative multitasking. The design
    also adopts SharedArrayBuffer to replicate
    the Java heap, that is shared among
    Java platform threads.

    Bye

    See also:

    Parallel ã-WAM: JavaScript Workers as CPU Backend https://medium.com/2989/5ef903e5e785

    Mild Shock schrieb:
    Hi,

    We recently implemented a parallel ã-WAM
    on a GPU backend and could demonstrate an
    estimated 11.4 Giga Lips. In this post we
    report a further experiment, this time
    presenting a parallel ã-WAM on a CPU backend,
    that can lift specialized Prolog, currently
    to 1.7 Giga Lips performance.

    Having an excess number of threads is a
    bad idea. What if we do context switching
    on our own? With this approach we could
    bring down the execution time of 128 Hack
    VMs by 33%. We estimate for the test which
    had 11.4 GLips on the GPU, that we reach
    1.7 GLips on the CPU.

    Bye

    See also:

    Parallel ã-WAM: 1.7 Giga Lips on a CPU
    https://medium.com/2989/8a984e75af44

    --- PyGate Linux v1.5.18
    * Origin: Dragon's Lair, PyGate NNTP<>Fido Gate (3:633/10)
  • From Mild Shock@3:633/10 to All on Sat Jul 25 03:58:43 2026
    Subject: Parallel ã-WAM: An Interleaved Synchronous Emulator (Re: Parallel ã-WAM: JavaScript Workers as CPU Backend)

    Hi,

    The ã-WAM an alternative Prolog VM, for the
    Dogelog Player, got one after the other, a GPU
    backend prototype, and then productive CPU backends.
    So in retrospect we felt the need to not only
    emulate in 100% Prolog the initial single threaded
    ã-WAM, but also its multi threaded successors.

    One central idea is to partition the state into
    slices, that belong to each logical thread. Since
    we adress slices by an offset, we can also use
    these offsets for a parallel simulation. Because
    of varying warp and tilt parameters the output
    usually differs from the CPU backends.

    Bye

    See also:

    Parallel ã-WAM: An Interleaved Synchronous Emulator https://medium.com/2989/0196089e143a

    Mild Shock schrieb:
    Hi,

    We recently implemented a parallel ã-WAM on
    a CPU backend and could demonstrate an
    estimated 1.7 Giga Lips. This CPU backend
    was written in Java, uses Java platform
    threads and is meanwhile part of library(edge/
    brainfog). In the following we report first
    porting steps to JavaScript.

    With the adoption of JavaScript workers we
    embrace preemptive multithreading, even
    for a Web Prolog, and depart from Dogelog
    Players cooperative multitasking. The design
    also adopts SharedArrayBuffer to replicate
    the Java heap, that is shared among
    Java platform threads.

    Bye

    See also:

    Parallel ã-WAM: JavaScript Workers as CPU Backend https://medium.com/2989/5ef903e5e785

    --- PyGate Linux v1.5.19
    * Origin: Dragon's Lair, PyGate NNTP<>Fido Gate (3:633/10)