SISSO

github页面:
https://github.com/rouyang2017/SISSO

在这个github项目下包含模块:

  • var_global.f90 ! 声明全局变量
  • libsisso.f90 ! 数学运算的子程序和函数
  • DI.f90!模型稀疏化(描述符识别)
  • FC.f90!使用存储在内存中的数值数据特征进行特征构建
  • FCse.f90!使用存储在内存中的表达式树特征进行特征构建
  • SISSO.f90!主程序

安装

git clone https://github.com/rouyang2017/SISSO.git

cd SISSO

---编译 SISSO 并行程序需要 Fortran MPI 编译器。推荐使用 Intel 编译器。

确定编译器与 MPI wrapper 是否可用:

which ifx

which mpiifx || true

which mpiifort || true

which mpifort || true

在"src"文件夹中,执行以下操作:

mkdir ~/bin/

  • mpiifx -fp-model precise var_global.f90 libsisso.f90 DI.f90 FC.f90 FCse.f90 SISSO.f90 -o ~/bin/SISSO

或者

  • mpiifx -O2 var_global.f90 libsisso.f90 DI.f90 FC.f90 FCse.f90 SISSO.f90 -o ~/bin/SISSO

区别是:

第一个命令安装的能够提高浮点计算的 准确性 和运行间 可重复性

第二个命令安装的 约 2 倍

(可选,保持环境整洁)然后

sudo mkdir /opt/SISSO

sudo mv ~/bin /opt/SISSO

加入环境变量:

nano ~/.bashrc

在文件中添加行:

#SISSO

export PATH=/opt/SISSO/bin/:$PATH

然后

source ~/.bashrc

which SISSO

解除内存限制

ulimit -s unlimited

计算模板

计算模板位于克隆的SISSO项目目录下:

input_templates

包含

--SISSO.in(输入文件)

--train.dat_regression(回归示例数据)

--train.dat_regression_multitask(多任务回归示例数据)

--train.dat_classification(分类示例数据)

--train.dat_classification_multitask(多任务分类示例数据)

计算测试

回归计算测试

在系统其他位置建立一个测试文件夹,然后拷贝 输入文件 和 训练数据

cp /media/waler/4TB/installer/SISSO/SISSO/input_templates/SISSO.in .

cp /media/waler/4TB/installer/SISSO/SISSO/input_templates/train.dat_regression ./train.dat

串行运行SISSO

SISSO |tee out

并行运行SISSO

mpirun -np 4 SISSO |tee out

运算流程:
  1. FC(Feature Construction) :从初始特征空间 Phi00 生成更高阶组合特征 Phi01Phi02
  2. SIS(Sure Independence Screening) :筛选子空间(你这里从 Phi02 选出 141 个进入子空间)
  3. SIS(Sure Independence Screening) :筛选子空间(你这里从 Phi02 选出 141 个进入子空间)

计算完成后生成如下文件:
Models/(模型结果文件)
SIS_subspaces/(SIS 选出的子空间)
SISSO.out(主输出汇总)

SISSO.out

可以从输出文件 SISSO.out 看总体结果与最优模型:

grep -n -E "Best|best|descriptor|RMSE|MAE|MaxAE|coeff" SISSO.out | head -n 50

我们接下来解释一下这些信息:

28:Metric for model selection: RMSE

53: 2D descriptor/model(y=sum(ci*di)+c0) :

58: coeff.(ci): 0.3119522717E+01 -0.2615952335E-03

60: RMSE and MaxAE: 0.6898298038E-03 0.9482663871E-03

第一行说明,SISSO 是用 RMSE(均方根误差) 作为模型优劣的判据

第二行说明,找到的最优模型是一个 2 维描述符, 模型形式是线性回归模型。

第三行就是两个拟合系数。对目标性质的贡献**主导;**是一个较弱但必要的修正项

第四行给出了 RMSE 和 MaxAE 判断误差大小,数字越小说明拟合效果越好

Models文件夹

这个文件夹下包含了训练产生的模型的文件

例如 data_top1 表示排名第 1 的模型的数据

使用

报错

1:funit报错

(base) waler@7B12:/media/waler/4TB/Calculation/ML/SISSO/test$ SISSO | tee out.log

Error: Cannot read the parameter "funit"

Error while reading the parameter "funit" from SISSO.in

SISSO v3.5 遇到过同样现象:只要把 funit=(1:2)(3:3) 注释掉就能跑,但一旦保留就报 "Cannot read the parameter funit"。

原因:

发现是由于 编译时,使用了 mpiifx 替换了 mpiifort 引起的

但是ifort功能在最新版本intel中被移除,这意味着ifx必须使用。

解决方法:

在SISSO/src路径下,找到SISSO.f90

修改

do ll=1,nunit

do ll=1,nunit-1

然后重新编译即可。

mkdir ~/bin/

mpiifx -fp-model precise var_global.f90 libsisso.f90 DI.f90 FC.f90 FCse.f90 SISSO.f90 -o ~/bin/SISSO

sudo rm -r /opt/SISSO/bin

sudo mv ~/bin /opt/SISSO

source ~/.bashrc

which SISSO

相关推荐
pride.li6 小时前
开发板和Linux--nfs服务挂载
linux·运维·服务器
looking_for__6 小时前
【Linux】应用层协议
linux·服务器·网络
BB_CC_DD6 小时前
Linux截图工具(ubuntu18.04+flameshot(火焰截图))
linux
云泽8087 小时前
不止是命令:Linux 高频指令实战 + 芯片架构底层逻辑
linux·运维·服务器
j_xxx404_7 小时前
Linux:基础IO
linux·运维·服务器
wdfk_prog8 小时前
[Linux]学习笔记系列 -- [drivers][i2c]i2c-dev
linux·笔记·学习
Trouvaille ~9 小时前
【Linux】网络编程基础(二):数据封装与网络传输流程
linux·运维·服务器·网络·c++·tcp/ip·通信
旅途中的宽~10 小时前
【深度学习】通过nohup后台运行训练命令后,如何通过日志文件反向查找并终止进程?
linux·深度学习
dump linux10 小时前
内核驱动调试接口与使用方法入门
linux·驱动开发·嵌入式硬件
Trouvaille ~11 小时前
【Linux】网络编程基础(三):Socket编程预备知识
linux·运维·服务器·网络·c++·socket·网络字节序