Как проверить, какие библиотеки Octave *фактически* использует во время выполнения

Я построил октаву (успешно), используя библиотеки ATLAS (в частности, многопоточные библиотеки: libtatlas.so).

Все выглядит хорошо во время процесса настройки и создания (после долгой отладки), но после создания Octave я все еще вижу, как операции умножения матриц выполняются в одном потоке (библиотеки ATLAS должны сделать эту операцию многопоточной).

Есть ли способ увидеть, какую библиотеку Octave на самом деле использует, когда выполняет операции умножения матриц, такие как:

x = rand(10000,10000); y = rand(10000,10000); t=time(); 
z = x * y; 

Я пытаюсь определить, является ли это все еще проблемой сборки (например, Octave не скомпоновал правильные библиотеки ATLAS) или это проблема ATLAS (Octave использует правильные библиотеки, но ATLAS ведет себя не так, как ожидалось).


person David Parks    schedule 29.05.2014    source источник


Ответы (1)


Если вы работаете на платформе Linux, вы можете проще всего отлаживать разрешение библиотеки, используя ldd. Если вы просто запустите его в бинарном файле приложения:

ldd <the binary file>

он выведет список того, как были разрешены зависимости библиотеки.

Более сложным подходом было бы установить LD_DEBUG в libs перед запуском приложения:

env LD_DEBUG=libs <command to run application>

Это выведет информацию в командную строку, показывающую весь процесс разрешения и инициализации общей библиотеки.

person PeterSW    schedule 29.05.2014