Halide: невозможно напечатать в генераторе - !function_takes_user_context(op-›name)

Когда я пытаюсь напечатать() выражение внутри генератора, я не могу построить:

Internal Error at /home/halidenightly/build_bot/worker/linux-64-gcc53-800/halide/src/CodeGen_OpenCL_Dev.cpp:229 triggered by user code at :
Condition failed: !function_takes_user_context(op->name):
Aborted (core dumped)

Я не понимаю это сообщение об ошибке, что это?

РЕДАКТИРОВАТЬ 1: теперь я включил более полный код ниже.

#include "Halide.h"

using namespace Halide;

class SimpleGenerator : public Generator<SimpleGenerator>{
public:

    Input<Buffer<uint8_t >> source{"src", 2};
    Input<Buffer<uint8_t >> reference{"ref", 2};
    Output<Buffer<uint8_t >> output{"out", 2};

    void generate(){
        intermediate(x, y) = print(source(x, y), "source at (", x,", ", y, ")") + print(reference(x, y));
        output(x, y) = intermediate(x, y);
    }

    void schedule(){
        Var xo("xo"), yo("yo"), xi("xi"), yi("yi");
        if (get_target().has_gpu_feature()) {
            std::cout << "Using GPU schedule\n";
            output.gpu_tile(x, y, xo, yo, xi, yi, 16, 16, TailStrategy::GuardWithIf);
        } else {
            std::cout << "Using CPU schedule\n";
        }
    }

private:
    Func intermediate{"intermediate"};
    Var x{"x"}, y{"y"};
};

HALIDE_REGISTER_GENERATOR(SimpleGenerator, simple_generator)

EDIT 2: я сузил проблему; эта проблема возникает при попытке настроить GPU с помощью OpenCL. Помнится, я где-то читал, что печать Halide Exprs на графическом процессоре глючит. Кто-нибудь знает, как это решить?


person Andrew Jong    schedule 29.01.2020    source источник


Ответы (1)


Синтаксис у вас вроде как в учебнике - урок 04

Func f; f(x, y) = sin(x) + print(cos(y), "<- this is cos(", y, ") when x =", x);

Не могли бы вы рассказать больше о «конечной» функции, чтобы получить больше контекста? Может быть, это может быть что-то до этого

person Tal Klinger    schedule 30.01.2020
comment
Спасибо за ваш ответ! Я отредактировал свой оригинальный пост. Я считаю, что проблема вызвана OpenCL. Любой совет? - person Andrew Jong; 01.02.2020