Module ocl::raw [] [src]

Thin wrappers for the OpenCL FFI functions and types.

The layer between the metal and the soft fuzzy parts...

Allows access to OpenCL FFI functions with a minimal layer of abstraction providing safety and convenience. Using functions in this module is only recommended for use when functionality has not yet been implemented on the 'standard' ocl interfaces although the 'raw' and 'standard' interfaces are all completely interoperable (and generally feature-equivalent).

Object pointers can generally be shared between threads except for kernel. See clSetKernelArg documentation.

Even Lower Level: cl_h

Not as raw as...

If there's still something missing, or for some reason you need direct FFI access, use the functions in the cl_h module.

Performance

Performance between all three levels of interface, cl_h, raw, and the standard types, is virtually identical for non-trival uses (if not, file an issue).

Safety

At the time of writing, some functions still may break Rust's usual safety promises and have not been comprehensively tested or evaluated. Please file an issue if you discover something!

Panics

[FIXME]: NEEDS UPDATE: All functions will panic upon OpenCL error. This will be changing over time. Certain errors will eventually be returned as an Error type instead.

Official Documentation

OpenCL 1.2 SDK Reference: https://www.khronos.org/registry/cl/sdk/1.2/docs/man/xhtml/

Help Wanted

Please help complete coverage of any FFI functions you may need by filing an issue or creating a pull request.

Coverage of important stuff: 90%.
Coverage of peripheral stuff: 10% - 20%.

raw Stands Alone

This module (with cl_h and error) may eventually be moved to its own separate crate. ('ocl_raw' or some such... will need a more clever name)

Structs

CommandQueueProperties

cl_command_queue_properties - bitfield

CommandQueueRaw

cl_command_queue

ContextRaw

cl_context

DeviceAffinityDomain

cl_device_affinity_domain

DeviceExecCapabilities

cl_device_exec_capabilities - bitfield

DeviceFpConfig

cl_device_fp_config - bitfield

DeviceIdRaw

cl_device_id

DeviceType

cl_device_type - bitfield

EventRaw

cl_event

ImageDescriptor

An image descriptor use in the creation of Image.

ImageFormat

Image format properties used by Image.

KernelArgTypeQualifier

cl_kernel_arg_type_qualifer

KernelRaw

cl_kernel

MapFlags

cl_map_flags - bitfield

MemFlags

cl_mem_flags - bitfield

MemMigrationFlags

cl_mem_migration_flags - bitfield

MemRaw

cl_mem

PlatformIdRaw

cl_platform_id

ProgramBinaryType

cl_program_binary_type

ProgramRaw

cl_program

SamplerRaw

cl_sampler

Enums

AddressingMode

cl_addressing_mode

BufferCreateType

cl_buffer_create_type

BuildStatus

cl_build_status

Cbool

cl_bool

ChannelType

cl_channel_type

CommandExecutionStatus

command execution status

CommandQueueInfo

cl_command_queue_info

CommandType

cl_command_type

ContextInfo

cl_context_info

ContextInfoAndProperties

cl_context_info + cl_context_properties

DeviceInfo

cl_device_info

DeviceLocalMemType

cl_device_local_mem_type

DeviceMemCacheType

cl_mem_cache_type

EventInfo

cl_event_info

FilterMode

cl_filter_mode

ImageChannelDataType

Describes the size of the channel data type. The number of bits per element determined by the image_channel_data_type and image_channel_order must be a power of two. The list of supported values is described in the table below. (from SDK)

ImageChannelOrder

Specifies the number of channels and the channel layout i.e. the memory layout in which channels are stored in the image. Valid values are described in the table below. (from SDK)

ImageInfo

cl_image_info

KernelArg

Kernel argument option type.

KernelArgAccessQualifier

cl_kernel_arg_access_qualifier

KernelArgAddressQualifier

cl_kernel_arg_address_qualifier

KernelArgInfo

cl_kernel_arg_info

KernelInfo

cl_kernel_info

KernelWorkGroupinfo

cl_kernel_work_group_info

MemInfo

cl_mem_info

MemObjectType

cl_mem_object_type

PartitionProperty

cl_partition_property

PlatformInfo

cl_platform_info

Polling

cl_bool: Polling

ProfilingInfo

cl_profiling_info

ProgramBuildInfo

cl_program_build_info

ProgramInfo

cl_program_info

SamplerInfo

cl_sampler_info

Constants

