dpctl.SyclContext
- class dpctl.SyclContext(arg=None)
- A Python wrapper for the sycl::context C++ class. - There are multiple ways to create a - dpctl.SyclContextobject:- Invoking the constructor with no arguments creates a context using the default selector. 
 - Example:
- import dpctl # Create a default SyclContext ctx = dpctl.SyclContext() print(ctx.get_devices()) 
 - Invoking the constructor with a specific filter string that creates a context for the device corresponding to the filter string. 
 - Example:
- import dpctl # Create SyclContext for a gpu device ctx = dpctl.SyclContext("gpu") d = ctx.get_devices()[0] assert(d.is_gpu) 
 - Invoking the constructor with a - dpctl.SyclDeviceobject creates a context for that device.
 - Example:
- import dpctl # Create a level zero gpu device d = dpctl.SyclDevice("level_zero:gpu") ctx = dpctl.SyclContext(d) d = ctx.get_devices()[0] assert(d.is_gpu) 
 - Invoking the constructor with a list of - dpctl.SyclDeviceobjects creates a common context for all the devices. This constructor call is especially useful when creation a context for multiple sub-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) assert(len(ctx.get_devices) == len(sub_devices)) 
 - Invoking the constructor with a named - PyCapsulewith name “SyclContextRef” that carries a pointer to a- sycl::contextobject. The capsule will be renamed upon successful consumption to ensure one-time use. A new named capsule can be constructed by using- dpctl.SyclContext._get_capsule()method.
 - Parameters:
- arg (optional) – Defaults to - None. The argument can be a selector string, a- dpctl.SyclDeviceinstance, a- listof- dpctl.SyclDeviceobjects, or a named- PyCapsulecalled “SyclContextRef”.
- Raises:
- MemoryError – If the constructor could not allocate necessary temporary memory. 
- SyclContextCreationError – If the - dpctl.SyclContextobject creation failed.
- TypeError – If the list of - dpctl.SyclDeviceobjects was empty, or the input capsule contained a null pointer or could not be renamed.
 
 - Attributes: - The number of sycl devices associated with the - dpctl.SyclContextinstance.- Public methods: - Returns the address of the - DPCTLSyclContextRefpointer as a- size_t.- Returns the list of - dpctl.SyclDeviceobjects associated with- dpctl.SyclContextinstance.- Private methods: - Returns a copy of the underlying - sycl::contextpointer as a void pointer inside a named- PyCapsulethat has the name SyclContextRef.
Attributes
- SyclContext.device_count
- The number of sycl devices associated with the - dpctl.SyclContextinstance.- Returns:
- Number of devices associated with the context. 
- Return type:
- int
- Raises:
- ValueError – If - DPCTLContext_DeviceCountled to a failure.
 
Public methods
- dpctl.SyclContext.addressof_ref(self)
- Returns the address of the - DPCTLSyclContextRefpointer as a- size_t.- Returns:
- The address of the - DPCTLSyclContextRefobject used to create this- dpctl.SyclContextcast to a- size_t.
- Return type:
- int
 
- dpctl.SyclContext.get_devices(self)
- Returns the list of - dpctl.SyclDeviceobjects associated with- dpctl.SyclContextinstance.- Returns:
- A - listof- dpctl.SyclDeviceobjects that belong to this context.
- Return type:
- list
- Raises:
- ValueError – If the - DPCTLContext_GetDevicescall returned- NULLinstead of a- DPCTLDeviceVectorRefobject.
 
Private methods
- dpctl.SyclContext._get_capsule(self)
- Returns a copy of the underlying - sycl::contextpointer as a void pointer inside a named- PyCapsulethat has the name SyclContextRef. The ownership of the pointer inside the capsule is passed to the caller, and pointer is deleted when the capsule goes out of scope.- Returns:
- A capsule object storing a copy of the - sycl::contextpointer belonging to thus- dpctl.SyclContextinstance.
- Return type:
- pycapsule
- Raises:
- ValueError – If the - DPCTLContext_Copyfails to copy the- sycl::contextpointer.