It might also be a good idea to check out Neanderthal (http://neanderthal.uncomplicate.org), a linear algebra library that also uses ClojureCUDA side to side with Intel MKL and ClojureCL.
The uncomplicate family of libraries look really great. The fellow behind them clearly knows what he is doing.
I tried to get uncomplicate.neanderthal working because I was impressed by it, but eventually was scared off by the Intel MKL dependency.
I'll get it all working properly some day after sinking enough hours; but I really wish there was a pure java-CPU implementation so it was a bit easier to ease into the functional mindset and prototype algorithms, learn the concepts and clear out my misunderstandings regarding how the logic fits together. I lost an afternoon to finding downloaders, reading license conditions, shell scripts, and debugging path issues when what I wanted to be doing was learning to use a new API.
Basically, I think uncomplicate is great, but the library dependencies are a bit unfriendly for the novice to low-skill data scientist new to Clojure. EDIT The competition was "import numpy as np" to start learning how to do linear algebra work in Python.
You do not need to read any of those Intel MKL guides - they are for the developers who compile the dependencies (me in this case).
You as a user only need to have Intel's .so files on your PATH (or dylib for Mac or dll for Windows), and that's all.
As this is a discussion about ClojureCUDA, I'll just note that to use this you'd need to install CUDA. IMHO, Intel MKL is easier to install than CUDA, and noone complains of the CUDA installation complexity.
I understand your concerns, but I'd like to encourage you - it is really not difficult once you follow the installation instructions to the letter.
Sure! Would love to. I don't think we can use your java bindings. We have our own off heap memory management and a lot of other stuff going on under the hood.
Email in profile.
Wow! Just yesterday I was researching what options I have for programming with CUDA, having a Clojure library for it sounds lovely!
How is the performance, though? Is there an impact on it, as compared to say the C bindings? I want to write a cryptocurrency miner for nVidia and performance is key there. Any inputs?
Everything is compiled to MTX via NVCC(LLVM) so as long as the libraries are equivalent there should be no impact.
Many of those libraries are nothing more than an interface over the existing "1st" party libraries e.g. cuBLAS so you in effect aren't going to be running unoptimized code.
Indeed but that isn't language dependent, my intention was to convey that for the most part C/C++, Fortran, Coljure or anything else will run the same for the same code.
Some language specifics might cause edge cases but for the most part as long as the compiler produces an identical PTX there shouldn't be any difference.