DEFAULT_DEVICE_IDX
DEFAULT_PLATFORM_IDX
DEVICES_MAX
DEVICE_AFFINITY_DOMAIN_L1_CACHE
DEVICE_AFFINITY_DOMAIN_L2_CACHE
DEVICE_AFFINITY_DOMAIN_L3_CACHE
DEVICE_AFFINITY_DOMAIN_L4_CACHE
DEVICE_AFFINITY_DOMAIN_NEXT_PARTITIONABLE
DEVICE_AFFINITY_DOMAIN_NUMA
DEVICE_TYPE_ACCELERATOR
DEVICE_TYPE_ALL
DEVICE_TYPE_CPU
DEVICE_TYPE_CUSTOM
DEVICE_TYPE_DEFAULT
DEVICE_TYPE_GPU
EXEC_KERNEL
EXEC_NATIVE_KERNEL
FP_CORRECTLY_ROUNDED_DIVIDE_SQRT
FP_DENORM
FP_FMA
FP_INF_NAN
FP_ROUND_TO_INF
FP_ROUND_TO_NEAREST
FP_ROUND_TO_ZERO
FP_SOFT_FLOAT
KERNEL_ARG_TYPE_CONST
KERNEL_ARG_TYPE_NONE
KERNEL_ARG_TYPE_RESTRICT
KERNEL_ARG_TYPE_VOLATILE
MAP_READ
MAP_WRITE
MAP_WRITE_INVALIDATE_REGION
MEM_ALLOC_HOST_PTR
MEM_COPY_HOST_PTR
MEM_HOST_NO_ACCESS
MEM_HOST_READ_ONLY
MEM_HOST_WRITE_ONLY
MEM_READ_ONLY
MEM_READ_WRITE
MEM_USE_HOST_PTR
MEM_WRITE_ONLY
MIGRATE_MEM_OBJECT_CONTENT_UNDEFINED
MIGRATE_MEM_OBJECT_HOST
PROGRAM_BINARY_TYPE_COMPILED_OBJECT
PROGRAM_BINARY_TYPE_EXECUTABLE
PROGRAM_BINARY_TYPE_LIBRARY
PROGRAM_BINARY_TYPE_NONE
QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE
QUEUE_PROFILING_ENABLE

Functions

build_program

[UNIMPLEMENTED][FIXME]: IMPLEMENT ME

compile_program

[UNIMPLEMENTED][FIXME]: IMPLEMENT ME

context_info

Returns context information.

create_buffer

Returns a new buffer pointer with size (bytes): len * sizeof(T).

create_build_program

Creates, builds, and returns a new program pointer from src_strings.

create_command_queue

Returns a new command queue pointer.

create_context

Returns a new context pointer valid for all devices in device_ids.

create_context_from_type

[UNIMPLEMENTED][FIXME]: IMPLEMENT ME

create_image

Returns a new image (mem) pointer.

create_kernel

Returns a new kernel pointer.

create_kernels_in_program

[UNIMPLEMENTED][FIXME]: IMPLEMENT ME

create_program_with_binary

[UNIMPLEMENTED][FIXME]: IMPLEMENT ME

create_program_with_build_in_kernels

[UNIMPLEMENTED][FIXME]: IMPLEMENT ME

create_program_with_source

[UNIMPLEMENTED][FIXME]: IMPLEMENT ME

create_sampler

[UNIMPLEMENTED][FIXME]: IMPLEMENT ME

create_sub_buffer

[UNIMPLEMENTED][FIXME]: IMPLEMENT ME

create_sub_devices

[UNIMPLEMENTED][FIXME]: IMPLEMENT ME

create_user_event

[UNIMPLEMENTED][FIXME]: IMPLEMENT ME

device_info

Returns a string containing requested information.

enqueue_barrier_with_wait_list

[UNIMPLEMENTED][FIXME]: IMPLEMENT ME

enqueue_copy_buffer

[UNTESTED][UNUSED]

enqueue_copy_buffer_rect

[UNIMPLEMENTED][FIXME]: IMPLEMENT ME

enqueue_copy_buffer_to_image

[UNIMPLEMENTED][FIXME]: IMPLEMENT ME

enqueue_copy_image

[UNIMPLEMENTED][FIXME]: IMPLEMENT ME

enqueue_copy_image_to_buffer

[UNIMPLEMENTED][FIXME]: IMPLEMENT ME

enqueue_fill_buffer

[UNIMPLEMENTED][FIXME]: IMPLEMENT ME

enqueue_fill_image

[UNIMPLEMENTED][FIXME]: IMPLEMENT ME

enqueue_map_buffer

[UNIMPLEMENTED][FIXME]: IMPLEMENT ME

enqueue_map_image

[UNIMPLEMENTED][FIXME]: IMPLEMENT ME

enqueue_marker_with_wait_list

[UNIMPLEMENTED][FIXME]: IMPLEMENT ME

enqueue_migrate_mem_objects

[UNIMPLEMENTED][FIXME]: IMPLEMENT ME

