Previous | Next --- Slide 31 of 63
Back to Lecture Thumbnails
jennaruzekowicz

May have missed this in lecture, but are .vectorize and .parallel part of the language itself? Additionally, is .compute_at also within the language? Or are these implementations we also need to do?

kayvonf

Yes, that is correct. .vectorize(), .parallel(), and compute_at() are all Halide scheduling directives. You should think about them as being part of a mini-language for describing how to schedule.

ecb11

An important implication of the ease of the out.tile... line Kayvon offered in lecture is that we can easily experiment with different traversals of the image to blur, with varied techniques for blocked-decomposition (tiling), vectorized/SIMD evaluation of results (.vectorize), and multi-core execution (.parallel). In doing so, we're able to quickly iterate on workloads and change the work distribution across execution contexts and processors to determine optimal configurations much quicker when provided with a Domain-Specific language like Halide.

ayushaga

The use of Halide does not mean that the programmer no longer has any burden of choice and making the right tiling decision. The programmer must still use his or her intuition to test out different tiling patterns depending on the hardware he/she is given.

terribilis

In the earlier iteration of this program when we didn't have the schedule part. Would the Halide compiler still work, and would it then just compile a generally serial program?

lordpancake

If you think of an automatic scheduler as a "pre-compiler" or part of the compiler, then it's remarkable that the "compiler" is doing so much work, even writing this gray region for you!!

Please log in to leave a comment.