Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.prolog > #15918

MADV_HAWAII: Aloha from Minimal Terms (Was: MADV_HAWAII: Aloha from the 300ms Abyss)

From Mild Shock <janburse@fastmail.fm>
Newsgroups comp.lang.prolog
Subject MADV_HAWAII: Aloha from Minimal Terms (Was: MADV_HAWAII: Aloha from the 300ms Abyss)
Date 2026-09-14 14:43 +0200
Message-ID <1188q5d$8isq$1@solani.org> (permalink)
References <107cdg8$3ok7g$1@solani.org> <10p44s1$16ps$1@solani.org> <114cv6j$kb0c$1@solani.org> <117v88c$1n4v$1@solani.org>

Show all headers | View raw


Hi,

Kuniakis Automatons, or who ever wrote it and
braught it to SWI-Prolog are pretty cool,
My Dogelog Player currently cannot scale

that high. Here is a SWI-Prolog example:

/* SWI-Prolog 10.1.14-55-g8d24500be */
?- between(1,5,J), N is J*1000000, hydra(N,_X), 
time(term_minimal(_X,_)), fail; true.
% -1 inferences, 0.141 CPU in 0.243 seconds (58% CPU, -7 Lips)
% -1 inferences, 0.203 CPU in 0.193 seconds (105% CPU, -5 Lips)
% -1 inferences, 0.547 CPU in 0.622 seconds (88% CPU, -2 Lips)
% -1 inferences, 0.719 CPU in 0.816 seconds (88% CPU, -1 Lips)
% -1 inferences, 0.375 CPU in 0.485 seconds (77% CPU, -3 Lips)
true.

But why is time not monotonic? Some chaotic
GC effect, especially the array buffers? And what
are the -7 LIPS, a new take on safe AI?

Well I don't go backward with my LIPS, and its a
smooth and tranquille life in Dogelog Player land.
Look how beautiful my boy is:

/* Dogelog Player 2.3.1 for Java */
?- between(300,305,N), hydra(N,_X), time(sys_term_canonical(_X,_)), 
fail; true.
% Zeit 109.402 ms, Benutzer 100 %, Lips 1690 k
% Zeit 105.561 ms, Benutzer 100 %, Lips 1763 k
% Zeit 103.305 ms, Benutzer 100 %, Lips 1813 k
% Zeit 106.643 ms, Benutzer 100 %, Lips 1768 k
% Zeit 106.890 ms, Benutzer 100 %, Lips 1776 k
% Zeit 106.227 ms, Benutzer 100 %, Lips 1798 k
true.

Bye

P.S.: What about using canonical/minimal for the
top-level. I got these two different outcomes:

/* SWI-Prolog 10.1.14-55-g8d24500be */
?- X = f(f(X)).
X = f(f(X)).

/* Dogelog Player 2.3.1 for Java */
?- X = f(f(X)).
X = f(X).

Its not an extremly new feature in Dogelog Player.
Maybe 1-2 years old already?

Mild Shock schrieb:
> Hi,
> 
> Finally unlimited catch/throw arrived in Dogelog
> Player. We do not anymore depend on the Java native
> stack. The handling got a little bit slower, working
> 
> on to get back the same speed. But its pretty robust
> already and takes a 1'000'000 catch/3 without problems.
> Here some testing results:
> 
> /* Dogelog Player 2.3.1 for Java */
> % ?- between(1,3,_), time(test), fail; true.
> % % Zeit 315.037 ms, Benutzer 100 %, Lips 22224 k
> % % Zeit 379.011 ms, Benutzer 100 %, Lips 18473 k
> % % Zeit 207.902 ms, Benutzer 100 %, Lips 33682 k
> % true.
> 
> /* Trealla Prolog 3.9.40 */
> % ?- between(1,3,_), time(test), fail; true.
> % % Execution aborted
> % % CPU elapsed 2.141s, 4_000_323 inferences, 1.869 MLips
> 
> /* Scryer Prolog 0.10.0 */
> % ?- between(1,3,_), time(test), fail; true.
> %    % CPU time: 0.281s, 3_000_059 inferences
> %    % CPU time: 0.281s, 3_000_059 inferences
> %    % CPU time: 0.281s, 3_000_059 inferences
> %    true.
> 
> /* SWI-Prolog 10.1.14 */
> % ?- between(1,3,_), time(test), fail; true.
> % % 3,000,007 inferences, 0.281 CPU in 0.389 seconds
> % % 3,000,007 inferences, 0.062 CPU in 0.064 seconds
> % % 3,000,007 inferences, 0.062 CPU in 0.063 seconds
> % true.
> 
> What is SWI doing in the first run? Does it
> send the throw ball to Hawaii and back?
> 
> Bye
> 
> BTW: This was the test case:
> 
> deep(0,G) :- !, G.
> deep(N,G) :- M is N-1, catch(deep(M,G),foo,true).
> 
> test :- catch(deep(1000000,throw(bar)),_,true).
> 
> Mild Shock schrieb:
>> Hi,
>>
>> Usual question:
>>
>>  > Why implement both pre-emptive threading
>> AND cooperative tasks/engines?
>>
>> I had implemented the ISO proposal in formerly Jekejeke
>> Prolog, you find the ISO proposal here:
>>
>> ISO/IEC DTR 13211–5:2007
>> Prolog multi-threading support
>> https://logtalk.org/plstd/threads.pdf
>>
>> But the ISO proposal doesn't match modern WebGPU APIs,
>> where your logical threads can live remotely in a dedicated GPU
>>
>> in the VRAM there, and where you would have launch
>> parameters that say: Hey please run 4096 compute
>>
>> shaders for me, that have independet thread state. Using
>> cooperative multi-tasking as the orchestrator works well.
>>
>> Bye
> 

