|
|
|
|
|
by staticfloat
2069 days ago
|
|
Julia's SIMD programming model is still very much a work in progress; I think we have a way to go in providing the kind of flexibility and control that languages such as ISPC, Halide, TVM, etc... provide. That being said, packages such as SIMD.jl [0], and LoopVectorization.jl [1] are making fantastic progress, to the point that LoopVectorization forms the basis of a legitimate BLAS contender, in pure Julia [2]. It's not totally there yet, but it's close enough that real work is being done in LV at OpenBLAS-like speeds. As an aside, I find it incredible that these kinds of extensions can be built in packages thanks to the fact that Julia's compiler is extensible enough to allow for direct manipulation of the LLVM intrinsics being emitted by user code. [0] https://github.com/eschnett/SIMD.jl
[1] https://github.com/chriselrod/LoopVectorization.jl
[2] https://github.com/MasonProtter/Gaius.jl |
|
> find it incredible that these kinds of extensions can be built in packages thanks to the fact that Julia's compiler is extensible
Come on, jeez.. Julia’s compiler is a Lisp-based LLVM driver: of course it can do these things.