Bend: a new GPU-native language

That seems to not address anything that was mentioned above. vmap is one of many forms of parallelism. Others like Cilk are already built into Julia in some form. Remember, the precurser to Julia in some sense was StarP, a parallel MATLAB compiler

Early projects such as the ParallelAccelerator subset (made by Intel):

before it was abandoned due to Tapir.

Out-of-core scheduler projects still exist such as Dagger:

It’s not difficult to setup an overlay table so that every function call turns into a Dagger.@spawn call and is thus handled by a scheduler. That would effectively give you Bend. The reason why people don’t do that is because you’d just get slower code in most scenarios because of scheduler overhead.

Julia has been taking a step-by-step development to get there, starting from single-core performance and then really focusing on multithreading performance. Then extending the scheduler to support distributed scheduling with an appropriate cost model. You can dig up older documents that outline exactly the plans:

But of course, we’re still in the phase of optimizing Tapir. You’ll notice some familiar names:

Probably the most recent step towards this was:

Basically APIs that let someone opt functions into may-happen parallelism.

The part of this which ended up getting deployed the soonest was ModelingToolkit, since that took a lot of the principles and then applied to do a domain-specific space where more assumptions could be made to simplify the problem. This was the actual first topic of the symbolic-numeric toolset:

The non-trivial part would be the cost model, which would need to be heavily tailored to the language. I don’t know how much you’d gain by pulling the rest of the scheduler along.

9 Likes