2015-11-23 35 views

risposta

6

Certo, bisogna averli installati, e il comando di Ubuntu/Debian problema

update-alternatives --config libblas.so.3 

Sarai elenco di alternative numerati e potrebbe passare da uno all'altro con facilità

Link: https://wiki.debian.org/DebianScience/LinearAlgebraLibraries

+0

Un'altra domanda che succede se costruisco OpenBlas in modo normale e con flag USE_OPENMP = 1? Posso passare da una all'altra? cioè posso passare da modifica/versione della libreria? – mrgloom

+0

@mrgloom yes, ma dovrebbero essere pacchetti diversi, fornendo la stessa alternativa. Quindi 'update-alternatives' saprà su di loro –

+0

Ma come posso costruirli come diversi pacchetti?Per esempio, se costruisco OpenBlas dal sorgente tramite 'make' e poi' make install PREFIX = your_installation_directory1' e poi compilo con 'make USE_OPENMP = 1' e' make install PREFIX = your_installation_directory2', posso 'update-alternatives' trovare i miei build in queste cartelle o come posso installare due build differenti della stessa lib nella directory lib predefinita di ubuntu tramite 'make install'? – mrgloom

5

Sì, è possibile. Hai solo bisogno di utilizzare il collegamento di librerie dinamiche. Il libblas.so.3 è un collegamento morbido per /etc/alternatives/libblas.so.3 Che a sua volta punta alla realizzazione BLAS biblioteca

Ad esempio, se si installa Atlas (sudo apt-get install libatlas3-base):

/usr/lib/libblas.so.3 -> /etc/alternatives/libblas.so.3 
/etc/alternatives/libblas.so.3 -> /usr/lib/atlas-base/atlas/libblas.so.3 

mentre dopo l'installazione Openblas (sudo apt-get install libopenblas-base):

/usr/lib/libblas.so.3 -> /etc/alternatives/libblas.so.3 
/etc/alternatives/libblas.so.3 -> /usr/lib/openblas-base/libblas.so.3 

Naturalmente è possibile utilizzare il proprio collegamento build di libreria.

+0

'ldconfig -p' mi dà' libblas.so.3gf (libc6, x86-64) =>/usr/lib/libblas.so.3gf' e \t 'libblas.so (libc6, x86-64) =>/usr/lib/libblas.so' cosa è 'libblas.so.3' puoi approfondire questo? – mrgloom

+0

@mrgloom potresti elencare quali pacchetti blas sono installati? – ztik

5

È anche possibile farlo senza modificare le impostazioni del sistema, ad esempio aggiungendo la libreria che si desidera utilizzare alle variabili di ambiente LD_PRELOAD o LD_LIBRARY_PATH. La prima libreria su questo percorso sarà quella usata per risolvere i simboli.

Ad esempio, è possibile eseguire con

LD_PRELOAD=/path/to/blas/lib.so ./my_executable_using_caffe 

Si può vedere che questo approccio sarebbe estremamente utile come parte di uno script di benchmarking per le diverse implementazioni in quanto non influenza l'ambiente di benchmarking in sé. Per esempio (in bash):

my_libraries=/path/to/blas1.so /path/to/blas2.so 

for lib in $my_libraries 
do 
    LD_PRELOAD=${lib} ./my_executable_using_caffe 
done 

Questo approccio, sulla base di linking dinamico, vale per qualsiasi altro libreria condivisa il programma viene compilato con.