dpctl.SyclQueue

class dpctl.SyclQueue(*args, **kwargs)

Python class representing sycl::queue.

There are multiple ways to create a dpctl.SyclQueue object:

  • Invoking the constructor with no arguments creates a context using the default selector.

Example:
import dpctl

# Create a default SyclQueue
q = dpctl.SyclQueue()
print(q.sycl_device)
  • Invoking the constructor with specific filter selector string that creates a queue for the device corresponding to the filter string.

Example:
import dpctl

# Create in-order SyclQueue for either gpu, or cpu device
q = dpctl.SyclQueue("gpu,cpu", property="in_order")
print([q.sycl_device.is_gpu, q.sycl_device.is_cpu])
Example:
import dpctl

d = dpctl.SyclDevice("gpu")
q = dpctl.SyclQueue(d)
ctx = q.sycl_context
print(q.sycl_device == d)
print(any([ d == ctx_d for ctx_d in ctx.get_devices()]))
Example:
import dpctl

# Create a CPU device using the opencl driver
cpu_d = dpctl.SyclDevice("opencl:cpu")
# Partition the CPU device into sub-devices with two cores each.
sub_devices = cpu_d.create_sub_devices(partition=2)
# Create a context common to all the sub-devices.
ctx = dpctl.SyclContext(sub_devices)
# create a queue for each sub-device using the common context
queues = [dpctl.SyclQueue(ctx, sub_d) for sub_d in sub_devices]
  • Invoking the constructor with a named PyCapsule with the name “SyclQueueRef” that carries a pointer to a sycl::queue object. The capsule will be renamed upon successful consumption to ensure one-time use. A new named capsule can be constructed by using dpctl.SyclQueue._get_capsule() method.

Parameters:
  • ctx (dpctl.SyclContext, optional) – Sycl context to create dpctl.SyclQueue from. If not specified, a single-device context will be created from the specified device.

  • dev (str, dpctl.SyclDevice, capsule, optional) –

    Sycl device to create dpctl.SyclQueue from. If not specified, sycl device selected by sycl::default_selector is used. The argument must be explicitly specified if ctxt argument is provided.

    If dev is a named PyCapsule called “SyclQueueRef” and ctxt is not specified, dpctl.SyclQueue instance is created from foreign sycl::queue object referenced by the capsule.

  • property (str, tuple(str), list(str), optional) – Defaults to None. The argument can be either “default”, “in_order”, “enable_profiling”, or a tuple containing these.

Raises:
  • SyclQueueCreationError – If the dpctl.SyclQueue object creation failed.

  • TypeError – In case of incorrect arguments given to constructors, unexpected types of input arguments, or in the case the input capsule contained a null pointer or could not be renamed.

Methods

addressof_ref()

Returns the address of the C API DPCTLSyclQueueRef pointer as integral value of type size_t.

get_sycl_context()

get_sycl_device()

mem_advise(mem, count, advice)

memcpy(dest, src, count)

Copy memory from src to dst

memcpy_async(dest, src, count[, dEvents])

Copy memory from src to dst

prefetch(mem[, count])

print_device_info()

Print information about the SYCL device associated with this queue.

submit(kernel, args, gS[, lS, dEvents])

Submit dpctl.program.SyclKernel for execution.

submit_async(kernel, args, gS[, lS, dEvents])

Asynchronously submit dpctl.program.SyclKernel for execution.

submit_barrier([dependent_events])

Submits a barrier to this queue.

wait()

Attributes

backend

Returns the backend_type enum value for this queue.

driver_version

Returns the driver version for the device associated with this queue.

has_enable_profiling

True if SyclQueue was constructed with "enabled_profiling" property, False otherwise.

is_in_order

True if SyclQueue` is in-order, False if it is out-of-order.

name

Returns the device name for the device associated with this queue.

sycl_context

Returns SyclContext underlying this queue.

sycl_device

Returns SyclDevice targeted by this queue.