0

我正在根据http://docs.h5py.org/en/latest/build.html上的教程安装 h5py 安装成功。然而,测试失败,

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

1 回答 1

3

(为并行构建而编辑)

我使用以下方法在 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 系统,在 ARCHER 的情况下,mpi4py 已经包含在python-compute安装中):

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...

现在,在前端节点上运行测试失败,但如果您尝试在登录/服务节点上启动 MPI 代码,我希望在 Cray XC 上看到错误消息(无法初始化通信通道,登录/服务节点是未连接到高性能网络,因此无法运行 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

要正确测试,您必须提交一个使用aprun在计算节点上启动并行 Python 脚本的作业。我认为内置的测试框架不会很容易工作,因为它可能期望 MPI 启动器被称为mpiexec(在标准集群上),因此您可能需要编写自己的测试。另一种选择是强制 setup.py 以某种方式使用 aprun 。

于 2015-10-22T09:30:25.433 回答