宣布 Chapel 2.3!

Chapel 2.3 发布,主要亮点包括:

  • Python 互操作性:新增Python包模块,支持从 Chapel 调用 Python,可直接使用 NumPy 和 PyTorch 等库,还能在 Chapel 程序中嵌入可在运行时更改的 Python 代码,示例展示了创建 PyTorch 张量及动态修改操作的过程。
  • 稀疏计算

    • 背景:Chapel 支持稀疏数组,用域表示非零索引,可共享,默认存储格式为 Coordinate (COO),也有其他格式,还支持分布式稀疏数组。其稀疏特性在 Chapel 2.0 稳定化工作中未涉及,现在得到改进和稳定。
    • 近期改进:2.3 版本添加新接口,改进稀疏命名方案和布局类型,提高关键习惯用法的性能,如将表示 CSR 和 CSC 格式的类型从CS(compressRows=true|false)重命名为csrLayoutcscLayout,模块从LayoutCS重命名为CompressedSparseLayout,还添加了新的实用例程,如获取 COO 存储域的坐标、遍历块稀疏数组的本地子数组等,可通过MatMatMult.chpl等文件查看稀疏特性的实际应用。
  • 性能改进

    • Qthreads 任务处理改进:Chapel 通常使用 Qthreads 实现并行任务,2.3 版本升级到 1.21 版,加速了多种任务习惯用法,在 thread-ring 微基准测试和 CoMD 代理应用研究等中都有明显积极影响,感谢 Qthreads 团队的支持。
    • Libfabric/OFI 优化:2.3 版本对CHPL_COMM=ofi进行了性能改进,包括通过流水线 PUT 提高远程缓存性能,使用非阻塞 PUT 改进on语句性能,以及使用非阻塞 GET 提高大型数组传输性能,在 HPE Cray EX 上有显著效果,预计在其他使用CHPL_COMM=ofi的平台上也有类似改进。
  • 新 GPU 特性:支持供应商中立的 GPU 计算,2.3 版本添加两个新的 GPU 查询功能,.gpuId方法类似.id用于获取 GPU 子区域的 ID,deviceAttributes()函数用于查询低级 GPU 属性,还改进了@gpu.itersPerThread属性,可实现循环迭代到线程的映射方式切换,目前正在努力实现 halting 功能和提供跨 GPU 的分布式数组。
  • Dyno 编译器改进:团队致力于名为dyno的编译器改进工作,已取得一些成果,如更友好的错误消息、chplcheck检查器和 Chapel 语言服务器 (CLS),下一个主要里程碑是完成新的增量类型和调用解析器,2.3 版本中该解析器在支持提升表达式、迭代器和域方面有显著进展。
  • 更多信息:如有关于 Chapel 2.3 或其新功能的问题,可在 Chapel 的 Discourse 组或其他社区论坛咨询,欢迎反馈以改进 Chapel 语言、库、实现和工具。
阅读 3
0 条评论