2015-10-21 95 views
0

我按照教程安裝h5py http://docs.h5py.org/en/latest/build.html 安裝已成功完成。然而,測試失敗,通過setup.py進行H5py安裝,未定義符號:iso_c_binding_

python setup.py test 

我得到這個:

running test 
running build_py 
running build_ext 
Summary of the h5py configuration 
Path to HDF5: '/opt/cray/hdf5-parallel/1.8.13/cray/83/' 
HDF5 Version: '1.8.13' 
MPI Enabled: True 
Rebuild Required: False 

Executing cythonize() 
Traceback (most recent call last): 
File "setup.py", line 140, in <module> 
cmdclass = CMDCLASS, 
File "/python/2.7.9/lib/python2.7/distutils/core.py", line 151, in setup  
dist.run_commands() 
File "/python/2.7.9/lib/python2.7/distutils/dist.py", line 953, in run_commands  
self.run_command(cmd) 
File "/python/2.7.9/lib/python2.7/distutils/dist.py", line 972, in run_command  
cmd_obj.run() 
File "setup.py", line 68, in run 
import h5py 
File "/h5py-2.5.0/build/lib.linux-x86_64-2.7/h5py/__init__.py", line 13, in <module> 
from . import _errors 
**ImportError:** /opt/cray/lib64/libmpichf90_cray.so.3: undefined symbol: iso_c_binding_ 

看起來像用Cython不能沒有找到共享庫,我怎麼能附上?謝謝。

+4

就個人而言,我會聯繫技術支持的超級計算機。他們通常可以爲你解決這些問題。 –

回答

2

(編輯並行編譯)

我這對一臺Cray XC30(ARCHER:http://www.archer.ac.uk)工作中使用下列內容:

module swap PrgEnv-cray PrgEnv-gnu 
module load cray-hdf5-parallel 
export CRAYPE_LINK_TYPE=dynamic 
export CC=cc 

ARCHER具有特定的模塊Python的環境上鍊接到的numpy的高性能等版本的計算節點(見:http://www.archer.ac.uk/documentation/user-guide/python.php),所以我還裝載了這些(這可能不是你的Cray系統上應用,在弓箭手的情況下mpi4py已經inlcuded在蟒蛇,計算斯塔11):

module load python-compute 
module load pc-numpy 

最後,我添加了自定義安裝位置,我將使用h5py到PYTHONPATH

export PYTHONPATH=/path/to/h5py/install/lib/python2.7/site-packages:$PYTHONPATH 

現在我可以建立:

python setup.py configure --mpi 
python setup.py install --prefix=/path/to/h5py/install 
...lots of output... 

現在,運行測試上前端節點失敗,但有錯誤消息我會希望看到一臺Cray XC如果試圖登錄/服務節點上啓動MPI代碼(初始化失敗的溝通渠道,登錄/服務節點沒有連接到高性能網絡,因此無法運行MPI代碼)。這表明,如果測試運行在計算節點上,測試可能會起作用。

> python setup.py test 
running test 
running build_py 
running build_ext 
Autodetected HDF5 1.8.13 
******************************************************************************** 
        Summary of the h5py configuration 

Path to HDF5: '/opt/cray/hdf5-parallel/1.8.13/GNU/49' 
HDF5 Version: '1.8.13' 
MPI Enabled: True 
Rebuild Required: False 

******************************************************************************** 
Executing cythonize() 
[Thu Oct 22 19:53:01 2015] [unknown] Fatal error in PMPI_Init_thread: Other MPI error, error stack: 
MPIR_Init_thread(547): 
MPID_Init(203).......: channel initialization failed 
MPID_Init(579).......: PMI2 init failed: 1 
Aborted 

要正確測試,你將不得不提交推出了並行Python腳本使用aprun計算節點上的作業。我不認爲內置的測試框架會很容易地工作,因爲它可能預計MPI發射被稱爲mpiexec的(作爲標準羣集上),所以你可能需要編寫自己的測試。另一種選擇是強制setup.py以某種方式使用aprun。

+0

最後通過測試,太感謝你了,@AndyT。我不知道發生了什麼,我覺得我沒有錯過任何步驟。但通過完全按照你的步驟,錯誤是缺少的。謝謝。 – Jaylin

+0

很高興它的工作。如果它解決了問題,請不要忘記接受上面的答案。 – AndyT

相關問題