gpt4 book ai didi

Halide:OpenCL 代码生成

转载 作者:行者123 更新时间:2023-12-04 18:05:19 26 4
gpt4 key购买 nike

是否可以在 Halide 中生成包含生成的 OpenCL 代码的文件?我试图从目标是 opencl 的 Halide 程序生成一个 c 文件,但我在那里没有看到任何 opencl 特定代码。

编辑1:

我特别想看看内核是如何在 Halide 中创建的。像这样的东西:
static char
kernelSourceCode[] =
kernel void test_kernel(int a, int b, __global int *out)
{
out[0] = a + b;
}

编辑2:

好的,我将 HL_DEBUG_CODEGEN=1 放入 env 变量并在代码 set_target(Target::Debug) 中设置。我在屏幕上看到一堆代码,其中一些是 OpenCL 代码,但我仍然看不到任何内核特定代码。

屏幕上有两行指示内核。应该有什么?
OpenCL kernel:
/*OpenCL C*/

然后还有一行:
kernel void _at_least_one_kernel(int x) { }
例如,如果我有这样的功能:
gradient(x, y) = x + y;
如果我想以 OpenCL 为目标,该函数是否在内核中?

最佳答案

这是我从 documentation 中设法发现的

默认情况下不启用 CUDA 或 OpenCL。您必须构造一个 Target 对象,启用其中之一,然后将该目标对象传递给 compile_jit。

Target target = get_host_target();
target.set_feature(Target::OpenCL);
curved.compile_jit(target);

或者类似地,您可以使用 compile_to方法,通过提供正确的目标。
EXPORT void Halide::Func::compile_to(const Outputs & output_files,
std::vector<Argument> args,
const std::string& fn_name,
const Target& target = get_target_from_environment()
)

关于Halide:OpenCL 代码生成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28041646/

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