Is Intel’s ParallelAccelerator.jl still maintained?

Why would it be? Basically all of what ParallelAccelerator was doing is now part of Julia’s Base. It was great back in v0.4, v0.5, and a bit of v0.6, but the developers of the package have worked with the Julia compiler team to essentially eliminate the need for the macro and make it automatic. Its main points were the way it would fuse broadcasting operations and add multithreading via its macro. At this point, Julia’s Base broadcasting automatically does fusion (in a customizable way), and multithreading will soon surpass ParallelAccelerator with the next generation PARTR implementation. Things like @fastmath and automatic SIMD in Base has also improved, and the new IR has allowed more optimizations. So, what would ParallelAccelerator even do to Julia v1.0 code?

Even some of the minor things that it did, like stencil calculations, have been supersceded. Specifically, stencil calculations are exactly what’s used in convolutional neural networks and PDEs, so you have things like Flux.jl building multithreaded stencil tooling which is compatible with GPUArrays and JuliaDiffEq building tools for easy construction of such stencils directly from PDE verbiage. So, what would the point of ParallelAccelerator.jl’s CPU-only non-stacking stencils with these newer developments?

That isn’t to say ParallelAccelerator.jl was a wasted development. It pioneered a lot of these approaches, quantified what was capable, and drove people to make it automatic. It was a great project that served its purpose. Long live the legacy of ParallelAccelerator.jl. I think the final nail would be to get benchmarks showing standard Julia v1.0 code is close to ParallelAccelerator.jl’s optimized v0.5 results, showing how far we’ve come.

12 Likes