主流编译器是否支持OMPT



版本5.0中的OpenMP规范定义了OMPT接口,以允许外部工具查询OpenMP运行时。

我想尝试一下,但我真的很困惑主流编译器是如何支持这一点的。

  • GCC-11声称对openmp 5.0支持有扩展支持,但关于OMPT,我找不到相应的ompt.h头文件(在我的情况下,Ubuntu包libgcc-11-dev提供了omp.h(。

  • clang-12确实提供了ompt.h(包libomp-12-dev(,但是示例程序的编译失败,第一个错误是unknown type name 'ompt_invoker_t',实际上在ompt.h中找不到这个结构。

我不清楚目前的支持状态。我找不到GCC的确切状态,而clang提供了这些信息https://clang.llvm.org/docs/OpenMPSupport.html我无法从中找出背后的原因,大部分都是完成的。

有人能帮我找到最新的信息或任何提示吗?

上面链接的OMPT示例指的是OMPT的早期阶段(~OpenMP TR6(。在OpenMP 5.0的最终版本之前,界面中的一些细节发生了更改。我目前有一名学生正在更新OMPT示例。

作为OMPT的参考工具,我总是建议查看:

https://github.com/llvm/llvm-project/blob/main/openmp/runtime/test/ompt/callback.h

此工具将始终与OMPT的LLVM实现同步,因为此工具用于CI测试。OMPT头文件已重命名为omp-tools.h(请参阅OpenMP规范(。只是为了方便起见,把文件放在那里。我想我们应该在这个文件中添加一个弃用警告,而不是将副本保留在LLVM中。

关于编译器支持:LLVM和Intel共享其OMPT支持。所有其他基于LLVM的编译器也可能共享OMPT支持。

对于GNU编译器来说,它可以将代码与-lop链接起来,还可以从LLVM中的OMPT支持中获益。请使用ldd检查libomp是否链接到应用程序中,并且没有链接到libgomp。

"大部分完成";意味着除了用于设备构造和设备例程的OMPT之外的所有内容都被认为是实现的。如果您在实现中发现一些问题,请针对LLVM/OpenMP/运行时提交一个错误。

相关内容

  • 没有找到相关文章

最新更新