NVIDIA编译器工程师上周制定了该公司在LLVM Clang编译器中实现OpenACC 3.3卸载支持的计划。
Erich Keane和NVIDIA制定了他们的初步计划,他们希望如何在Clang内提供OpenACC 3.3卸载支持。OpenACC是由NVIDIA与PGI和Cray为C/C++/Fortran开发的并行计算标准。几年来,美国能源部和其他部门一直致力于CLACC,用Clang和LLVM以及“Flacc”作为Flang的Fortran OpenACC实现来支持OpenACC。不过,这种由NVIDIA主导的实现方式会有所不同。LLVM的OpenMP代码也可以进行一些代码共享。
关于NVIDIA针对Clang的OpenACC实施策略:
“短期内,我们将通过实现指令的解析和语义分析来启动Clang工作,该指令由-fopenacc标志启用,该标志是为GCC兼容性而选择的。我们还将实现一个临时标志来控制__OPENACC宏覆盖(当我们完成实现时将删除),这将允许使用Clang编译现有程序,以利用我们的语义分析检查。
我们认为这是最好的开始方式,原因有几个。首先,它允许我们在共享组件的Flang设计和工程继续进行的同时取得必要的进展,这样我们就可以帮助指导这项工作,并在基础设施成熟时开始使用和实施。我们相信这将缩短在克兰开发OpenACC所需的时间。
其次,它允许我们按照标准实现OpenACC语义分析规则,这样Clang就可以用来验证现有的程序,从而变得更加有用。这是可能的,因为OpenACC指令被视为编译器的高级提示,因此忽略它们是一种兼容的实现模型,尽管我们显然打算在卸载分析可用时立即添加它。
我们打算利用NVHPC产品中的现有测试,并且开发将遵循LLVM对lit测试的约定,以及使用为CLACC编写的lit测试。“
NVIDIA表示,他们致力于LLVM/Cang中的上游OpenACC支持:
“作为一家公司,NVIDIA致力于OpenACC的成功,这一点从我们参与OpenACC标准化工作和在Flang实施OpenACC的承诺中可以清楚地看出,我们同样致力于在多个编译器中推广其使用。我们打算通过资助多个编译器工程师,继续在Flang和Clang永久开发和支持OpenACCing开发人员。我们致力于提供这种支持。
。。。
虽然我们还没有实现,但我们打算在Clang完全“上游”实现上述实现,在那里它将受到代码所有者和其他贡献者的广泛审查和验证。此外,作为属性代码所有者(以及作为其他贡献者的主要评审员),我打算确保贡献的每一位代码都符合或超过LLVM和Clang编码标准和质量水平。“
那些想了解更多关于NVIDIA的OpenACC卸载LLVM/Cang的希望/计划的人可以通过
LLVM话语
.