我使用ATLAS库(特别是多线程库:libtatlas.so)构建了八度(成功)。
在配置和制作过程中(经过大量调试之后)看起来都很顺利,但在制作Octave之后我仍然看到矩阵乘法运算在单个线程中运行(ATLAS库应该使该操作成为多线程)。
有没有办法可以看到Octave实际上实际使用的库,当它执行矩阵乘法运算时,例如:
x = rand(10000,10000); y = rand(10000,10000); t=time();
z = x * y;
我正在尝试确定这是否仍然是构建问题(例如,Octave没有在正确的ATLAS库中链接)或者这是否是ATLAS问题(Octave使用正确的库但ATLAS的行为不符合预期)。
答案 0 :(得分:1)
如果您使用的是Linux平台,则可以使用ldd
最轻松地调试库分辨率。如果您只是在应用程序二进制文件上运行它:
ldd <the binary file>
它将输出库依赖关系如何解析的列表。
更复杂的方法是在运行应用程序之前将LD_DEBUG
设置为libs
:
env LD_DEBUG=libs <command to run application>
这将输出信息到命令行,显示整个共享库分辨率和初始化过程。