syclacademy

SYCL Academy

In Order Queue


In this exercise you will learn how to create a fixed data flow using an in-order queue.


Exercise queue_benchmarking

Your old coworker is lazy, and has enqueued all the kernels in the same in-order queue. Performance is poor as kernels cannot execute concurrently. Your goal is to improve it:

Exercise vector_add

1.) In order queue with buffer/accessor model

Using the application from the “Data and Dependencies” exercise which uses the buffer/accessor model convert the queue to in-order using the property::queue::in_order property, converting the data flow graph to a fixed execution order.

Feel free to have the kernel functions execute in any order you like providing the necessary dependencies described in the “Data and Dependencies” exercise are still met.

2.) In order queue with USM model

Now do the same using the application from the “Data and Dependencies” exercise which uses the USM model, again converting the queue to in-order, converting the data flow graph to a fixed execution order.

Again feel free to have the kernel functions execute in any order you like providing the necessary dependencies described in the “Data and Dependencies” exercise are still met.

Note that in the USM model when using an in-order queue it is no longer necessary to chain commands using events.

Build and execution hints

For DevCloud via JupiterLab follow these instructions.

For DPC++: instructions.

For AdaptiveCpp: instructions.