1. 编译可使用ACNN势的lammps
需要注意的点
修改torchdemo-v3 里的prefix.cmake 修改里面openblas 和 torch的位置
需要使用oneapi 来编译,因为需要用到mkl库
可以检查mpicxx -show 如果输出是icx 说明使用的是oneapi的编译器,如果输出是g++ ,说明使用的是openmpi (好像必须要有oneapi的库,用g++也行,保险起见用oneapi)
在interface 处sh bulid**.sh build
编译完成后,需要给出torch 和openblas的库文件位置以及source onempi 才能运行程序
2. 关于传入的元素
lammps元素类型输入到ACNN中时会先做原子序数排序,ACNN中会有多个元素的通道(取决于训练用到的元素种类),这些通道应该也是按照元素周期表进行排序的。这样实现match。
因此训练时的元素顺序和后续不匹配没有关系,因为训练后的权重会按照元素周期表进行排序
例1:in.lmp中的元素顺序 Na Y Si O 和训练时用到的顺序(Na Si O Y)不一致,没有关系,因为都是先排序之后再传入的
例2:in.lmp中的元素顺序 Na La Si O 和训练时用到的类型(Na Si O Y)不一致,程序仍然能够进行下去,但是完全是错误的,因为模型里没有La的信息,本质上用到的还是Y的信息
因此需要保证:
1.结构data.nso中的元素类型和in.lmp中的元素类型相符,和元素的质量的顺序相符,确保没有错误。
2.结构中的元素类型在训练model时的元素类型相同,顺序不一定相同,保证不会索引到其他的元素类型上
3.元素的质量一定要对,写错了质量也能运行(因为相互作用势没有显性包括质量这一参数)
可以看源码 interface/lammps/pair_acnn.cpp 325行部分
转载请注明来源 有问题可通过github提交issue