Back to comp.lang.prolog | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread


Thread

VIP0909: VibeCore Improvement Proposal Mild Shock <janburse@fastmail.fm> - 2025-08-11 11:35 +0200
  VIP0111: Does a Map have a Constructor? (Was: VIP0909: VibeCore Improvement Proposal) Mild Shock <janburse@fastmail.fm> - 2026-03-14 18:11 +0100
    100% Prolog Hash map beats SWI C Trie (Was: VIP0111: Does a Map have a Constructor?) Mild Shock <janburse@fastmail.fm> - 2026-03-17 04:07 +0100
    AI Accelerators and ISO Prolog multi-threading (Was: VIP0111: Does a Map have a Constructor?) Mild Shock <janburse@fastmail.fm> - 2026-07-29 15:28 +0200
      Actor/Erlang is dead, no Thread and Mailbox conflation [golang channels] (Was: AI Accelerators and ISO Prolog multi-threading) Mild Shock <janburse@fastmail.fm> - 2026-07-29 15:41 +0200
        Summer Challenge: libSQL = Prolog+Modes [VDBE versus π-WAM] (Was: Actor/Erlang is dead, no Thread and Mailbox conflation [golang channels]) Mild Shock <janburse@fastmail.fm> - 2026-07-30 11:22 +0200
          Work slicing can simulate AbortController (Was: Summer Challenge: libSQL = Prolog+Modes [VDBE versus π-WAM]) Mild Shock <janburse@fastmail.fm> - 2026-08-01 13:23 +0200
      Introducing an asm/1 statement in a Prolog system (Was: AI Accelerators and ISO Prolog multi-threading) Mild Shock <janburse@fastmail.fm> - 2026-08-09 20:21 +0200
      Introducing an asm/1 statement in a Prolog system (Re: AI Accelerators and ISO Prolog multi-threading) Mild Shock <janburse@fastmail.fm> - 2026-08-09 20:25 +0200
      MADV_HAWAII: Aloha from the 300ms Abyss [Exception Handling in Prolog] (Re: AI Accelerators and ISO Prolog multi-threading) Mild Shock <janburse@fastmail.fm> - 2026-09-10 23:42 +0200
        MADV_HAWAII: Aloha from Minimal Terms (Was: MADV_HAWAII: Aloha from the 300ms Abyss) Mild Shock <janburse@fastmail.fm> - 2026-09-14 14:43 +0200
          MADV_HAWAII: Decomposing the Ouroboros Road (Was: MADV_HAWAII: Aloha from the 300ms Abyss) Mild Shock <janburse@fastmail.fm> - 2026-09-20 18:30 +0200
    Food for thought: Schwartzian Transform (Was: VIP0111: Does a Map have a Constructor?) Mild Shock <janburse@fastmail.fm> - 2026-09-23 22:01 +0200
      Food for thought: Bayesian Experimental Designer (Was: Food for thought: Schwartzian Transform) Mild Shock <janburse@fastmail.fm> - 2026-09-24 14:32 +0200
        What will microsoft say, will they buy it? (Was: Food for thought: Bayesian Experimental Designer) Mild Shock <janburse@fastmail.fm> - 2026-09-24 15:34 +0200
          The recursive AI bottom line (Was: What will microsoft say, will they buy it?) Mild Shock <janburse@fastmail.fm> - 2026-09-24 15:38 +0200

csiph-web