i"m trying to
(:require
[uncomplicate.neanderthal.core :as nc]
[uncomplicate.neanderthal.opencl]
)
but I get
CompilerException java.lang.UnsatisfiedLinkError: /private/var/folders/2f/zthjwwkj0m343q6_hyzmvv6w0000gn/T/libneanderthal-mkl-0.17.0756295811454278858.jnilib: dlopen(/private/var/folders/2f/zthjwwkj0m343q6_hyzmvv6w0000gn/T/libneanderthal-mkl-0.17.0756295811454278858.jnilib, 1): Library not loaded: @rpath/libmkl_intel_lp64.dylib
Referenced from: /private/var/folders/2f/zthjwwkj0m343q6_hyzmvv6w0000gn/T/libneanderthal-mkl-0.17.0756295811454278858.jnilib
Reason: image not found, compiling:(uncomplicate/neanderthal/internal/host/mkl.clj:306:5)
- does the OpenCL implementation depend on MKL ?
@octo221 yes, you have to provide mkl binaries, either by installation, or by copy/paste
ok - what about pure-Clojure ? I can't see an example
Pure in what sense? Without native/opencl/cuda?
yes
Clojure-only ?
This is possible by the architecture, but would require an implementation of a pure Clojure engine. Which, IMHO, does not have a good ROI, since MKL (and other native BLAS/LAPACK libraries) is available on all platforms Clojure and JVM run (Linux, macOS, Windows), and would not be performance-competitive anyway even with enormous resources poured into doing it seriously. Long story short: all fast libraries for this kind of work in all popular languages use native BLAS/LAPACK for a reason.
ok sure
but why does the OpenCL depend on MKL ?
it does not depend on mkl. It depends on some cpu engine. the default configuration uses the mkl engine, but you can reconfigure it (in clojure) to use anything else, even the dummy one.
if I use only the GPU can I run the OpenCL implementation without MKL ?
it's just that on OSX I get OpenCL without needing to install anything and I want to try Neanderthal now without registering & downloading MKL
To use Neanderthal out of the box, without creating your own configuration of components, you'll have to install MKL, at least for now.
ok