2014-03-25 2 views
11

Ich verwende Enthought Canopy/EPD-Version von Python, die mit numpy gegen MKL geliefert wird. Ich führe gerade eine Reihe von Simulationen parallel (mit PP) auf meinem Arbeitscomputer (Windows 7, Quad Core i5 @ 3,33 Ghz, 4 GB RAM) und meine Heimarbeitsplatz (Mac Pro 3.1, Ubuntu 12.04, 2x Quad Core Xeon @ 2.8 Ghz, 6 GB RAM).Stellen Sie sicher, dass numpy MKL-Bibliothek auf Mac Pro verwendet

Aber wenn ich meine Simulationen benchmarken, laufen sie viel schneller auf dem Arbeitscomputer (35 Sekunden pro Iteration vs. 60 auf dem Mac Pro). Das Problem ist ein perfektes Gleichgewicht zwischen den Kernen (peinlich paralleles Problem), also vermute ich, dass es ein Problem mit der MKL-Bibliothek auf der Linux-Workstation zu Hause gibt. Gibt es eine Möglichkeit zu überprüfen, dass die MKL-Bibliothek tatsächlich in Python verwendet wird. Ich habe Threads gelesen, die sagen, dass Sie überprüfen können, ob Python mit ihm verknüpft ist, aber es stellt nicht sicher, dass es korrekt erstellt wurde und tatsächlich verwendet wird.

+0

Ist 'scipy.show_config()' nicht das, wonach Sie suchen? Nicht sicher, ob dies als "Sicherstellen" gilt, dass es tatsächlich verwendet wird. – askewchan

+0

Wenn ich das eintippe, sagen alle 'library_dirs' und 'include_dirs': "/ home/vagrant/src/master-env/...". Ist das korrekt (mein Benutzerkonto ist nicht "vagabundiert" und wenn ich nach diesem Ordner suche, ist es nicht da). Ist dieses Feld wichtig oder nicht verwendet? Die Bibliotheken melden korrekt "mkl_lapack95_lp64" usw. – user1554752

Antwort

12
>>> numpy.show_config() 

Sie sehen eine Ausgabe wie diese, die zeigt, dass MKL tatsächlich verknüpft ist.

lapack_opt_info: 
    libraries = ['mkl_lapack95_lp64', 'mkl_intel_lp64', 'mkl_intel_thread', 'mkl_core', 'mkl_mc', 'mkl_mc3', 'pthread'] 
    library_dirs = ['/Users/vagrant/src/master-env/Resources/Python.app/Contents/MacOS/../../../../lib'] 
    define_macros = [('SCIPY_MKL_H', None)] 
    include_dirs = ['/Users/vagrant/src/master-env/Resources/Python.app/Contents/MacOS/../../../../include'] 
blas_opt_info: 
    libraries = ['mkl_intel_lp64', 'mkl_intel_thread', 'mkl_core', 'mkl_mc', 'mkl_mc3', 'pthread'] 
    library_dirs = ['/Users/vagrant/src/master-env/Resources/Python.app/Contents/MacOS/../../../../lib'] 
    define_macros = [('SCIPY_MKL_H', None)] 
    include_dirs = ['/Users/vagrant/src/master-env/Resources/Python.app/Contents/MacOS/../../../../include'] 
openblas_info: 
NOT AVAILABLE 
lapack_mkl_info: 
    libraries = ['mkl_lapack95_lp64', 'mkl_intel_lp64', 'mkl_intel_thread', 'mkl_core', 'mkl_mc', 'mkl_mc3', 'pthread'] 
    library_dirs = ['/Users/vagrant/src/master-env/Resources/Python.app/Contents/MacOS/../../../../lib'] 
    define_macros = [('SCIPY_MKL_H', None)] 
    include_dirs = ['/Users/vagrant/src/master-env/Resources/Python.app/Contents/MacOS/../../../../include'] 
blas_mkl_info: 
    libraries = ['mkl_intel_lp64', 'mkl_intel_thread', 'mkl_core', 'mkl_mc', 'mkl_mc3', 'pthread'] 
    library_dirs = ['/Users/vagrant/src/master-env/Resources/Python.app/Contents/MacOS/../../../../lib'] 
    define_macros = [('SCIPY_MKL_H', None)] 
    include_dirs = ['/Users/vagrant/src/master-env/Resources/Python.app/Contents/MacOS/../../../../include'] 
mkl_info: 
    libraries = ['mkl_intel_lp64', 'mkl_intel_thread', 'mkl_core', 'mkl_mc', 'mkl_mc3', 'pthread'] 
    library_dirs = ['/Users/vagrant/src/master-env/Resources/Python.app/Contents/MacOS/../../../../lib'] 
    define_macros = [('SCIPY_MKL_H', None)] 
    include_dirs = ['/Users/vagrant/src/master-env/Resources/Python.app/Contents/MacOS/../../../../include'] 
+0

Haben Sie in Bezug auf Ihr zugrunde liegendes Problem physische Kerne gegen logische Kerne berücksichtigt? Sie könnten versuchen, die Umgebungsvariable MKL_NUM_THREADS zu optimieren, um ein mögliches Thrashing zu vermeiden. –

+0

Ich schaue mir das nochmal an, aber die Operationen, die ich mache, sind nicht multi-threaded (viel add(), multiply() usw., aber kein Punkt()). Ich bin mir auch nicht sicher, warum dies ein Problem auf dem XEON, aber nicht auf dem i5 wäre – user1554752

Verwandte Themen