Вложенность печатных циклов для Halide::sum не эквивалентна оптимальной, как написано в учебник.
Этот код предоставляет отдельные циклы для нулевой инициализации и суммирования.
Halide::Func f("f");
Halide::Var x("x");
Halide::RDom r(0, 3);
f(x) = Halide::sum(r + x);
f.print_loop_nest();
f.realize(10);
выход:
produce f:
for x:
produce sum:
for x:
sum(...) = ...
for x:
for r4:
sum(...) = ...
consume sum:
f(...) = ...
Можно ли плавить эти петли или это не влияет на производительность? Спасибо!
Обновление: слияние выглядит следующим образом:
produce f:
for x:
produce sum:
for x:
sum(...) = ...
for r4:
sum(...) = ...
consume sum:
f(...) = ...