Halide Tutorial 01
x+yの加算関数と、画像のx座標とy座標のindexを加算するテストを作成するチュートリアル。 リポジトリの中のtutorialのコードにはわかりやすいコメントがいっぱい乗っているが、見返しやすいように最低限動く部分を抜き出してみた。 演算を定義してFuncに登録して解像度を指定する。 Hardware依存の部分の記述は今後のチュートリアルかな?
#include "Halide.h" #include <stdio.h> int main(int argc, char **argv) { Halide::Func gradient; Halide::Var x, y; Halide::Expr e = x + y; gradient(x, y) = e; Halide::Buffer<int32_t> output = gradient.realize(800, 600); // Let's check everything worked, and we got the output we were // expecting: for (int j = 0; j < output.height(); j++) { for (int i = 0; i < output.width(); i++) { // We can access a pixel of an Buffer object using similar // syntax to defining and using functions. if (output(i, j) != i + j) { printf("Something went wrong!\n" "Pixel %d, %d was supposed to be %d, but instead it's %d\n", i, j, i+j, output(i, j)); return -1; } } } printf("Success!\n"); return 0; }
g++ lesson_01*.cpp -g -I ../include -L ../bin -lHalide -lpthread -ldl -o lesson_01 -std=c++11 LD_LIBRARY_PATH=../bin ./lesson_01