#tensor #rest #operations #electronic #structure #linear-algebra #fortran

rest_tensors

为基于Rust的电子结构工具(REST)提供高效的张量运算

2个版本

0.1.1 2023年3月19日
0.1.0 2023年3月19日

#1459 in 算法

MIT/Apache

265KB
5K SLoC

rest_tensors

rest_tensors 是一个线性代数库,旨在为基于Rust的电子结构工具(REST)提供高效的张量运算。

使用 rest_tensors

  • 需要指定几个全局环境变量
  1. REST_BLAS_DIR: openblas库的路径: libopenblas.so
  2. REST_FORTRAN_COMPILER: 用于构建高效张量运算的Fortran库的编译器: restmatr.f90 -> librestmatr.so
  3. REST_EXT_DIR: 存储Fortran库的路径: librestmatr.so 编译后
  4. LD_LIBRARY_PATH: 将REST_BLAS_DIR和REST_EXT_DIR附加到LD_LIBRARY_PATH: export LD_LIBRARY_PATH="$REST_BLAS_DIR:$REST_EXT_DIR:$LD_LIBRARY_PATH"
  • 只需将以下内容添加到您的Carto.toml文件中
 [dependencies]
// replace the * by the latest version
rest_tensors = "*"

功能

  • MatrixFull: 列主序的秩2张量,即 matrix,用于分子几何、轨道系数、密度矩阵以及REST的大部分中间数据。
    存在几个与矩阵相关的结构,它们共享相同的trait,例如 BasicMatrixBasicMatrixOptMathMatrix 等等。

  • MatrixUpper:用于存储矩阵上三角的结构,用于哈密顿矩阵以及REST包中许多其他厄米矩阵。

  • RIFull:列主序的3阶张量结构,用于解析性身份近似(RI)中的三中心积分。例如,ri3ao、ri3mo等。
    注意:尽管RIFull是为REST中的特定用途创建的,但这里提供的多数相关操作相当通用,可以轻松扩展到任何其他3阶张量。

  • ERIFull:用于电子排斥积分(ERI)的列主序4维张量。
    注意:ERIFull是为处理REST中的解析电子排斥积分而创建的。因为REST主要使用解析性身份(RI)技术。解析ERI提供作为基准,因此并未完全优化。

  • MatrixFull的详细使用方法可以在相应页面中找到;而RIFullERIFull的使用方法尚未准备好。

待办事项列表

  • 将更多LAPACK和BLAS函数引入rest-tensors中的2维矩阵结构,例如MatrixFullMatrixFullSliceSubMatrixFull等。
  • 重新优化3阶张量的API,主要针对RIFull,并相应完成详细使用说明。
  • 使ScaLAPCK(可扩展线性代数包)函数可用,用于rest-tensors中的2维矩阵结构,如MatrixFull
  • Python中rest_tensors和numpy之间的转换

依赖关系

~65MB
~875K SLoC