Tried this tutorial https://halide-lang.org/tutorials/tutorial_lesson_11_cross_compilation.html on x86 host machine (Ubuntu 20.04) but for RISC-V target architecture. Unfortunately, there is an exception from IR.cpp. The exception appears only when .vectorize(x, 16)
is applied, so problem is somewhere in RISC-V Vectorization support. Any ideas how to debug this?
Internal Error at /home/dkurt/Halide/src/IR.cpp:272 triggered by user code at : Condition failed: lanes > 1: Ramp of lanes <= 1
Everything is OK locally for x86 target.
#include "Halide.h"
using namespace Halide;
int main(int argc, char** argv) {
Func brighter;
Var x, y;
Param<uint8_t> offset;
ImageParam input(type_of<uint8_t>(), 2);
std::vector<Argument> args(2);
args[0] = input;
args[1] = offset;
brighter(x, y) = input(x, y) + offset;
brighter.bound(x, 0, 64).bound(y, 0, 64);
brighter.vectorize(x, 16).parallel(y);
Target target;
target.os = Target::Linux;
target.arch = Target::RISCV;
target.bits = 64;
std::vector<Target::Feature> features;
features.push_back(Target::RVV);
target.set_features(features);
try {
brighter.compile_to_static_library("compiled", args, "brighter", target);
} catch(Halide::InternalError& ex) {
std::cout << ex.what() << std::endl;
}
}
Solved by switching to a custom branch. See https://github.com/halide/Halide/issues/7070.