Octavian
Octavian.jl is a multi-threaded BLAS-like library that provides pure Julia matrix multiplication on the CPU, built on top of LoopVectorization.jl.
The source code for Octavian is available in the GitHub repository.
Related Packages
Julia Package | CPU | GPU |
---|---|---|
Gaius.jl | Yes | No |
GemmKernels.jl | No | Yes |
Octavian.jl | Yes | No |
Tullio.jl | Yes | Yes |
In general:
- Octavian has the fastest CPU performance.
- GemmKernels has the fastest GPU performance.
- Tullio is the most flexible.
Octavian's tasks can interfere with tasks spawned by Base.Threads, resulting in much slower execution times when used together. This can be avoided by using threading utilities from Polyester or LoopVectorization instead. See this Discourse post for more information.