haifengl on master
package.sh -> build.sh (compare)
haifengl on master
clean up ICATest (compare)
5k x 7.5k
matrix and it's taking an insane amount of time (40-50min). I'm using org.clojars.haifengl/smile "2.5.0"
and com.github.haifengl/smile-mkl "2.5.0"
on Pop!_OS (an Ubuntu fork; version 20.04 LTS on an i9-9880H processor), using @cnuernber 's tech.ml.dataset
lib. Others have subsecond times for matrices in this range, so I'm assuming I'm doing something wrong. However, my understanding from reading the smile docs is that smile-mkl
should include all of the blas related binaries. I am seeing INFO smile.math.blas.BLAS - smile-mkl module is available.
(and similarly for smile.math.blas.LAPACK
). Can someone please help me figure out what I'm missing? Thanks!
2.5.0
? We do not want to have to depend on platform-specific natives in our application (i.e. we don't want to include BLAS or MKL dependencies).Both are pretty big (MKL is huge >120MB) and are not suitable for deployment on embedded devices. Prior to 2.5.0
we were able to deploy ML tools rather nicely and compactly using only SMILE jars
INFO smile.math.blas.BLAS - smile-mkl module is available.
messages are not getting printed out until the very end of the computations. Am I correct in assuming that these messages should get printed out more or less as soon as the SVD starts? If so, that would suggest the issues are indeed upstream. Thanks again!
of
method.
distance
is to create nearest neighbor graph
AdjacencyList
/graph object?
@haifengl Appears that the native lib jars have changed from 2.4.0 to 2.5.0. Earlier they were using netlib, now its a combination of openblas and arpack. Is there a difference in functionality or performance? I am on Linux. In the Scala REPL, sometimes there are name clashes like
reference to dot is ambiguous; it is imported twice in the same scope by import smile.data.formula._ and import smile.math.MathEx.
What are the recommended interfaces for Scala users to leverage the linear algebra and math routines? I did a import smile.math.MathEx.dot in the case above. Thanks.
double[] mu = MathEx.colMeans(data);
Matrix x = new Matrix(data);
for (int j = 0; j < n; j++) {
for (int i = 0; i < m; i++) {
x.sub(i, j, mu[j]);
}
}
@kamilkloch we don't need
smile-netlib
any more. OpenBLAS/MKL is in use from 2.5.0
@haifengl Thanks, how do I now check if native BLAS/LAPACK/ARPACK libraries are loaded? With 2.2.x
I would do [BLAS/LAPACK/ARPACK].getInstance().getClass.getName contains "NativeSystem"
. In 2.5.0
[BLAS/LAPACK].getInstance().getClass.getName
returns smile.math.blas.openblas.OpenBLAS
and ARPACK.getInstance()
does not exist...