I've built octave (successfully) using the ATLAS libraries (specifically the multithreaded libraries: libtatlas.so).
All looks well during the configure and make process (after much debugging), but after making Octave I'm still seeing matrix multiplication operations run in a single thread (the ATLAS libraries should make that operation multithreaded).
Is there a way I can see what library Octave is actually using when it does a matrix multiplication operations such as:
x = rand(10000,10000); y = rand(10000,10000); t=time();
z = x * y;
I'm trying to determine if this is still a build issue (e.g. Octave didn't link in the right ATLAS libraries) or if this is an ATLAS issue (Octave uses the right libraries but ATLAS isn't behaving as expected).
If you are on a linux platform then you can debug the library resolution most easily using ldd
. If you simply run it on the application binary:
ldd <the binary file>
it will output a list of how the library dependencies have been resolved.
A more complex approach would be to set LD_DEBUG
to libs
before running the application:
env LD_DEBUG=libs <command to run application>
That will output information to the command line showing the whole shared library resolution and initialization process.