2016-03-29 9 views
5

sto cercando di risolvere il mio apache spark e netlib non funzionante e non so cosa fare dopo.Spark netlib-java BLAS

Ecco alcune informazioni:

  • Spark 1.3.1 (ma anche provato 1.5.1)
  • Mesos cluster con 3 nodi
  • Ubuntu Trusty su ogni nodo e installati seguente pacchetto BLAS

    $ dpkg -l | grep 'blas\|atlas\|lapack' 
    ii libopenblas-base     0.2.8-6ubuntu1     amd64  Optimized BLAS (linear algebra) library based on GotoBLAS2 
    
    $ update-alternatives --get-selections | grep 'blas\|lapack' 
    libblas.so.3     auto  /usr/lib/openblas-base/libblas.so.3 
    

ho costruito un barattolo campione da testare se netlib-java grado di rilevare questo librerie, con la seguente codice:

object Main extends App { 
    println(com.github.fommil.netlib.BLAS.getInstance().getClass().getName()) 
    println(com.github.fommil.netlib.LAPACK.getInstance().getClass().getName()) 
} 

Quando eseguo questo codice ottengo seguente risposta:

$ java -jar artifacts/BLAStest-assembly-1.0.jar 
Mar 29, 2016 3:43:33 PM com.github.fommil.netlib.BLAS <clinit> 
WARNING: Failed to load implementation from: com.github.fommil.netlib.NativeSystemBLAS 
Mar 29, 2016 3:43:33 PM com.github.fommil.jni.JniLoader liberalLoad 
INFO: successfully loaded /tmp/jniloader6790966128222263615netlib-native_ref-linux-x86_64.so 
com.github.fommil.netlib.NativeRefBLAS 
Mar 29, 2016 3:43:33 PM com.github.fommil.netlib.LAPACK <clinit> 
WARNING: Failed to load implementation from: com.github.fommil.netlib.NativeSystemLAPACK 
Mar 29, 2016 3:43:33 PM com.github.fommil.jni.JniLoader load 
INFO: already loaded netlib-native_ref-linux-x86_64.so 
com.github.fommil.netlib.NativeRefLAPACK 

così sembra funzionare bene qui. Ma la scintilla non riesce a rilevare le librerie. Ho aggiunto questa java dipendenza al mio assemblaggio barattolo

com.github.fommil.netlib:all:1.1.2 

anche se provo ad avviare una shell scintilla con questo pacchetto non funziona.

spark-shell --packages com.github.fommil.netlib:all:1.1.2 

risposta

3

Sembra che la tua implementazione netlib-java sta caricando i NativeRefBLAS, ma non i NativeSystemBLAS. Ciò significa che stai includendo "com.github.fommil.netlib: all" funziona correttamente, dal momento che senza di esso si utilizzerebbe l'implementazione F2J non nativa. Il problema è che si desidera utilizzare BLAS (OpenBLAS) fornito dal sistema, anziché l'implementazione di riferimento fornita con netlib-java. Questo probabilmente è solo questione di ottenere le librerie condivise giuste in una posizione che sia visibile ai tuoi esecutori di scintilla.

Lei ha detto che si è collegato libblas.so.3, ma come descritto nella netlib-java readme, è necessario configurare anche la libblas.so, liblapack.so, e liblapack.so.3:

sudo apt-get install libatlas3-base libopenblas-base 
sudo update-alternatives --config libblas.so 
sudo update-alternatives --config libblas.so.3 
sudo update-alternatives --config liblapack.so 
sudo update-alternatives --config liblapack.so.3 
+0

Grazie per la risposta. Non sono state trovate alternative per libblas.so o liblapack.so. Non so se questo potrebbe essere già una causa. Tuttavia il mio piccolo strumento ora si collega a NativeSystemBLAS. Ma la scintilla e qualsiasi lavoro di scintilla sono ancora legati all'implementazione di F2J e non riesco a scoprire quale sia la differenza lì: / – wobu