探索高效计算新境界:TiledArray——一个强大的块稀疏张量框架

探索高效计算新境界:TiledArray——一个强大的块稀疏张量框架

tiledarray A massively-parallel, block-sparse tensor framework written in C++ 项目地址: https://gitcode.com/gh_mirrors/ti/tiledarray

项目介绍

TiledArray 是一款基于C++的可扩展性块稀疏张量框架,专为高速执行复杂的高精度计算而设计,特别是在多体量子力学等领域中广泛应用。它能够让用户以近乎自然数学的方式编写和组合张量表达式,并在单机多核到大型分布式内存并行系统上实现无缝扩展。

项目技术分析

TiledArray 建立在MADNESS平行运行时(MADWorld)之上,提供了一种灵活、高效的编程模型。它支持:

  1. 密集和块稀疏张量的通用算术运算
  2. 高级(类似数学)组合以及底层数据和算法的完全访问,这在C++中均可实现。
  3. 大规模共享和分布式内存并行处理
  4. 高度可重用的框架:从瓷砖类型(如支持磁盘存储或按需计算的张量)到如何描述稀疏张量结构,几乎一切都可以定制。

TiledArray 还利用了Einstein求和约定,使得表达式的编译更加直观简洁。

应用场景与案例

例如,以下是一个简单的分布式内存矩阵乘法的示例代码:

#include <tiledarray.h>

int main(int argc, char** argv) {
  // 初始化并行运行时
  TA::World& world = TA::initialize(argc, argv);
  
  // 定义2D瓷砖范围结构,定义数组的分块。每个维度包含10个瓷砖
  auto trange = TA::TiledRange{
    TA::TiledRange1{0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100},
    TA::TiledRange1{0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100}};
  
  // 构建并填充参数数组
  TA::TArrayD A(world, trange);
  TA::TArrayD B(world, trange);
  A.fill_local(3.0);
  B.fill_local(2.0);
  
  // 构建空的结果数组
  TA::TArrayD C;
  
  // 执行分布式矩阵乘法
  C("i,j") = A("i,k") * B("k,j");
  
  // 撤销并行运行时
  TA::finalize();
  return 0;
}

性能亮点

在IBM BlueGene/Q超级计算机“Mira”上的测试显示,TiledArray 在稠密矩阵乘法中的性能优于Cyclops Tensor FrameworkScaLAPACK。此外,对于更复杂的表达式,如耦合簇单双(CCSD)波函数求解器,其也展现出极好的并行扩展性。

安装与使用

安装TiledArray只需几个简单的步骤,详情请参考INSTALL.md文档。开发团队提供了详细的说明,帮助用户快速上手。

开发者与贡献

该项目由Valeev Group弗吉尼亚理工学院开发。请引用TiledArray 时参考以下信息:

"TiledArray: 一个通用的可扩展块稀疏张量框架", Justus A. Calvin 和 Edward F. Valeev, https://github.com/valeevgroup/tiledarray 。

许可协议

TiledArray 采用GPL v3+许可协议,如需其他许可方式,请联系开发者。

结语

无论您是希望提升科学计算效率的研究人员还是寻求高性能解决方案的工程师,TiledArray 都是一个值得探索的强大工具。它的灵活性、易用性和卓越的性能都使其成为处理复杂张量运算的理想选择。立即加入,开启您的高效计算之旅!

tiledarray A massively-parallel, block-sparse tensor framework written in C++ 项目地址: https://gitcode.com/gh_mirrors/ti/tiledarray

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

芮伦硕

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值