JVM
If you are running on the JVM, The shim to a java SIMD netlib will generate warnings when it's instantiated. That shim looks for potential execution pathways upon instantiation, and prefers;
- A JNI to C
- Java SIMD
- Fallback to vanilla Java
The console warnings on startup will tell you the implementations you are missing.
My understanding, is that for level 1 BLAS operations (i.e. this library), the performance of the SIMD implementation is comparable to native - i.e. C performance.
To enable the SIMD implementation, you'll need (at the time of writing) to enable the incubating vector
API flags and be using JVM 18+. Consider adding this flag, to your JVM startup commands.
--add-modules=jdk.incubator.vector
JS
The best way is without a bundler using ESModules. Use this import map to load the module out of JSdelivr.
{
"imports": {
"@stdlib/blas/base": "https://cdn.jsdelivr.net/npm/@stdlib/blas@0.2.0/base/+esm"
}
}
If you gotta bundle, you gotta bundle
{
"dependencies": {
"@stdlib/blas": "^0.2.0"
}
}
Native
Is less tested, but works according to the tests. You'll need CBLAS on the path one way or another.
Linux
On linux,
sudo apt-get install -y libatlas-base-dev
works, but not clear, if it's minimal.
MacOS
I believe ships with CBLAS available, so should work straight out the box.
Windows
You'll need CBLAS on the path (I think).