pub struct ProQue { /* private fields */ }
Expand description
An all-in-one chimera of the Program
, Queue
, Context
and
(optionally) SpatialDims
types.
Handy when you only need a single context, program, and queue for your project or when using a unique context and program on each device.
All ProQue
functionality is also provided separately by the Context
, Queue
,
Program
, and SpatialDims
types.
§Creation
There are two ways to create a ProQue
:
- [Recommended] Use
ProQue::builder
orProQueBuilder::new()
. - Call
::new
and pass pre-created components.
§Destruction
Now handled automatically. Freely use, store, clone, discard, share among threads… put some on your toast… whatever.
Implementations§
Source§impl ProQue
impl ProQue
Sourcepub fn builder<'b>() -> ProQueBuilder<'b>
pub fn builder<'b>() -> ProQueBuilder<'b>
Returns a new ProQueBuilder
.
This is the recommended way to create a new ProQue
.
Calling ProQueBuilder::build()
will return a new ProQue
.
Sourcepub fn new<D: Into<SpatialDims>>(
context: Context,
queue: Queue,
program: Program,
dims: Option<D>,
) -> ProQue
pub fn new<D: Into<SpatialDims>>( context: Context, queue: Queue, program: Program, dims: Option<D>, ) -> ProQue
Creates a new ProQue from individual parts.
Use ::builder
instead unless you know what you’re doing. Creating
from components associated with different devices or contexts will
cause errors later on.
Sourcepub fn kernel_builder<S>(&self, name: S) -> KernelBuilder<'_>
pub fn kernel_builder<S>(&self, name: S) -> KernelBuilder<'_>
Returns a new KernelBuilder
with the name, program, default queue,
and global work size pre-configured.
Use ::arg
to specify arguments and ::build
to build the kernel.
§Example
let kernel = pro_que.kernel_builder("add")
.arg(&buffer)
.arg(&10.0f32)
.build()?;
See KernelBuilder
documentation for more
Sourcepub fn create_buffer<T: OclPrm>(&self) -> OclResult<Buffer<T>>
pub fn create_buffer<T: OclPrm>(&self) -> OclResult<Buffer<T>>
Returns a new buffer.
The default dimensions and queue from this ProQue
will be used.
The buffer will be filled with zeros upon creation, blocking the current thread until completion.
Use Buffer::builder()
(or BufferBuilder::new()
) for access to the
full range of buffer creation options.
§Errors
This ProQue
must have been pre-configured with default dimensions.
If not, set them with ::set_dims
, or just create a buffer using
Buffer::builder()
instead.
Sourcepub fn buffer_builder<T: OclPrm>(&self) -> BufferBuilder<'_, T>
pub fn buffer_builder<T: OclPrm>(&self) -> BufferBuilder<'_, T>
Returns a new BufferBuilder
with the default queue and length
pre-configured.
Use .fill_val(Default::default())
to fill buffer with zeros.
Use .build()
to create the buffer.
§Panics
This ProQue
must have been pre-configured with default dimensions.
If not, set them with ::set_dims
, or just create a buffer using
Buffer::builder()
instead.
Sourcepub fn set_dims<S: Into<SpatialDims>>(&mut self, dims: S)
pub fn set_dims<S: Into<SpatialDims>>(&mut self, dims: S)
Sets the default dimensions used when creating buffers and kernels.
Sourcepub fn max_wg_size(&self) -> OclResult<usize>
pub fn max_wg_size(&self) -> OclResult<usize>
Returns the maximum workgroup size supported by the device associated
with this ProQue
.
[UNSTABLE]: Evaluate usefulness.
Sourcepub fn dims(&self) -> &SpatialDims
pub fn dims(&self) -> &SpatialDims
Returns the current dims
or panics.
[UNSTABLE]: Evaluate which ‘dims’ method to keep. Leaning towards this version at the moment.
Sourcepub fn dims_result(&self) -> OclResult<&SpatialDims>
pub fn dims_result(&self) -> OclResult<&SpatialDims>
Returns the current dims
or an error.
[UNSTABLE]: Evaluate which ‘dims’ method to keep. Leaning towards the above, panicking version at the moment.
Methods from Deref<Target = Queue>§
Sourcepub fn flush(&self) -> OclResult<()>
pub fn flush(&self) -> OclResult<()>
Issues all previously queued OpenCL commands to the device.
Sourcepub fn finish(&self) -> OclResult<()>
pub fn finish(&self) -> OclResult<()>
Blocks until all commands in this queue have completed before returning.
Sourcepub fn enqueue_marker<Ewl>(&self, ewait: Option<Ewl>) -> OclResult<Event>where
Ewl: ClWaitListPtr,
pub fn enqueue_marker<Ewl>(&self, ewait: Option<Ewl>) -> OclResult<Event>where
Ewl: ClWaitListPtr,
Enqueues a marker command which waits for either a list of events to complete, or all previously enqueued commands to complete.
Sourcepub fn as_core(&self) -> &CommandQueueCore
pub fn as_core(&self) -> &CommandQueueCore
Returns a reference to the core pointer wrapper, usable by functions in
the core
module.
Sourcepub fn device_version(&self) -> OpenclVersion
pub fn device_version(&self) -> OpenclVersion
Returns the cached device version.
Sourcepub fn info(
&self,
info_kind: CommandQueueInfo,
) -> OclCoreResult<CommandQueueInfoResult>
pub fn info( &self, info_kind: CommandQueueInfo, ) -> OclCoreResult<CommandQueueInfoResult>
Returns info about this queue.