Andrew Moa Blog Site

解决OpenMPI的"Authorization required, but no authorization protocol specified"错误提示

最近在用OpenFOAM和SU2提交计算时,反复出现"Authorization required, but no authorization protocol specified"报错信息。尽管不理会它最终还是能完成计算,但总是出现的报错信息让人心里不安。

怀疑是OpenMPI的问题,通过以下命令验证:

mpirun -np 2 hostname

果然出现报错信息:

9369ef647d5aff57821c1d728ec4eca1.png

翻阅网上信息,比较靠谱的解决方案是这个1:在Slurm脚本中增加以下环境变量:

export HWLOC_COMPONENTS=-gl

测试一下,报错问题解决了:

b3c56243fce578a837d01d68ab24e935.png

阅读时长1分钟
Andrew Moa

Linux挂载Windows共享文件夹无法运行Abaqus和CFX求解器的问题

近期发现一个问题,Abaqus和CFX无法在Linux挂载的Windows共享文件夹上进行计算。Linux是虚拟机部署的,在虚拟机本地路径上启动计算程序,虽然不会出现报错,但会导致虚拟磁盘占用空间增大,并且对读写效率也有一定的影响。

1. SMB版本问题

1.1 SMBv3

之前用cifs挂载共享文件夹的时候,没有仔细关注SMB协议的版本1。以下命令行没有指定协议版本:

mount -t cifs //172.25.64.1/Share /home/dell/Share -o uid=xxx,gid=xxx,username=xxx

mount命令查看,默认连接协议是3.1版本:

8eb0d44e21043275d3b1241235da9048.png

在3.1版本协议的挂载目录下运行Abaqus程序,无法计算,报错如下:

mpirun: Warning one or more remote shell commands exited with non-zero status, which may indicate a remote access problem.
driverExceptions.AbaqusExecutionError: ('SIMULIA Job Layout Engine', 255, 'abaqus_test')
!!!
!!! SIM wrap utility command error:
!!!   System Error open: 无效的参数
!!!
driverExceptions.AbaqusExecutionError: ('SIM Wrap-up', 1, 'abaqus_test')

在3.1版本协议的挂载目录下运行CFX求解器,无法计算,报错如下:

阅读时长1分钟
Andrew Moa

Ubuntu编译安装SU2

SU2 是一款由斯坦福大学航空航天学院开发的开源CFD求解器,基于C++和Python开发,定位类似于OpenFOAM,但不支持多面体网格。相比OpenFOAM,SU2在高速可压缩流方面的求解更有优势。

下载SU2源代码:

mkdir $HOME/su2code && cd $HOME/su2code
# 只clone最近commit版本,加快下载速度
git clone https://github.com/su2code/SU2.git --depth=1

定义环境变量,新建配置文件su2.env

touch $HOME/su2code/su2.env
chmod +x $HOME/su2code/su2.env
vim $HOME/su2code/su2.env

su2.env文件中加入以下内容,保存退出:

#!/bin/sh

# 定义SU2环境变量
export SU2_RUN=$HOME/su2code/bin	# 编译完成后su2的安装路径
export SU2_HOME=$HOME/su2code/SU2	# 下载su2的源码的文件夹路径
export PATH=$PATH:$SU2_RUN
export PYTHONPATH=$SU2_RUN:$PYTHONPATH

编译程序的配置文件meson_options.txt位于SU2源代码文件夹下,根据自己的需求调整其中的编译选项:

vim $HOME/su2code/SU2/meson_options.txt

这里打开mpi和blas支持,修改以下两行的value:

option('with-mpi',   type : 'feature', value : 'enabled', description: 'enable MPI support')
option('enable-openblas', type : 'boolean', value : true, description: 'enable BLAS and LAPACK support via OpenBLAS')

如果是Intel的机器,建议打开mkl支持。

默认支持的blas库是openblas,要先下载openblas库:

sudo apt install libopenblas-dev -y

进入下载的源码目录,运行编译程序

# 载入环境变量
source $HOME/su2code/su2.env
# 进入源码文件夹
cd $SU2_HOME
# 配置编译器,生成ninja构建文件
# 配置过程中会自动从git上下载外部依赖
# 非常花时间……
./meson.py build --prefix=$SU2_RUN/..
# 开始编译并安装
./ninja -C build install

验证是否安装成功:

SU2_CFD --help

安装成功会输出软件版本号和帮助信息。

阅读时长1分钟
Andrew Moa