gpt4 book ai didi

gcc - 编译 OpenCL 应用程序和使用可用编译器选项的正确方法

转载 作者:行者123 更新时间:2023-12-01 22:11:24 25 4
gpt4 key购买 nike

我是 OpenCL 方面的新手。

编译 OpenCL 项目的最佳方法是什么?

  1. 使用受支持的编译器(GCCClang):

    当我们使用编译器时像gccclang,我们如何控制这些选项?他们是吗必须在源代码中设置,或者与正常的类似编译流程我们可以在命令行上传递它们。看着Khornos-Manual-1.2 ,为 cl_int clBuildProgram 提供了一些用于优化的选项。 :

    gcc|clang -O3 -I<INCLUDES> OpenCL_app.c -framework OpenCL OPTION -lm

    实际上,我尝试了这个并收到了错误:

    gcc: error: unrecognized command line option '<OPTION>'
  2. 或者,使用openclc:

    我见过有人使用openclc来编译一个Makefile

我想知道哪个是最好的方法(如果 实际上有两种不同的方式),以及我们如何控制 使用不同的编译时选项。

最佳答案

您可能已经意识到,但重申一下很重要。 OpenCL 标准包含两件事:

  1. OpenCL C 语言和编程模型(我认为最近的标准包括一些 C++)
  2. 用于管理设备的 OpenCL 主机库

gccclang 是 OpenCL 项目主机端的编译器。因此,无法使用主机编译器为 OpenCL 设备代码编译提供编译器选项,因为它们甚至不知道任何 OpenCL。除了 clang 之外,还有一个接受 OpenCL 设备代码的标志,即包含内核的 .cl 文件。这样,您可以使用 clang 并提供标志和选项(如果我没记错的话),但现在您将拥有 llvm IR 或 SPIR 输出,而不是设备可执行对象。然后,您可以使用设备的运行时环境(opencl 驱动程序)将 SPIR 对象加载到设备。您可以查看这些链接:

Using Clang to compile kernels

Llvm IR generation

SPIR

另一种选择是使用目标平台提供的工具。每个声称支持opencl的供应商都应该有一个运行时环境。通常,他们有单独的 CLI 工具来编译 OpenCL 设备代码。在你的情况下(我猜)你有来自Apple的驱动程序,因此你有openclc

Intel CLI as an example

现在回答你的主要问题(编译 opencl 的最佳方法)。这取决于你想做什么。您没有具体说明您有什么样的要求,所以我不得不猜测。

如果您想在没有宿主程序的情况下进行离线编译,上述注意事项将对您有所帮助。否则,您必须使用 OpenCL 库并为内核进行在线编译,这通常是需要可移植性的产品的首选。因为如果您在程序开始时编译所有内核,则可以直接使用提供的环境,而无需为每个目标平台提供库。

因此,如果您有一个 OpenCL 项目,您必须决定如何编译。如果您确实想使用通用标志并且不依赖第三方工具。我建议你有一个类来构建你的内核并提供你想要的标志。

关于gcc - 编译 OpenCL 应用程序和使用可用编译器选项的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43238587/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com