2个版本
0.1.1 | 2023年3月19日 |
---|---|
0.1.0 | 2023年3月19日 |
#1459 in 算法
265KB
5K SLoC
rest_tensors
rest_tensors 是一个线性代数库,旨在为基于Rust的电子结构工具(REST)提供高效的张量运算。
使用 rest_tensors
- 需要指定几个全局环境变量
- REST_BLAS_DIR: openblas库的路径:
libopenblas.so
- REST_FORTRAN_COMPILER: 用于构建高效张量运算的Fortran库的编译器:
restmatr.f90
->librestmatr.so
- REST_EXT_DIR: 存储Fortran库的路径:
librestmatr.so
编译后 - 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,例如BasicMatrix
、BasicMatrixOpt
、MathMatrix
等等。 -
MatrixUpper
:用于存储矩阵上三角的结构,用于哈密顿矩阵以及REST包中许多其他厄米矩阵。 -
RIFull
:列主序的3阶张量结构,用于解析性身份近似(RI)中的三中心积分。例如,ri3ao、ri3mo等。
注意:尽管RIFull是为REST中的特定用途创建的,但这里提供的多数相关操作相当通用,可以轻松扩展到任何其他3阶张量。 -
ERIFull
:用于电子排斥积分(ERI)的列主序4维张量。
注意:ERIFull是为处理REST中的解析电子排斥积分而创建的。因为REST主要使用解析性身份(RI)技术。解析ERI提供作为基准,因此并未完全优化。 -
MatrixFull
的详细使用方法可以在相应页面中找到;而RIFull
和ERIFull
的使用方法尚未准备好。
待办事项列表
- 将更多LAPACK和BLAS函数引入rest-tensors中的2维矩阵结构,例如
MatrixFull
、MatrixFullSlice
、SubMatrixFull
等。 - 重新优化3阶张量的API,主要针对
RIFull
,并相应完成详细使用说明。 - 使ScaLAPCK(可扩展线性代数包)函数可用,用于rest-tensors中的2维矩阵结构,如
MatrixFull
。 - Python中rest_tensors和numpy之间的转换
依赖关系
~65MB
~875K SLoC