You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
dgajaria-ADI edited this page Nov 20, 2019
·
7 revisions
The following is the simplest program that does something interesting on the GPU. It uses JIT compilation.
#include<Halide.h>
#include<stdio.h>intmain(int argc, char **argv) {
// Define a gradient function.
Halide::Func f;
Halide::Var x, y, xo, xi, yo, yi;
f(x, y) = x + y;
// Schedule f on the GPU in 16x16 tiles.
f.gpu_tile(x, y, xo, yo, xi, yi, 16, 16);
// Construct a target that uses the GPU.
Halide::Target target = Halide::get_host_target();
// Enable OpenCL as the GPU backend.
target.set_feature(Halide::Target::OpenCL);
// Enable debugging so that you can see what OpenCL API calls we do.
target.set_feature(Halide::Target::Debug);
// JIT-compile the pipeline.
f.compile_jit(target);
// Run it.
Halide::Buffer<int> result = f.realize(32, 32);
// Print the result.for (int y = 0; y < result.height(); y++) {
for (int x = 0; x < result.width(); x++) {
printf("%3d ", result(x, y));
}
printf("\n");
}
return0;
}