Queues, devices and events

Overview

batchlas::Queue, batchlas::Device, batchlas::Event and SYCL interop.

String conversions and other helpers: Queues, devices and events: helpers.

Functions

◆ sycl_queue()

sycl::queue & batchlas::sycl_queue ( const Queue & ctx)

The sycl::queue BatchLAS submits this Queue's work on.

A reference to the live queue, not a copy: work submitted to it is ordered against BatchLAS's own work by the queue itself (for the default in-order Queue, after everything already submitted). Its context and device are the ones BatchLAS allocates against, so get_context() on it is the right context for USM that BatchLAS should read.

Parameters
ctxthe Queue; must not be moved-from
Returns
the underlying queue. Do not destroy it, hold it past ctx's lifetime, or submit to it from another thread.

◆ sycl_event()

sycl::event batchlas::sycl_event ( const Event & event)

The sycl::event underlying a BatchLAS Event.

For handing BatchLAS's work to SYCL code: depends_on(), wait_and_throw(), a barrier on another queue.

Parameters
eventthe BatchLAS event
Returns
the underlying event, or a default-constructed (already complete) sycl::event when event is default-constructed or moved-from

◆ event_from_sycl()

Event batchlas::event_from_sycl ( sycl::event event)

Wrap a foreign sycl::event as a BatchLAS Event, so BatchLAS work can be ordered after work BatchLAS did not submit, with no host synchronisation.

sycl::event mine = my_queue.submit(...);
ctx.enqueue(e); // ctx now runs after mine, no host wait
batchlas::potrf(ctx, A, ...);
Event event_from_sycl(sycl::event event)
Wrap a foreign sycl::event as a BatchLAS Event, so BatchLAS work can be ordered after work BatchLAS d...
Completion handle of enqueued work, returned by every entry point.

In the other direction, sycl_event(ctx.get_event()) hands another queue an event to depend on.

Parameters
eventthe foreign event
Returns
an Event that Queue::enqueue() accepts
Precondition
Both queues live in the same SYCL context.

Enumerations

◆ Policy

enum class batchlas::Policy
strong

Synchronous or asynchronous execution policy.

Enumerator
SYNC 

Wait for completion.

ASYNC 

Return after enqueueing.

Definition at line 35 of file sycl-device-queue.hh.

◆ DeviceType

enum class batchlas::DeviceType
strong

The kind of SYCL device.

Enumerator
CPU 

A CPU device.

GPU 

A GPU device.

ACCELERATOR 

An accelerator device.

HOST 

The SYCL host device.

NUM_DEV_TYPES 

Number of device types (not a device type).

Definition at line 43 of file sycl-device-queue.hh.

◆ Vendor

enum class batchlas::Vendor
strong

Device vendor, parsed from the SYCL vendor string by str_to_vendor().

Enumerator
AMD 

AMD.

ARM 

Arm.

INTEL 

Intel.

NVIDIA 

NVIDIA.

APPLE 

Apple (Apple-silicon GPUs through AdaptiveCpp Metal).

OTHER 

Any other vendor.

Definition at line 54 of file sycl-device-queue.hh.

◆ DeviceProperty

enum class batchlas::DeviceProperty
strong

A device property queryable with Device::get_property(); each maps to the SYCL sycl::info::device descriptor of the same name.

Enumerator
MAX_WORK_GROUP_SIZE 

Maximum work-group size.

MAX_CLOCK_FREQUENCY 

Maximum clock frequency (MHz).

MAX_COMPUTE_UNITS 

Number of compute units.

MAX_MEM_ALLOC_SIZE 

Largest single allocation (bytes).

GLOBAL_MEM_SIZE 

Global memory size (bytes).

LOCAL_MEM_SIZE 

Local (shared) memory per work-group (bytes).

MAX_NUM_SUB_GROUPS 

Maximum sub-groups per work-group.

MAX_SUB_GROUP_SIZE 

Largest supported sub-group size; see Device::supports_sub_group_size().

MEM_BASE_ADDR_ALIGN 

Base address alignment (bits).

GLOBAL_MEM_CACHE_LINE_SIZE 

Global memory cache line (bytes).

GLOBAL_MEM_CACHE_SIZE 

Global memory cache size (bytes).

NUMBER_OF_PROPERTIES 

Number of properties (not a property).

Definition at line 149 of file sycl-device-queue.hh.

Topics

 Queues, devices and events: helpers
 String conversions and device predicates.

Files

file  include/batchlas/sycl_interop.hh
 SYCL interop: batchlas::Queue and batchlas::Event to and from sycl::queue and sycl::event.
file  include/batchlas/util/sycl-device-queue.hh
 batchlas::Device, batchlas::Event and batchlas::Queue: where work runs and how it is ordered.

Classes

struct  batchlas::Device
 A handle to one SYCL device: its type and its index among devices of that type. More...
struct  batchlas::Event
 Completion handle of enqueued work, returned by every entry point. More...
struct  batchlas::Queue
 Where BatchLAS work runs: a device, a backend, an ordered SYCL queue and a workspace arena. More...