4

我想开始使用SYCL,但到目前为止我发现需要安装ComputeCpp,它只支持Ubuntu、CentOS和Windows。在 MacOS Catalina 上使用 SYCL 的替代方法是什么?

4

2 回答 2

5

概括

目前,多个 SYCL 实现支持 MacOS,尽管它们仅支持 CPU 设备。

GPU 设备支持不可用,因为 Apple 不支持 Linux 或 Windows 上可用的后端依赖项。

细节

triSYCL支持 MacOS,但仅支持 CPU 执行。我经常使用它。您可能需要切换 C++ 编译器,因为本机工具链可能不起作用。 https://github.com/triSYCL/triSYCL

hipSYCL还支持 CPU 执行,应该可以在 MacOS 上运行。 拉取请求 #271应该有详细信息。

我们做了一些工作来让 Intel DPC++ 在 MacOS 上构建(请参阅问题 #258),但还没有。问题 #982正在跟踪 MacOS 支持。

我经常在虚拟机内部的 Mac 笔记本电脑上使用所有适用于 Linux 的 SYCL 编译器,但这仍然是仅 CPU 执行。

可能性

在 MacOS 上获得对 SYCL 的 GPU 支持的最有希望的途径是转换为Metal Shader Language (MSL),因为 Apple OpenCL 不支持 SPIR-V。这可以通过SPIRV-Cross完成,但据我所知,没有人在任何 SYCL 编译器中实现它。

请注意,将内核从 SPIR-V 转换为 MSL 只是答案的一部分。另一个要求是对内核加载等的运行时支持。其中一些问题在https://github.com/bobpepin/opencl-osx中很明显,尽管这只是一个问题陈述,而不是解决方案。

如果 Apple 支持 CUDA(不太可能,基于https://gizmodo.com/apple-and-nvidia-are-over-1840015246),那么 hipSYCL 或 DPC++ 的 PTX 后端可能会工作,但我不知道使用支持(ed)CUDA 的旧 Mac 进行的任何尝试。

于 2020-07-04T18:26:29.410 回答
1

ComputeCpp 是几个 SYCL 实现之一,完整列表在这里

目前没有一个实现支持 macOS,这主要是因为 Apple 计划放弃对 OpenCL 的支持,只提供对 Metal 作为其硬件接口的支持。但是,您可以使用 Linux 双重引导您的 Apple 机器,并使用它来开发任何 SYCL 实现(包括 ComputeCpp)。

于 2020-06-01T07:55:59.797 回答