Clang SYCL 链接器¶
简介¶
此工具作为 SYCL 设备代码链接过程的包装器。该工具的目的是提供一个接口来链接 LLVM IR 格式的 SYCL 设备位码、SPIR-V IR 格式的 SYCL 设备位码和本机二进制对象,然后使用 SPIR-V LLVM 转换器工具对完全链接的设备对象进行处理,生成最终的输出。在链接阶段之后,完全链接的 LLVM IR 格式的设备代码可能会经过几个特定于 SYCL 的最终化步骤,然后才能进行 SPIR-V 代码生成步骤。该工具还将支持提前编译 (AOT) 编译流程。AOT 编译是指在编译时调用后端以生成最终二进制文件的过程,与延迟到应用程序运行时的最终代码生成的即时 (JIT) 编译相反。
用于 SYCL 卸载的设备代码链接存在一些已知的怪癖,这些怪癖使其难以在统一的卸载设置中使用。两个主要问题是:1. 需要对完全链接的 LLVM IR 位码运行多个最终化步骤,以确保符合 SYCL 标准。此步骤是 SYCL 卸载编译流程所特有的。2. SPIR-V LLVM 转换器工具是一个外部工具,因此 SPIR-V IR 代码生成无法作为 LTO 的一部分完成。一旦 SPIR-V 后端可用作可行的 LLVM 后端,就可以消除此限制。
建议使用此工具来解决这些问题。
用法¶
此工具可以与以下选项一起使用。这些选项中的几个将传递给下游工具,如“llvm-link”、“llvm-spirv”等。
OVERVIEW: A utility that wraps around the SYCL device code linking process.
This enables linking and code generation for SPIR-V JIT targets and AOT
targets.
USAGE: clang-sycl-linker [options]
OPTIONS:
--arch <value> Specify the name of the target architecture.
--dry-run Print generated commands without running.
-g Specify that this was a debug compile.
-help-hidden Display all available options
-help Display available options (--help-hidden for more)
--library-path=<dir> Set the library path for SYCL device libraries
--device-libs=<value> A comma separated list of device libraries that are linked during the device link
-o <path> Path to file to write output
--save-temps Save intermediate results
--triple <value> Specify the target triple.
--version Display the version number and exit
-v Print verbose information
-spirv-dump-device-code=<dir> Directory to dump SPIR-V IR code into
-is-windows-msvc-env Specify if we are compiling under windows environment
-llvm-spirv-options=<value> Pass options to llvm-spirv tool
--llvm-spirv-path=<dir> Set the system llvm-spirv path
示例¶
此工具旨在用于针对任何目标卸载工具链时调用。当将 –sycl-link 选项传递给 clang 驱动程序时,驱动程序将调用目标卸载工具链的链接作业,该作业反过来将调用此工具。此工具可用于创建一个或多个完全链接的设备映像,这些映像已准备好进行包装并与主机代码链接,以生成最终的可执行文件。
clang-sycl-linker --triple spirv64 --arch native input.bc