3

生成された OpenCL コードを含むファイルを Halide で生成することは可能ですか? 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 を env 変数に入れ、コード set_target(Target::Debug) に設定します。画面にたくさんのコードが表示されました。そのうちのいくつかは OpenCL コードでしたが、カーネル固有のコードはまだ表示されません。

カーネルについて示す 2 つの行が画面に表示されます。何かあるはずですか?

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 オブジェクトを構築し、それらの 1 つを有効にしてから、そのターゲット オブジェクトを 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 に答える