# Struct ocl::ProQue [−] [src]

    pub struct ProQue { /* fields omitted */ }

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`:

1. [Recommended] Use `ProQue::builder` or `ProQueBuilder::new()`.
2. 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.

## Methods

### `impl ProQue`
[src]

#### `pub fn builder<'b>() -> ProQueBuilder<'b>`
[src]

Returns a new `ProQueBuilder`.

This is the recommended way to create a new `ProQue`.

Calling `ProQueBuilder::build()` will return a new `ProQue`.

#### `pub fn new<D: Into<SpatialDims>>(
context: Context,
queue: Queue,
program: Program,
dims: Option<D>
) -> ProQue`
[src]

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.

#### `pub fn kernel_builder<S>(&self, name: S) -> KernelBuilder where
S: Into<String>,`
[src]

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

ⓘThis example is not tested

    let kernel = pro_que.kernel_builder("add")
       .arg(&buffer)
       .arg(&10.0f32)
       .build()?;

See `KernelBuilder` documentation for more

#### `pub fn create_buffer<T: OclPrm>(&self) -> OclResult<Buffer<T>>`
[src]

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.

#### `pub fn buffer_builder<T: OclPrm>(&self) -> BufferBuilder<T>`
[src]

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.

#### `pub fn set_dims<S: Into<SpatialDims>>(&mut self, dims: S)`
[src]

Sets the default dimensions used when creating buffers and kernels.

#### `pub fn max_wg_size(&self) -> OclResult<usize>`
[src]

Returns the maximum workgroup size supported by the device associated with this `ProQue`.

[UNSTABLE]: Evaluate usefulness.

#### `pub fn queue(&self) -> &Queue`
[src]

Returns a reference to the queue associated with this ProQue.

#### `pub fn context(&self) -> &Context`
[src]

Returns the contained context.

#### `pub fn program(&self) -> &Program`
[src]

Returns the current program build.

#### `pub fn dims(&self) -> &SpatialDims`
[src]

Returns the current `dims` or panics.

[UNSTABLE]: Evaluate which 'dims' method to keep. Leaning towards this version at the moment.

#### `pub fn dims_result(&self) -> OclResult<&SpatialDims>`
[src]

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>

#### `pub fn flush(&self) -> OclResult<()>`
[src]

Issues all previously queued OpenCL commands to the device.

#### `pub fn finish(&self) -> OclResult<()>`
[src]

Blocks until all commands in this queue have completed before returning.

#### `pub fn enqueue_marker<Ewl>(&self, ewait: Option<Ewl>) -> OclResult<Event> where
Ewl: ClWaitListPtr,`
[src]

Enqueues a marker command which waits for either a list of events to complete, or all previously enqueued commands to complete.

#### `pub fn as_core(&self) -> &CommandQueueCore`
[src]

Returns a reference to the core pointer wrapper, usable by functions in the `core` module.

#### `pub fn context(&self) -> Context`
[src]

Returns a copy of the Context associated with this queue.

#### `pub fn device(&self) -> Device`
[src]

Returns the `OpenCL` device associated with this queue.

#### `pub fn device_version(&self) -> OpenclVersion`
[src]

Returns the cached device version.

#### `pub fn info(
&self,
info_kind: CommandQueueInfo
) -> OclCoreResult<CommandQueueInfoResult>`
[src]

Returns info about this queue.

## Trait Implementations

### `impl Clone for ProQue`
[src]

#### `fn clone(&self) -> ProQue`
[src]

Returns a copy of the value. Read more

#### `fn clone_from(&mut self, source: &Self)`
1.0.0
[src]

Performs copy-assignment from `source`. Read more

### `impl Debug for ProQue`
[src]

#### `fn fmt(&self, __arg_0: &mut Formatter) -> Result`
[src]

Formats the value using the given formatter. Read more

### `impl MemLen for ProQue`
[src]

#### `fn to_len(&self) -> usize`
[src]

Returns the exact number of elements of a volume of memory (equivalent to `Vec::len()`). Read more

#### `fn to_len_padded(&self, incr: usize) -> usize`
[src]

Returns the length of a volume of memory padded to the next multiple of `incr`. Read more

#### `fn to_lens(&self) -> [usize; 3]`
[src]

Returns the exact lengths of each dimension of a volume of memory.

### `impl WorkDims for ProQue`
[src]

#### `fn dim_count(&self) -> u32`
[src]

Returns the number of dimensions defined.

#### `fn to_work_size(&self) -> Option<[usize; 3]>`
[src]

Returns an array representing the amount of work to be done by a kernel. Read more

#### `fn to_work_offset(&self) -> Option<[usize; 3]>`
[src]

Returns an array representing the offset of a work item or memory location. Read more

### `impl Deref for ProQue`
[src]

#### `type Target = Queue`

The resulting type after dereferencing.

#### `fn deref(&self) -> &Queue`
[src]

Dereferences the value.

# Help

## Keyboard Shortcuts

`?`
  Show this help dialog
`S`
  Focus the search field
`↑`
  Move up in search results
`↓`
  Move down in search results
`↹`
  Switch tab
`⏎`
  Go to active search result
`+`
  Expand all sections
`-`
  Collapse all sections

## Search Tricks

Prefix searches with a type followed by a colon (e.g. `fn:`) to restrict the search to a given type.

Accepted types are: `fn`, `mod`, `struct`, `enum`, `trait`, `type`, `macro`, and `const`.

Search functions by type signature (e.g. `vec -> usize` or `* -> vec`)