我正在考虑使用 intel sycl 和 pocl 构建 SYCL 和 OpenCL 环境,方法是提前编译并在 ARM CPU 板上运行它们。
理论上,我认为如果 intel sycl 支持交叉编译,这是可能的。你能告诉我一些意见或建议。
使用 ComputeCpp(Codeplay 的 SYCL 实现)可以很容易地使用 CMake 和正确的工具链文件来做到这一点。ComputeCpp SDK中有一个 Arm 工具链文件,位于 computecpp-sdk/cmake/toolchains/arm-gcc-poky.cmake,您可以在以下示例命令中使用它。您需要用自己的路径替换每条路径。例如,使用此命令,您可以构建 computecpp-sdk 源代码,生成的二进制文件将在目标 arm 设备上运行。在二进制文件上使用 file Linux 命令将验证已构建的二进制文件是否是您目标的正确二进制文件类型。请注意,当使用上面引用的 ComputeCpp SDK 中的 FindComputeCpp.cmake 文件时,这将最有效。
cmake -DComputeCpp_DIR=/path/to/computecpp-ce-xyz-arm \
-DComputeCpp_HOST_DIR=/path/to/computecpp-ce-xyz-x86 \
-DOpenCL_LIBRARY=path/to/libOpenCL.so.1.2 \
-DOpenCL_INCLUDE_DIR=/path/to/opencl/include \
-DCMAKE_TOOLCHAIN_FILE=../computecpp-sdk/cmake/toolchains/gcc-generic.cmake \
-DCOMPUTECPP_BITCODE=spir64 ..