I love this, the overhead of rayon always made it hard to gauge whether to use it for small operations (or could be small operations). This seems to solve that, at least for relatively short workloads
> a "low-overhead" parallelization library
Who is out here building high-overhead parallelization libraries?
I have almost certainly built high overhead parallelization primitives during my junior years.
Check out my high-overhead replacement for 'cat' in BASH
~ $ type cat
cat is a function
cat ()
{
while read; do
printf '%s\n' "$REPLY";
done < "$@"
}
It probably butchers things. Why? I got bored in a meeting and someone accidentally posted 'cat' to Teams
Relatively, Rayon is higher overhead
Yeah, why are those bastards writing slow code? They should just write fast code instead
Fast code is often unmaintainable, that's why new high-speed libraries keep popping up.
Yeah and people should make sure not to commit bugs too. I look at all these commits with bugs and I'm like why are you committing bugs.
Stop publishing software, you don't refine your meal constantly! Enough is enough!
In the early 2000s we were still in high school and a friend of mine told me that it's pointless to chose a carrier in SWE because eventually all the software will be written and there would be nothing to do.
Well we both ended up in CS but it's really a funny take nowadays (by then I wasn't so sure and it made me worry a bit).
we got paid to fix someone else code, whoever invented wordpress has made a million jobs
Out of curiosity, how do Spice/Chili/Rayon compare against the boring answer, OpenMP?
I guess they must have some really neat capabilities.
That’s what I was wondering. Iiuc openmp uses work stealing and the spice readme talks about the inefficiency of that:
Could you implement OpenMP using Spice/Chili? Good question?
Reading the implementation details kinda got me wanting to do a c11 threads based port.
Thanks. That’s some pretty clever stuff, with a nice intuitive description.
Rayon is known to have a higher overhead for the simple, and arguably most common case in numerical codes, static block size scheduling.
Things get better, and you start to benefit from rayon, as work gets less balanced.
Well, for one thing OpenMP is a c/c++ library, and chili and rayon are rust libraries.
It's probably possible to use openmp from rust, but the interface probably isn't as nice, you would need some kind of translation layer from rust closures and iterators to the OpenMP API
Plus Fortran!
There’d definitely be some work translating Rust concepts over. It might be impossible/not worth it. But maybe it would be nice to have Rust, C, and Fortran all talking to the same runtime?
Interesting, I wonder if I could use this on embedded. I was trying to get Rayon to work on embedded but was getting stack overflows when I tried. Maybe this will do the trick…
Is there anything like ray.io in rust? Nobody running computations on clusters in rust?
The company I work at (Hadean) used to have this as a product - think erlang-like multi machine IPC, with automatic acquisition of cloud resources and language integration for Rust, C, C++, Python. Pretty easy to point it at some machines and get them running a distributed application (as in simulation or big data).
But infrastructure for developers is hard to make money with - developers like to build it themselves and people holding the purse strings point at kubernetes and say "that's free". So we just use it as an internal platform for a distributed simulation engine and it works pretty well.
I did an analysis of removing it (it's a lot of bespoke code that we have to maintain for something that isn't our actual product) and I think you could probably implement something on top of Nomad that's close enough...but then Nomad went BSL and Kubernetes is a big complexity shift.
So...if anyone knows of something out there let me know, I'd love to be able to use it outside of work :)
ray.io seems to be doing pretty well financially...
Right, because Anyscale found a niche that distributed compute matters in (AI) and built great libraries/hosted platforms/services around that. I would venture that the money they make from people who pare back things to just ray core is ~0, which is why it's open source.
Put another way - building such a platform doesn't preclude commercial success, but (at least for us) it isn't sufficient. Fly.io might be able to pull it off if they want to explore that direction imo.
Fwiw if you dig around in the ray core codebase (as I did when I was doing competitor analysis years ago) you can use the core C code from other languages to build such a platform for Rust if you like - they had Java and C++ interfaces at the time, but I haven't looked in the last 5 years.
Not related to the content, but as a port of "spice" -- being from New Mexico, we would usually refer to a spicy pepper as (eg green) "chile," or a chunky dish with beans and meat as (eg Texas) "chili." Looks like the AP Stylebook agrees, though Webster's makes it seem less clear, so you can probably get away with it either way.
Further abroad (Australia), Chile is a country and chili is the hot pepper, so I suspect the (English) language here is highly regional.
Eg I’ve even lived in North American and never come across that spelling for the pepper.
The "chile" spelling is from Spanish, particularly Mexican and Central American Spanish. The word is derived from Nahuatl (Aztec).
That said, I'm in northern US and I would spell the pepper "chili"
Oddly I associate `chile` with the pepper and `chili` with the stew. Curiously chili pepper seems to be the common spelling around where I live so I have no clue where I picked this up.
And the name of the country Chile has no relation to the nahuatl word for pepper but comes from a word in a south American language (likely Aymara)
Yeah, I've lived in the northeast US my whole life and have never seen "Chile" used for anything but the country before; the pepper and the food are both spelled "chili" in my experience. That being said, pronouncing the country's name as a homophone of "chili" is a bit of an anglicism too, since from what I remember of Spanish in high school, the more accurate pronunciation would be something like "chee-lay" rather than "chill-ee". I wouldn't be shocked if both the spelling "chili" and the pronunciation of it had roots in the name of the country and in English usage drifted over time (sort of like the pronunciation of the name of the city "Amarillo" in Texas).
Was just arguing with a friend the other day about distinction between a "chili" and what New Mexican's have in "green chile stew." I have had what by at least strong family-resemblance is a chili but had essentially an adovada meat base, but would never call something chili that had potatoes or any visible vegetables. But in NM, even frito pies get the (superior) "green chile stew" topping.
Wikipedia says "Chili peppers, also spelled chile or chilli"
I love this, the overhead of rayon always made it hard to gauge whether to use it for small operations (or could be small operations). This seems to solve that, at least for relatively short workloads
> a "low-overhead" parallelization library
Who is out here building high-overhead parallelization libraries?
I have almost certainly built high overhead parallelization primitives during my junior years.
Check out my high-overhead replacement for 'cat' in BASH
It probably butchers things. Why? I got bored in a meeting and someone accidentally posted 'cat' to TeamsRelatively, Rayon is higher overhead
Yeah, why are those bastards writing slow code? They should just write fast code instead
Fast code is often unmaintainable, that's why new high-speed libraries keep popping up.
Yeah and people should make sure not to commit bugs too. I look at all these commits with bugs and I'm like why are you committing bugs.
Stop publishing software, you don't refine your meal constantly! Enough is enough!
In the early 2000s we were still in high school and a friend of mine told me that it's pointless to chose a carrier in SWE because eventually all the software will be written and there would be nothing to do.
Well we both ended up in CS but it's really a funny take nowadays (by then I wasn't so sure and it made me worry a bit).
we got paid to fix someone else code, whoever invented wordpress has made a million jobs
Out of curiosity, how do Spice/Chili/Rayon compare against the boring answer, OpenMP?
I guess they must have some really neat capabilities.
That’s what I was wondering. Iiuc openmp uses work stealing and the spice readme talks about the inefficiency of that:
https://github.com/judofyr/spice?tab=readme-ov-file#work-ste...
so I’d be interested in seeing a benchmark.
Does OpenMP support work stealing? https://stackoverflow.com/a/36407220
Answer: it's just an interface.
Other implementations go as far as targetting GPU https://www.openmp.org/updates/openmp-accelerator-support-gp...
Could you implement OpenMP using Spice/Chili? Good question?
Reading the implementation details kinda got me wanting to do a c11 threads based port.
Thanks. That’s some pretty clever stuff, with a nice intuitive description.
Rayon is known to have a higher overhead for the simple, and arguably most common case in numerical codes, static block size scheduling. Things get better, and you start to benefit from rayon, as work gets less balanced.
Well, for one thing OpenMP is a c/c++ library, and chili and rayon are rust libraries.
It's probably possible to use openmp from rust, but the interface probably isn't as nice, you would need some kind of translation layer from rust closures and iterators to the OpenMP API
Plus Fortran!
There’d definitely be some work translating Rust concepts over. It might be impossible/not worth it. But maybe it would be nice to have Rust, C, and Fortran all talking to the same runtime?
The old EE in me got excited for a second there, thinking someone had made a Rust port of [SPICE](https://en.wikipedia.org/wiki/SPICE).
I would love to see a blog post or more detail about how this implementation works and why it can beat rayon in some cases.
The README of Spice has detailed explanation of the approach: https://github.com/judofyr/spice
This previous discussion of Spice on HN may help a bit: https://news.ycombinator.com/item?id=41230344
Interesting, I wonder if I could use this on embedded. I was trying to get Rayon to work on embedded but was getting stack overflows when I tried. Maybe this will do the trick…
Is there anything like ray.io in rust? Nobody running computations on clusters in rust?
The company I work at (Hadean) used to have this as a product - think erlang-like multi machine IPC, with automatic acquisition of cloud resources and language integration for Rust, C, C++, Python. Pretty easy to point it at some machines and get them running a distributed application (as in simulation or big data).
But infrastructure for developers is hard to make money with - developers like to build it themselves and people holding the purse strings point at kubernetes and say "that's free". So we just use it as an internal platform for a distributed simulation engine and it works pretty well.
I did an analysis of removing it (it's a lot of bespoke code that we have to maintain for something that isn't our actual product) and I think you could probably implement something on top of Nomad that's close enough...but then Nomad went BSL and Kubernetes is a big complexity shift.
So...if anyone knows of something out there let me know, I'd love to be able to use it outside of work :)
ray.io seems to be doing pretty well financially...
Right, because Anyscale found a niche that distributed compute matters in (AI) and built great libraries/hosted platforms/services around that. I would venture that the money they make from people who pare back things to just ray core is ~0, which is why it's open source.
Put another way - building such a platform doesn't preclude commercial success, but (at least for us) it isn't sufficient. Fly.io might be able to pull it off if they want to explore that direction imo.
Fwiw if you dig around in the ray core codebase (as I did when I was doing competitor analysis years ago) you can use the core C code from other languages to build such a platform for Rust if you like - they had Java and C++ interfaces at the time, but I haven't looked in the last 5 years.
Not related to the content, but as a port of "spice" -- being from New Mexico, we would usually refer to a spicy pepper as (eg green) "chile," or a chunky dish with beans and meat as (eg Texas) "chili." Looks like the AP Stylebook agrees, though Webster's makes it seem less clear, so you can probably get away with it either way.
Further abroad (Australia), Chile is a country and chili is the hot pepper, so I suspect the (English) language here is highly regional.
Eg I’ve even lived in North American and never come across that spelling for the pepper.
The "chile" spelling is from Spanish, particularly Mexican and Central American Spanish. The word is derived from Nahuatl (Aztec).
That said, I'm in northern US and I would spell the pepper "chili"
Oddly I associate `chile` with the pepper and `chili` with the stew. Curiously chili pepper seems to be the common spelling around where I live so I have no clue where I picked this up.
And the name of the country Chile has no relation to the nahuatl word for pepper but comes from a word in a south American language (likely Aymara)
Yeah, I've lived in the northeast US my whole life and have never seen "Chile" used for anything but the country before; the pepper and the food are both spelled "chili" in my experience. That being said, pronouncing the country's name as a homophone of "chili" is a bit of an anglicism too, since from what I remember of Spanish in high school, the more accurate pronunciation would be something like "chee-lay" rather than "chill-ee". I wouldn't be shocked if both the spelling "chili" and the pronunciation of it had roots in the name of the country and in English usage drifted over time (sort of like the pronunciation of the name of the city "Amarillo" in Texas).
Was just arguing with a friend the other day about distinction between a "chili" and what New Mexican's have in "green chile stew." I have had what by at least strong family-resemblance is a chili but had essentially an adovada meat base, but would never call something chili that had potatoes or any visible vegetables. But in NM, even frito pies get the (superior) "green chile stew" topping.
Wikipedia says "Chili peppers, also spelled chile or chilli"
We call them chilli in the Uk
True: https://www.rhs.org.uk/vegetables/chilli-pepper/grow-your-ow...
https://en.wikipedia.org/wiki/Chili_pepper
> or a chunky dish with beans and meat as (eg Texas) "chili."
My understanding was that the name of the dish was short for "chili con carne" i.e. chili (the pepper) with meat
If it has beans it isn’t Texas chili…
[flagged]
The definitive source on how to spell "chili":
https://redhotchilipeppers.com/