enqueue_n_d_range_kernel

Enqueues a command to execute a kernel on a device.

enqueue_native_kernel

[UNIMPLEMENTED][FIXME]: IMPLEMENT ME

enqueue_read_buffer

Enqueues a read from device memory referred to by buffer to device memory, data.

enqueue_read_buffer_rect

[UNIMPLEMENTED][FIXME]: IMPLEMENT ME

enqueue_read_image

[UNIMPLEMENTED][FIXME]: IMPLEMENT ME

enqueue_task

[UNIMPLEMENTED][FIXME]: IMPLEMENT ME

enqueue_unmap_mem_object

[UNIMPLEMENTED][FIXME]: IMPLEMENT ME

enqueue_write_buffer

Enqueues a write from host memory, data, to device memory referred to by buffer.

enqueue_write_buffer_rect

[UNIMPLEMENTED][FIXME]: IMPLEMENT ME

enqueue_write_image

[UNIMPLEMENTED][FIXME]: IMPLEMENT ME

finish
flush

[UNIMPLEMENTED][FIXME]: IMPLEMENT ME

get_command_queue_info

[UNIMPLEMENTED][FIXME]: IMPLEMENT ME

get_context_info

[UNIMPLEMENTED][FIXME]: IMPLEMENT ME

get_device_ids

Returns a list of available devices for a particular platform by id.

get_device_info

[UNIMPLEMENTED][FIXME]: IMPLEMENT ME

get_event_info

[UNIMPLEMENTED][FIXME]: IMPLEMENT ME

get_event_profiling_info

[UNIMPLEMENTED][FIXME]: IMPLEMENT ME

get_event_status

Returns the status of event.

get_extension_function_address_for_platform

[UNIMPLEMENTED][FIXME]: IMPLEMENT ME Extension function access

get_image_info

[UNIMPLEMENTED][FIXME]: IMPLEMENT ME

get_kernel_arg_info

[UNIMPLEMENTED][FIXME]: IMPLEMENT ME

get_kernel_info

[UNIMPLEMENTED][FIXME]: IMPLEMENT ME

get_kernel_work_group_info

[UNIMPLEMENTED][FIXME]: IMPLEMENT ME

get_max_work_group_size
get_mem_object_info

[UNIMPLEMENTED][FIXME]: IMPLEMENT ME

get_platform_ids

Returns a list of available platforms as 'raw' objects.

get_platform_info

[UNIMPLEMENTED][FIXME]: IMPLEMENT ME

get_program_build_info

[UNIMPLEMENTED][FIXME]: IMPLEMENT ME

get_program_info

[UNIMPLEMENTED][FIXME]: IMPLEMENT ME

get_sampler_info

[UNIMPLEMENTED][FIXME]: IMPLEMENT ME

get_supported_image_formats

[UNIMPLEMENTED][FIXME]: IMPLEMENT ME

link_program

[UNIMPLEMENTED][FIXME]: IMPLEMENT ME

platform_info

[UNFINISHED] Currently prints the platform name.

program_build_err

If the program pointed to by cl_program for any of the devices listed in device_ids has a build log of any length, it will be returned as an errcode result.

release_command_queue
release_context
release_device

[UNIMPLEMENTED][FIXME]: IMPLEMENT ME

release_event
release_kernel
release_mem_object
release_program
release_sampler

[UNIMPLEMENTED][FIXME]: IMPLEMENT ME

retain_command_queue

[UNIMPLEMENTED][FIXME]: IMPLEMENT ME

retain_context

[UNIMPLEMENTED][FIXME]: IMPLEMENT ME

retain_device

[UNIMPLEMENTED][FIXME]: IMPLEMENT ME

retain_event

[UNIMPLEMENTED][FIXME]: IMPLEMENT ME

retain_kernel

[UNIMPLEMENTED][FIXME]: IMPLEMENT ME

retain_mem_object

[UNIMPLEMENTED][FIXME]: IMPLEMENT ME

retain_program

[UNIMPLEMENTED][FIXME]: IMPLEMENT ME

retain_sampler

[UNIMPLEMENTED][FIXME]: IMPLEMENT ME

set_event_callback
set_kernel_arg

Modifies or creates a kernel argument.

set_mem_object_destructor_callback

[UNIMPLEMENTED][FIXME]: IMPLEMENT ME

set_user_event_status

[UNIMPLEMENTED][FIXME]: IMPLEMENT ME

unload_platform_compiler

[UNIMPLEMENTED][FIXME]: IMPLEMENT ME

verify_context

Verifies that the context is in fact a context object pointer.

wait_for_event

[FIXME]: Why are we wrapping in this array? Fix this.

wait_for_events