目录

JUXAID

misaraty 更新 | 2026-05-09
前言
下载:JUXAID

JUXAID

PYXAID是由Oleg V. PrezhdoAlexey V. Akimov共同开发的优秀非绝热分子动力学软件,在凝聚态体系的激发态动力学模拟中得到了广泛应用。随后,Alexey V. Akimov开发的Libra进一步拓展了相关方法体系。此外,Hefei-NAMDNEXMDSHARCNewton-X等软件也在激发态动力学研究中得到了广泛应用,并表现出良好的性能。

PYXAID基础上,本项目开发了JUXAID,一个基于Julia语言的轻量化重构版本。该实现基于原程序的代码逻辑进行重新实现,并采用简洁的单文件结构。在保留从头算电子-核运动耦合核心理论框架的基础上,充分利用Julia在高性能数值计算与跨平台执行方面的优势,实现了非绝热分子动力学过程的高效模拟。同时,JUXAID引入了改进的表面跳跃算法(如SDM方法)以及更加灵活的模块化设计,从而提升了程序在复杂体系中的适用性与可扩展性。此外,JUXAID支持LinuxWindows等多平台环境运行,适用于大规模计算以及后续与机器学习方法的集成。

使用方法

julia namd.jl

性能对比

在以下两种硬件平台上,对PYXAIDMAXAIDJUXAID不同版本进行了性能测试:

  • 服务器平台:英特尔® 至强® 金牌 6444Y,256 GB 内存,CentOS

  • 桌面平台:Intel(R) Core(TM) Ultra 9 285H,32 GB 内存,Windows 11

相对速度对比表

软件版本 相对速度(PYXAID=1) 性能表现说明
PYXAID 基准参考
MAXAID 1/15× 电子态数增加时性能显著下降
JUXAID (v10) PYXAID 基本一致
JUXAID (v12) 优化
JUXAID (v14) 13× 优化
JUXAID (v15) 19× 关闭部分非必要输出
PXAID (v10) 1/36× 初始 Python 重构版本,性能较低
PXAID (v12) 1/15× 优化
PXAID (v13) 11× 优化
PXAID (v14) 34× 优化
PXAID (v15) 154× 关闭部分非必要输出

更新日志

v15 相比 v14 的主要改进

1. 增加输出文件保存开关

  • v14 默认保存全部输出文件

  • v15 增加四类输出控制参数:

    • SAVE_DECOHERENCE_RATES

    • SAVE_ICOND_FILES

    • SAVE_ME_ENERGIES

    • SAVE_ME_POP

  • 用户可根据需求灵活选择是否保存对应文件

2. 降低文件IO开销

  • v14 会持续写入多类文本文件

  • v15 可关闭部分非必要输出

  • 在大规模 icond 和长时间轨迹计算中可显著减少写文件耗时

v14 相比 v12 的主要改进

1. 引入多线程并行计算(Threads

  • v12 主要采用单线程执行

  • v14 引入 Base.Threads

  • 在退相干计算与多轨迹动力学模拟中实现并行加速

  • 显著提升大规模轨迹计算效率

2. 核心电子动力学完全“去对象化”

  • v12 使用 ElectronicStructure 对象传播

  • v14 将核心传播改写为:

    • C

    • A

    • g

    • tau_m

    • t_m

    等底层数组直接操作

  • 降低对象访问与动态分派开销

3. 大量函数inline

  • v12 普通函数调用较多

  • v14 对核心小函数使用 @inline

  • 减少函数调用开销,提高热点循环执行效率

4. 三维数组批量存储Hamiltonian

  • v12 使用 Vector{Matrix} 存储 Hme_batch

  • v14 改为:

    • Array{ComplexF64,3}
  • 提高内存连续性与缓存命中率

5. 轨道映射进一步压缩

  • v12 使用嵌套 Vector

  • v14 引入:

    • pack_diag_orbital_map
  • 将轨道映射压缩为定长矩阵

  • 降低动态内存访问开销

6. 更底层的传播核心实现

  • v12 使用较高层对象接口

  • v14 拆分为多个 _core! 函数:

    • propagate_coefficients_core!

    • update_populations_core!

    • hop_core!

    • sdm_decoherence_core!

  • 更适合编译器优化与并行执行

7. FFT实现进一步优化

  • v12 使用:

    • fft

    • ifft

  • v14 在实值退相干相关函数计算中改为:

    • rfft

    • irfft

  • 利用实数能量涨落序列的特性减少FFT计算量与内存占用

8. 大规模输出写入优化

  • v12 频繁直接文件写入

  • v14 引入:

    • IOBuffer
  • 减少大量小规模IO操作带来的性能损耗

9. 多轨迹模拟线程局域化

  • v12 所有轨迹共享全局统计数组

  • v14 为每个线程建立:

    • sh_tls

    • se_tls

  • 降低线程竞争与同步开销

10. 数据加载进一步向连续内存优化

  • v12 使用 Vector{Matrix} 存储 H_batch

  • v14 改为:

    • H_array
  • 更适合批量线性代数与缓存优化

v12 相比 v10 的主要改进

1. 自相关函数FFT加速

  • v10 使用双重循环计算自相关函数(O(N²))

  • v12 使用 FFT 实现严格等价的自相关计算(O(N log N)

  • 在长时间轨迹下显著提升decoherence计算速度

2. 参数结构化(移除global

  • v10 使用大量global变量(hbarkbdt等)

  • v12 引入 NAMDParams 结构体统一管理参数

  • 提高类型稳定性,增强Julia编译优化能力

3. 多电子态映射预计算

  • v10 在每个时间步重复计算 delta_statesext2int

  • v12 预计算:

    • transition_map

    • diag_orbital_map

  • 显著减少重复计算开销

4. 避免存储完整时间序列对象

  • v10 存储完整 oe_esme_es 数组(内存开销大)

  • v12 使用:

    • Hme_batch(轻量)

    • 单个 ElectronicStructure 对象传播

  • 大幅降低内存占用

5. Hamiltonian构造模块化

  • v10 在main中集中实现(难维护)

  • v12 拆分为函数:

    • build_spin_orbital_H!

    • build_Hme_batch

    • write_me_energies

  • 提高代码可读性与可维护性

6. 减少临时数组分配

  • v10 使用矩阵乘法和广播(产生临时对象)

  • v12 使用显式循环更新矩阵

  • 降低GC压力,提高运行效率

7. hop算法优化

  • v10 使用 vec + cumsum

  • v12 使用 view + 在线累加

  • 避免不必要的内存分配

8. 更易扩展并行计算

  • v12 将数据结构扁平化(Hme_batch + 单对象)

  • 更适合后续:

    • 多线程(Threads

    • 多进程(Distributed

引用

这是PYXAID的原始文献:

  • Akimov A V, Prezhdo O V. The PYXAID program for non-adiabatic molecular dynamics in condensed matter systems. Journal of Chemical Theory and Computation, 2013, 9(11): 4959–4972.

  • Akimov A V, Prezhdo O V. Advanced capabilities of the PYXAID program: integration schemes, decoherence effects, multiexcitonic states, and field–matter interaction. Journal of Chemical Theory and Computation, 2014, 10(2): 789–804.

本工作:

论文正式发表后补充。