<siraben>
Looks like there's a relevant paper too; https://dl.acm.org/doi/pdf/10.1145/3018882.3018891 . The idea seems to be turning imperative, sequential code into a map/reduce type of computation that can be parallelized.
<siraben>
If you know that the partial results can be combined in a monoidial way (i.e. with an operation that is associative), then it makes sense that the order in which the partial results happen is independent.
<siraben>
Oh, the paper is so much clearer than the blog post.
DKordic has quit []
jsoft has joined #forth
<proteusguy>
siraben, definitely speaks in favor of stack oriented devices. Interesting. Have to dig into it and see if its something we can apply.
mtsd has joined #forth
<proteusguy>
siraben, seems like the biggest issue (which it often is) is getting the data segmented where it can actually be accessed in parallel faster than just sequentially going through it in a single process.
<siraben>
proteusguy: Right. Hence the importance of the monoidial decomposition.
<proteusguy>
How does that help you segment the data? I see if you can segment the data then you can apply this decomposition to it but it seems that segmenting the data is a pre-requisite.
<siraben>
It's a precondition. The paper is about taking imperative sequential programs and rewriting them in an equivalent way of map/reduce form.
<siraben>
I think the approach is more general than splitting data. Entire control structures can be rewritten as well.
<proteusguy>
yes i understand what the paper is about - and it's an interesting approach. Now I'm talking about the challenges in being able to apply the paper in a real world situation.
<siraben>
Sure. What challenges are you referring to?
<proteusguy>
OK you have a large file on a drive in a computer. If you're critical path is the IO bus transfer speed of the drive, how do you use parallel processing to process the data any faster than a single process just iterating over the file? So the challenge is to identify scenarios where you can have the data in a format/location that allows you to apply the solution.
jsoft has quit [Ping timeout: 240 seconds]
rprimus has quit [Quit: Lost terminal]
rprimus has joined #forth
<siraben>
Well parallel processing won't help you read the file faster so here you're I/O bound.
<siraben>
If a large database is split across multiple servers, parallel processing would be very useful.
proteus-guy has joined #forth
xek has joined #forth
xek has quit [Ping timeout: 258 seconds]
mtsd has quit [Quit: Leaving]
xek has joined #forth
rann is now known as list
xek has quit [Ping timeout: 256 seconds]
list is now known as rann
jsoft has joined #forth
xek has joined #forth
xek has quit [Ping timeout: 240 seconds]
Zarutian_HTC has quit [Ping timeout: 265 seconds]
Zarutian_HTC has joined #forth
<WilhelmVonWeiner>
Oh it's siraben
<siraben>
hi WilhelmVonWeiner
<WilhelmVonWeiner>
Long time no see, how's KnightOS
<siraben>
You're on the KnightOS channel?
<WilhelmVonWeiner>
I'm on the KnightOS channel?
<siraben>
Haha, I mean what was I doing the last time we met?
<siraben>
Because I happen to be doing some KnightOS related things now as well
<WilhelmVonWeiner>
Not very sure. Last I remember you'd met a Forther at their office and you were sounding well smart. I thought KnightOS was your thing.
<siraben>
Ah, not KnightOS but yeah I was tinkering with my TI-84+ calculator.
<siraben>
Wrote a Forth on it that started up at boot
<siraben>
github.com/siraben/zkeme80
<WilhelmVonWeiner>
zkeme80
<WilhelmVonWeiner>
that's what I was thinking of
<WilhelmVonWeiner>
got them confused
<WilhelmVonWeiner>
I went to put it on my TI but found it didn't work
<siraben>
zkeme80?
<WilhelmVonWeiner>
as in, the calculator, not the OS
<siraben>
Oh the calculator
<siraben>
Aww, batteries?
<WilhelmVonWeiner>
Nope, I think it'd been dropped on it's head too many times
<siraben>
I still haven't implemented a REPL yet, which was one of my plans. Maybe sometime this year or next I'll get to it.
<WilhelmVonWeiner>
Haven't had much opportunity for Forth since finishing university.
jsoft has quit [Ping timeout: 246 seconds]
<WilhelmVonWeiner>
The only Forth-related idea I have is SIP processing hardware which loads configuration from flash, written in Forth.
<siraben>
I think Forth will just remain a hobby for me, for systems programming definitely something like C++ or Rust with tooling will be better.
<WilhelmVonWeiner>
Yes, I like Zig
iyzsong has quit [Read error: Connection reset by peer]
iyzsong has joined #forth
iyzsong has quit [Read error: Connection reset by peer]
iyzsong has joined #forth
iyzsong has quit [Read error: Connection reset by peer]
iyzsong has joined #forth
<MrMobius>
hmm, maybe I have shot myself in the foot
<MrMobius>
I decided to put make a flag byte for each word that marks minimum number of stack items and whether it will add to the stack
<MrMobius>
the dispatcher looks at the byte and does the checks to save space so each word doesnt waste space on checks
<MrMobius>
now how do you implement ' ? you can return the address of the code but then there is no checking since that only happens in the token dispatcher
<MrMobius>
so I could embed a 3 byte subroutine call instruction in the header before the flag byte and have ' return that address but that kind of defeats the space savings
Zarutian_HTC has quit [Read error: Connection reset by peer]
Zarutian_HTC has joined #forth
xek has joined #forth
WickedShell has joined #forth
gravicappa has quit [Ping timeout: 258 seconds]
gravicappa has joined #forth
spoofer has quit [Read error: Connection reset by peer]