关于Flang

10 篇文章 1 订阅

目标

Flang是设计用于与LLVM集成的Fortran前端,具有与Clang C ++和LLVM一致的开源许可,并且适合在各种系统中与Clang / LLVM进行部署和互操作。

Flang的目标是:

  • 确保Flang成为一个自我维持的开源项目
  • 吸引(广泛)社区的其他开发人员来创建大量的贡献者
  • 提供与gfortran相当或更好的单核CPU性能'
  • 通过强大且高性能的OpenMP实现来实现多核CPU和GPU编程
  • 创建一个可以轻松重新托管并重新定位到未来系统的源库,就像Clang和LLVM一样容易

  • 建立一个源码基础,研究人员和开发人员可以在此基础上迅速发展并提高生产力

  • 创建一个可以在工具项目中重复使用Flang元素的程度的源库

目前的Flang编译器已经在很大程度上解决了前四个目标。

Flang项目团队确定使用当前代码库在合理的时间内无法实现最后三个目标。为了解决这些问题,EuroLLVM于2018年4月17日宣布了一个新项目(最初称为F18)。

LLVM已将该项目用作该项目的官方Fortran前端。 2020年3月,此F18进入了flang目录中的LLVM monorepo上游。

Flang的历史

该Flang公共GitHub存储库于2017年5月11日为原始Flang创建。在第一年,已将500多个提交和900个测试添加到了存储库中。自建立以来,已向存储库添加了1600多个提交。

CMake版本3.10添加了对Flang的支持。

Spack支持构建和使用Flang。

Windows端口已由更广泛的Flang社区发起。

ARM Ltd.于2017年11月13日推出了用于ARM / HPC的商业支持的Fortran编译器。

Fortran 2008功能

Flang是一个相当完整的Fortran 2003编译器。已经完成了实现Fortran 2008和Fortran 2018功能的工作。

已实现以下Fortran 2008功能:

  • Pointers to internal procedures (指向内部程序的指针)
  • DO CONCURRENT (做同步)
  • ERROR STOP (错误停止)
  • CONTIGUOUS attribute (连续属性)
  • G0 edit descriptor (G0编辑描述符)
  • BACK optional argument on MAXLOC/MINLOC  (MAXLOC / MINLOC上的BACK可选参数)
  • BLOCK construct  (块构造)
  • Allocation of polymorphic variables  (多态变量的分配)
  • EXECUTE_COMMAND_LINE
  • Vector NORM2 (矢量NORM2)
  • Multiple sourced allocations in a single statement (单个语句中有多个源分配)

可在“ Fortran 2008功能”页面上找到Fortran 2008功能的完整状态。

OpenMP 4.5 TARGET卸载到GPU和多核CPU

Flang已经为多核CPU实现了大多数OpenMP 4.5。默认情况下,使用-fopenmp启用此功能。它在现有的4.5之前的OpenMP运行时API(kmpc)之上实现。

NVIDIA遵循Clang 7.0模型向Flang添加卸载支持。可以通过使用-DFLANG_OPENMP_GPU_NVIDIA = ON构建Flang来启用此支持。

新增功能(2020年7月20日)

我们已经实现了一个新流程,用于管理向此GitHub存储库中的提取请求。通过Flang将LLVM许可给Apache 2.0许可,这些拉取请求不再需要贡献者许可协议。

有关新的请求请求流程的详细信息,请参见社区页面。

Bug修复

我们已经修复了许多Flang问题,并提供了其他错误修复:

  • PGI Fortran编译器的修复
  • 与结构构造函数有关的错误
  • 与终结器相关的错误
  • 修复OpenMP

请查看GitHub问题列表以了解问题的当前状态。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值