PoCL 1.6,OpenCL标准的独立实现

推出 项目的新版本 PoCL 1.6 (便携式计算语言OpenCL)版本1.6的亮点是对Clang / LLVM 11.0的支持,以及为提高CUDA的性能和功能,与PowerPC的兼容性以及对OpenCL调试的改进而进行的工作。

对于那些不了解PoCL的人,您应该知道它是什么。 可移植的开源实现 (由麻省理工学院许可) OpenCL标准的 (1.2支持某些2.0功能)。 以及作为多设备开源OpenCL实施 (真正的异构)易于移植,该项目的主要目标是通过将兼容OpenCL的设备集成到单个集中协调的平台中来提高它们的互操作性。

此外,关键的长期目标之一是提高使用运行时和编译技术的设备类型上OpenCL程序的性能可移植性。

OpenCL内核编译器基于LLVM,Clang用作OpenCL C的接口。为了提供适当的性能和可移植性,OpenCL内核编译器可以生成组合功能,这些功能可以使用各种硬件资源来并行执行代码。 ,例如VLIW,超标量,SIMD,SIMT,多核和多线程。 支持ICD(可安装客户端驱动程序)驱动程序。 有后端可通过CPU,ASIP(TCE / TTA),基于HSA架构的GPU和NVIDIA GPU(CUDA)提供工作。

PoCL 1.6的主要新功能

PoCL 1.6的新版本突出显示了在编译时启用设备驱动程序来编译此实现的能力,以及将在启动时验证设备的可用性(以前,构建和运行PoCL的系统应该具有相同的控制器支持)。 实现了使用conda软件包管理器来分发PoCL二进制软件包的功能,并具有针对Linux-x86_64和Linux-ppc64le系统的CUDA支持。

另一个突出的变化是对LLVM 11的支持以及使用CPU控制器时调试OpenCL代码的扩展可能性。

此外,需要强调的是,对CUDA后端进行了性能优化,从而大大加快了与使用本地内存(FFT,GEMM)有关的操作。

使用SHOC基准测试的基准测试(现已不断测试)显示,与运行FFT相比,这些优化产生了更好的性能,特别是对于涉及FFT和GEMM等本地内存的基准测试PoCL现在通常可以使用Nvidia专有的OpenCL驱动程序来获得竞争性能。 我们欢迎您为找出并消除其余问题区域的根本原因做出贡献。 我们也欢迎为提高OpenCL 1.2 / 3.0标准的功能覆盖范围做出的贡献。

  • 现在,许多测试中的PoCL性能已经接近NVIDIA专有的OpenCL驱动程序。
  • 添加了HARDENING_ENABLE编译参数,以使编译器选项能够以降低性能的代价生成更安全的libpocl.so。
  • 返回对PowerPC 8/9系统的支持,使用pthread和CUDA设备时,OpenCL实施级别对应于x86_64系统上的CUDA级别。
  • 更改了使用__本地块的CUDA内核的ABI。 升级后,用户需要清除pocl缓存。
  • 删除了对SINGLE_LLVM_LIB构建选项的支持,而不是使用STATIC_LLVM和llvm-config定义要绑定到的库。

最后,如果您想进一步了解此新版本,可以查看详细信息 在原始广告中。 

对于那些有兴趣了解更多有关此实现的人,他们可以咨询 官方网站 其中,您可以在其中找到文档并下载文件。

该项目代码是根据MIT许可分发的,并且该工作在X86_64,MIPS32,ARM v7,AMD HSA APU和具有VLIW架构的各种专用TTA处理器上得到支持。


发表您的评论

您的电子邮件地址将不会被发表。 必填字段标有 *

*

*

  1. 负责数据:MiguelÁngelGatón
  2. 数据用途:控制垃圾邮件,注释管理。
  3. 合法性:您的同意
  4. 数据通讯:除非有法律义务,否则不会将数据传达给第三方。
  5. 数据存储:Occentus Networks(EU)托管的数据库
  6. 权利:您可以随时限制,恢复和删除您的信息。