3

是否可以在 Halide 中生成包含生成的 OpenCL 代码的文件?我试图从一个目标是 opencl 的 Halide 程序生成 ac 文件,但我在那里看不到任何 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 放入环境变量并在代码 set_target(Target::Debug) 中设置。我在屏幕上看到一堆代码,其中一些是 OpenCL 代码,但我仍然看不到任何内核特定代码。

屏幕上有两行表示内核。应该有什么吗?

OpenCL kernel: /*OpenCL C*/

然后还有一行:

kernel void _at_least_one_kernel(int x) { }

例如,如果我有这样的功能:

gradient(x, y) = x + y;

如果我想以 OpenCL 为目标,该函数是否在内核中?

4

1 回答 1

1

这是我设法从文档中发现的

默认情况下不启用 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() 
)   
于 2015-01-20T09:36:24.720 回答