离线服务器配置 netcdf4 python 环境
| 一般HPC集群中自带的mpi4py netcdf4 或通过上传的whl安装的库,是指向库本身的netcdf4.so,不支持并行功能
重点:
需要手动编译、安装:mpi4py netcdf4
前置准备:
服务器依赖
使用服务器 mpi,netCDF,hdf5
module add ...必须确认服务器上的 netcdf 开启并行
nc-config --has-parallel -> YESPip whl
建议使用虚拟环境
- Cython
- Cffi
- pyyaml
# 联网服务器
pip download -d ./python_whl --python-version 3.10 --platform manylinux2014_aarch64 --only-binary :all: **xxx**
# 离线服务器
pip install --no-index --find-links=./python_whl **xxx**安装包
tar -zxvf netcdf4...
tar -zxvf mpi4py...本次使用:
netcdf4: 1.7.4
mpi4py: 4.1.2
环境变量
export CC=mpicc
export USE_NCCONFIG=1
export NETCDF4_DIR=...
export HDF5_DIR=...编译
mpi4py
cd mpi4py...
python setup.py build --mpicc=$(which mpicc)yhrun --mpi=pmix -n 2 -p mt_module python3 -c "from mpi4py import MPI; print(f'Rank {MPI.COMM_WORLD.Get_rank()}')"NETCDF4
cd netcdf4...
python setup.py clean --all
python setup.py build
python setup.py installpython3 -c "import netCDF4; print(netCDF4.__version__)"ERROR记录
NETCDF 编译过程
python setup.py install
ERROR
ValueError: invalid pyproject.toml config: `project.license`.
configuration error: `project.license` must be valid exactly by one definition (2 matches found):
- keys:
'file': {type: string}
required: ['file']
- keys:
'text': {type: string}
required: ['text']在较新的 Python 打包标准中,project.license 只能选择 file 或 text 其中之一,但 netCDF4 的某些版本在 pyproject.toml 中同时写了这两项,导致校验失败。
解决
license = "MIT"
license-files = ["LICENSE"]
# 改为:
license = {file = "LICENSE"}