Skip to content

混合精度 CG 特征值求解器的初步实现尝试#7417

Open
Absolutely-Daisy wants to merge 1 commit into
deepmodeling:developfrom
Absolutely-Daisy:feature/eigen-mixed-precision-cg-dev
Open

混合精度 CG 特征值求解器的初步实现尝试#7417
Absolutely-Daisy wants to merge 1 commit into
deepmodeling:developfrom
Absolutely-Daisy:feature/eigen-mixed-precision-cg-dev

Conversation

@Absolutely-Daisy
Copy link
Copy Markdown

实现混合精度共轭梯度求解器,采用精度分离策略:
float - H|ψ>/S|ψ> 矩阵向量乘 , 预条件器
double - 点积,特征值更新,正交化
新增文件 3个

  • source/source_hsolver/diago_cg_mixed.h 类型特征和类声明
  • source/source_hsolver/diago_cg_mixed.cpp 核心实现
  • source/source_hsolver/test/diago_cg_mixed_test.cpp 单元测试

修改文件 5个

  • source/source_hsolver/CMakeLists.txt 添加编译目标
  • source/source_hsolver/hsolver_pw.cpp 添加 cg_mixed 方法
  • source/source_hsolver/test/CMakeLists.txt 添加测试
  • source/source_io/read_input_item_elec_stru.cpp ks_solver 白名单
  • source/Makefile.Objects Intel make 构建支持

使用
INPUT 中设置 ks_solver = cg_mixed

实现混合精度共轭梯度求解器,采用精度分离策略:
  float - H|ψ>/S|ψ> 矩阵向量乘 + 预条件器(计算密集型)
  double - 点积/特征值更新/正交化(精度敏感)

## 新增文件 (3)
- source/source_hsolver/diago_cg_mixed.h  类型特征 + 类声明
- source/source_hsolver/diago_cg_mixed.cpp  核心实现
- source/source_hsolver/test/diago_cg_mixed_test.cpp  单元测试

## 修改文件 (5)
- source/source_hsolver/CMakeLists.txt  添加编译目标
- source/source_hsolver/hsolver_pw.cpp  添加 cg_mixed 方法
- source/source_hsolver/test/CMakeLists.txt  添加测试
- source/source_io/read_input_item_elec_stru.cpp  ks_solver 白名单
- source/Makefile.Objects  Intel make 构建支持

## 使用
INPUT 中设置 ks_solver = cg_mixed

## 验证
9/9 CI 通过 | vs 双精度 CG 偏差 < 1e-7 eV
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants