This extension adds "Unified Shared Memory" (USM) to OpenCL. Unified Shared Memory provides:
While Unified Shared Memory (USM) shares many features with Shared Virtual Memory (SVM), Unified Shared Memory provides a different mix of capabilities and control. Specifically:
Unified Shared Memory and Shared Virtual Memory can and will coexist for many implementations. All implementations that support Shared Virtual Memory may support at least some types of Unified Shared Memory.
Requires CL20.
| Modifier and Type | Field and Description |
|---|---|
| public static final int | CL_COMMAND_MEMADVISE_INTEL
New return values from |
| public static final int | CL_COMMAND_MEMCPY_INTEL
New return values from |
| public static final int | CL_COMMAND_MEMFILL_INTEL
New return values from |
| public static final int | CL_COMMAND_MIGRATEMEM_INTEL
New return values from |
| public static final int | CL_DEVICE_CROSS_DEVICE_SHARED_MEM_CAPABILITIES_INTEL
Accepted value for the |
| public static final int | CL_DEVICE_DEVICE_MEM_CAPABILITIES_INTEL
Accepted value for the |
| public static final int | CL_DEVICE_HOST_MEM_CAPABILITIES_INTEL
Accepted value for the |
| public static final int | CL_DEVICE_SHARED_SYSTEM_MEM_CAPABILITIES_INTEL
Accepted value for the |
| public static final int | CL_DEVICE_SINGLE_DEVICE_SHARED_MEM_CAPABILITIES_INTEL
Accepted value for the |
| public static final int | CL_KERNEL_EXEC_INFO_INDIRECT_DEVICE_ACCESS_INTEL
Accepted value for the |
| public static final int | CL_KERNEL_EXEC_INFO_INDIRECT_HOST_ACCESS_INTEL
Accepted value for the |
| public static final int | CL_KERNEL_EXEC_INFO_INDIRECT_SHARED_ACCESS_INTEL
Accepted value for the |
| public static final int | CL_KERNEL_EXEC_INFO_USM_PTRS_INTEL
Accepted value for the |
| public static final int | CL_MEM_ALLOC_BASE_PTR_INTEL
Enumeration type and values for the |
| public static final int | CL_MEM_ALLOC_DEVICE_INTEL
Enumeration type and values for the |
| public static final int | CL_MEM_ALLOC_FLAGS_INTEL
Enumerant value requesting optional allocation properties for a Unified Shared Memory allocation. |
| public static final int | CL_MEM_ALLOC_INITIAL_PLACEMENT_DEVICE_INTEL
Bitfield type and bits describing optional allocation properties for a Unified Shared Memory allocation. |
| public static final int | CL_MEM_ALLOC_INITIAL_PLACEMENT_HOST_INTEL
Bitfield type and bits describing optional allocation properties for a Unified Shared Memory allocation. |
| public static final int | CL_MEM_ALLOC_SIZE_INTEL
Enumeration type and values for the |
| public static final int | CL_MEM_ALLOC_TYPE_INTEL
Enumeration type and values for the |
| public static final int | CL_MEM_ALLOC_WRITE_COMBINED_INTEL
Bitfield type and bits describing optional allocation properties for a Unified Shared Memory allocation. |
| public static final int | CL_MEM_TYPE_DEVICE_INTEL
Enumeration type and values describing the type of Unified Shared Memory allocation. |
| public static final int | CL_MEM_TYPE_HOST_INTEL
Enumeration type and values describing the type of Unified Shared Memory allocation. |
| public static final int | CL_MEM_TYPE_SHARED_INTEL
Enumeration type and values describing the type of Unified Shared Memory allocation. |
| public static final int | CL_MEM_TYPE_UNKNOWN_INTEL
Enumeration type and values describing the type of Unified Shared Memory allocation. |
| public static final int | CL_UNIFIED_SHARED_MEMORY_ACCESS_INTEL
Bitfield type and bits describing the Unified Shared Memory capabilities of an OpenCL device. |
| public static final int | CL_UNIFIED_SHARED_MEMORY_ATOMIC_ACCESS_INTEL
Bitfield type and bits describing the Unified Shared Memory capabilities of an OpenCL device. |
| public static final int | CL_UNIFIED_SHARED_MEMORY_CONCURRENT_ACCESS_INTEL
Bitfield type and bits describing the Unified Shared Memory capabilities of an OpenCL device. |
| public static final int | CL_UNIFIED_SHARED_MEMORY_CONCURRENT_ATOMIC_ACCESS_INTEL
Bitfield type and bits describing the Unified Shared Memory capabilities of an OpenCL device. |
| Access | Constructor and Description |
|---|---|
| protected |
| Modifier and Type | Method and Description | ||||
|---|---|---|---|---|---|
| public static ByteBuffer | Returns: a valid non-NULL address and SUCCESS will be returned in errcode_ret if the device Unified Shared Memory is allocated successfully.
Otherwise, NULL will be returned, and errcode_ret will be set to one of the following error values:
a valid OpenCL context used to allocate the device memory context, long a valid OpenCL device ID to associate with the allocation device, LongBuffer an optional list of allocation properties and their corresponding values.
properties, long The list is terminated with the special property the size in bytes of the requested device allocation size, int the minimum alignment in bytes for the requested device allocation.
alignment, IntBuffer It must be a power of two and must be equal to or smaller than the size of the largest data type supported by will return an appropriate error code. If errcode_ret)errcode_ret is NULL, no error code is returned.Allocates Unified Shared Memory specific to an OpenCL device. | ||||
| public static ByteBuffer | clDeviceMemAllocINTEL(long context, long device, long[] properties, long size, int alignment, int[] errcode_ret)
Array version of: | ||||
| public static int | Returns: SUCCESS if the command is queued successfully. Otherwise, it will return one of the following errors:
a valid host command queue.
command_queue, ByteBuffer The memory advice hints will be queued for the device associated with a pointer to the start of the shared Unified Shared Memory allocation ptr, long a bit-field describing the memory advice hints for the region advice, PointerBuffer a list of events that need to complete before this particular command can be executed. If event_wait_list, PointerBuffer event_wait_list is NULL, then this particular command
does not wait on any event to complete. The events specified in event_wait_list act as synchronization points. The context associated with events in
event_wait_list and command_queue must be the same.Returns an event object that identifies this particular command and can be used to query or queue a wait for this particular command to complete.
event)event can be NULL in which case it will not be possible for the application to query the status of this command or queue a wait for this command to
complete. If the event_wait_list and the event arguments are not NULL, the event argument should not refer to an element of the
event_wait_list array.Provides advice about a region of a shared Unified Shared Memory allocation. | ||||
| public static int | Returns: SUCCESS if the command is queued successfully. Otherwise, it will return one of the following errors:
a valid host command queue.
command_queue, boolean The memory copy command will be queued for execution on the device associated with indicates if the copy operation is blocking or non-blocking.
blocking, ByteBuffer If a pointer to the start of the memory region to copy to.
dst_ptr, ByteBuffer If a pointer to the start of the memory region to copy from.
src_ptr, long If the size of the memory region to copy, in bytes size, PointerBuffer a list of events that need to complete before this particular command can be executed. If event_wait_list, PointerBuffer event_wait_list is NULL, then this particular command
does not wait on any event to complete. The events specified in event_wait_list act as synchronization points. The context associated with events in
event_wait_list and command_queue must be the same.Returns an event object that identifies this particular command and can be used to query or queue a wait for this particular command to complete.
event)event can be NULL in which case it will not be possible for the application to query the status of this command or queue a wait for this command to
complete. If the event_wait_list and the event arguments are not NULL, the event argument should not refer to an element of the
event_wait_list array.Copies a region of memory from one location to another. | ||||
| public static int | Returns: SUCCESS if the command is queued successfully. Otherwise, it will return one of the following errors:
a valid host command queue.
command_queue, ByteBuffer The memory fill command will be queued for execution on the device associated with a pointer to the start of the memory region to fill.
dst_ptr, ByteBuffer The Unified Shared Memory allocation pointed to by a pointer to the value to write to the Unified Shared Memory region.
pattern, PointerBuffer The memory associated with a list of events that need to complete before this particular command can be executed. If event_wait_list, PointerBuffer event_wait_list is NULL, then this particular command
does not wait on any event to complete. The events specified in event_wait_list act as synchronization points. The context associated with events in
event_wait_list and command_queue must be the same.Returns an event object that identifies this particular command and can be used to query or queue a wait for this particular command to complete.
event)event can be NULL in which case it will not be possible for the application to query the status of this command or queue a wait for this command to
complete. If the event_wait_list and the event arguments are not NULL, the event argument should not refer to an element of the
event_wait_list array.Fills a region of a memory with the specified pattern. | ||||
| public static int | Returns: SUCCESS if the command is queued successfully. Otherwise, it will return one of the following errors:
a valid host command queue.
command_queue, ByteBuffer The memory migration command will be queued for execution on the device associated with a pointer to the start of the shared Unified Shared Memory allocation to migrate ptr, long a bit-field that is used to specify memory migration options flags, PointerBuffer a list of events that need to complete before this particular command can be executed. If event_wait_list, PointerBuffer event_wait_list is NULL, then this particular command
does not wait on any event to complete. The events specified in event_wait_list act as synchronization points. The context associated with events in
event_wait_list and command_queue must be the same.Returns an event object that identifies this particular command and can be used to query or queue a wait for this particular command to complete.
event)event can be NULL in which case it will not be possible for the application to query the status of this command or queue a wait for this command to
complete. If the event_wait_list and the event arguments are not NULL, the event argument should not refer to an element of the
event_wait_list array.Explicitly migrates a region of a shared Unified Shared Memory allocation to the device associated with | ||||
| public static int | Returns: SUCCESS if the function is executed successfully. Otherwise, it will return one of the following error values:
a valid OpenCL context to query for information about the Unified Shared Memory allocation context, ByteBuffer a pointer into a Unified Shared Memory allocation to query.
ptr, int
the information to query. One of: param_name, ByteBuffer
a pointer to memory where the appropriate result being queried is returned.
param_value, PointerBuffer If the actual size in bytes of data being queried by param_value_size_ret)param_value. If NULL, it is ignored.Queries information about a Unified Shared Memory allocation. | ||||
| public static int | Returns: SUCCESS if the function is executed successfully. Otherwise, it will return one of the following error values:
a valid OpenCL context to query for information about the Unified Shared Memory allocation context, ByteBuffer a pointer into a Unified Shared Memory allocation to query.
ptr, int
the information to query. One of: param_name, IntBuffer
a pointer to memory where the appropriate result being queried is returned.
param_value, PointerBuffer If the actual size in bytes of data being queried by param_value_size_ret)param_value. If NULL, it is ignored.Queries information about a Unified Shared Memory allocation. | ||||
| public static int | Returns: SUCCESS if the function is executed successfully. Otherwise, it will return one of the following error values:
a valid OpenCL context to query for information about the Unified Shared Memory allocation context, ByteBuffer a pointer into a Unified Shared Memory allocation to query.
ptr, int
the information to query. One of: param_name, PointerBuffer
a pointer to memory where the appropriate result being queried is returned.
param_value, PointerBuffer If the actual size in bytes of data being queried by param_value_size_ret)param_value. If NULL, it is ignored.Queries information about a Unified Shared Memory allocation. | ||||
| public static int | clGetMemAllocInfoINTEL(long context, ByteBuffer ptr, int param_name, int[] param_value, PointerBuffer param_value_size_ret)
Array version of: | ||||
| public static ByteBuffer | Returns: a valid non-NULL address and SUCCESS will be returned in errcode_ret if the host Unified Shared Memory is allocated successfully. Otherwise,
NULL will be returned, and errcode_ret will be set to one of the following error values:
a valid OpenCL context used to allocate the host memory context, LongBuffer an optional list of allocation properties and their corresponding values.
properties, long The list is terminated with the special property the size in bytes of the requested host allocation size, int the minimum alignment in bytes for the requested host allocation.
alignment, IntBuffer It must be a power of two and must be equal to or smaller than the size of the largest data type supported by any OpenCL device in will return an appropriate error code. If errcode_ret)errcode_ret is NULL, no error code is returned.Allocates host Unified Shared Memory. | ||||
| public static ByteBuffer | clHostMemAllocINTEL(long context, long[] properties, long size, int alignment, int[] errcode_ret)
Array version of: | ||||
| public static int | Returns: SUCCESS if the function executes successfully. Otherwise, they will return one of the following error values:
a valid OpenCL context used to free the Unified Shared Memory allocation context, ByteBuffer the Unified Shared Memory allocation to free.
ptr)It must be a value returned by Frees a Unified Shared Memory allocation. | ||||
| public static int | Returns: SUCCESS if the function executes successfully. Otherwise, they will return one of the following error values:
a valid OpenCL context used to free the Unified Shared Memory allocation context, ByteBuffer the Unified Shared Memory allocation to free.
ptr)It must be a value returned by Frees a Unified Shared Memory allocation. | ||||
| public static int | Returns: SUCCESS if the function is executed successfully. Otherwise, it will return one of the following errors:
a valid kernel object kernel, int the argument index to set.
arg_index, ByteBuffer Arguments to the kernel are referred to by indices that go from 0 for the leftmost argument to the pointer value that should be used as the argument specified by arg_value)arg_index.
The pointer value will be used as the argument by all API calls that enqueue a kernel until the argument value is set to a different pointer value
by a subsequent call. A pointer into Unified Shared Memory allocation may only be set as an argument value for an argument declared to be a pointer
to Sets a pointer into a Unified Shared Memory allocation as an argument to a kernel. | ||||
| public static int | Returns: SUCCESS if the function is executed successfully. Otherwise, it will return one of the following errors:
a valid kernel object kernel, int the argument index to set.
arg_index, ShortBuffer Arguments to the kernel are referred to by indices that go from 0 for the leftmost argument to the pointer value that should be used as the argument specified by arg_value)arg_index.
The pointer value will be used as the argument by all API calls that enqueue a kernel until the argument value is set to a different pointer value
by a subsequent call. A pointer into Unified Shared Memory allocation may only be set as an argument value for an argument declared to be a pointer
to Sets a pointer into a Unified Shared Memory allocation as an argument to a kernel. | ||||
| public static int | Returns: SUCCESS if the function is executed successfully. Otherwise, it will return one of the following errors:
a valid kernel object kernel, int the argument index to set.
arg_index, IntBuffer Arguments to the kernel are referred to by indices that go from 0 for the leftmost argument to the pointer value that should be used as the argument specified by arg_value)arg_index.
The pointer value will be used as the argument by all API calls that enqueue a kernel until the argument value is set to a different pointer value
by a subsequent call. A pointer into Unified Shared Memory allocation may only be set as an argument value for an argument declared to be a pointer
to Sets a pointer into a Unified Shared Memory allocation as an argument to a kernel. | ||||
| public static int | Returns: SUCCESS if the function is executed successfully. Otherwise, it will return one of the following errors:
a valid kernel object kernel, int the argument index to set.
arg_index, LongBuffer Arguments to the kernel are referred to by indices that go from 0 for the leftmost argument to the pointer value that should be used as the argument specified by arg_value)arg_index.
The pointer value will be used as the argument by all API calls that enqueue a kernel until the argument value is set to a different pointer value
by a subsequent call. A pointer into Unified Shared Memory allocation may only be set as an argument value for an argument declared to be a pointer
to Sets a pointer into a Unified Shared Memory allocation as an argument to a kernel. | ||||
| public static int | Returns: SUCCESS if the function is executed successfully. Otherwise, it will return one of the following errors:
a valid kernel object kernel, int the argument index to set.
arg_index, FloatBuffer Arguments to the kernel are referred to by indices that go from 0 for the leftmost argument to the pointer value that should be used as the argument specified by arg_value)arg_index.
The pointer value will be used as the argument by all API calls that enqueue a kernel until the argument value is set to a different pointer value
by a subsequent call. A pointer into Unified Shared Memory allocation may only be set as an argument value for an argument declared to be a pointer
to Sets a pointer into a Unified Shared Memory allocation as an argument to a kernel. | ||||
| public static int | Returns: SUCCESS if the function is executed successfully. Otherwise, it will return one of the following errors:
a valid kernel object kernel, int the argument index to set.
arg_index, DoubleBuffer Arguments to the kernel are referred to by indices that go from 0 for the leftmost argument to the pointer value that should be used as the argument specified by arg_value)arg_index.
The pointer value will be used as the argument by all API calls that enqueue a kernel until the argument value is set to a different pointer value
by a subsequent call. A pointer into Unified Shared Memory allocation may only be set as an argument value for an argument declared to be a pointer
to Sets a pointer into a Unified Shared Memory allocation as an argument to a kernel. | ||||
| public static int | Returns: SUCCESS if the function is executed successfully. Otherwise, it will return one of the following errors:
a valid kernel object kernel, int the argument index to set.
arg_index, PointerBuffer Arguments to the kernel are referred to by indices that go from 0 for the leftmost argument to the pointer value that should be used as the argument specified by arg_value)arg_index.
The pointer value will be used as the argument by all API calls that enqueue a kernel until the argument value is set to a different pointer value
by a subsequent call. A pointer into Unified Shared Memory allocation may only be set as an argument value for an argument declared to be a pointer
to Sets a pointer into a Unified Shared Memory allocation as an argument to a kernel. | ||||
| public static int | clSetKernelArgMemPointerINTEL(long kernel, int arg_index, short[] arg_value)
Array version of: | ||||
| public static int | clSetKernelArgMemPointerINTEL(long kernel, int arg_index, int[] arg_value)
Array version of: | ||||
| public static int | clSetKernelArgMemPointerINTEL(long kernel, int arg_index, long[] arg_value)
Array version of: | ||||
| public static int | clSetKernelArgMemPointerINTEL(long kernel, int arg_index, float[] arg_value)
Array version of: | ||||
| public static int | clSetKernelArgMemPointerINTEL(long kernel, int arg_index, double[] arg_value)
Array version of: | ||||
| public static ByteBuffer | Returns: a valid non-NULL address and SUCCESS will be returned in errcode_ret if the shared Unified Shared Memory is allocated successfully.
Otherwise, NULL will be returned, and errcode_ret will be set to one of the following error values:
a valid OpenCL context used to allocate the Unified Shared Memory context, long an optional OpenCL device ID to associate with the allocation.
device, LongBuffer If an optional list of allocation properties and their corresponding values.
properties, long The list is terminated with the special property the size in bytes of the requested device allocation size, int the minimum alignment in bytes for the requested shared allocation.
alignment, IntBuffer It must be a power of two and must be equal to or smaller than the size of the largest data type supported by will return an appropriate error code. If errcode_ret)errcode_ret is NULL, no error code is returned.Allocates Unified Shared Memory with shared ownership between the host and the specified OpenCL device. | ||||
| public static ByteBuffer | clSharedMemAllocINTEL(long context, long device, long[] properties, long size, int alignment, int[] errcode_ret)
Array version of: | ||||
| public static long | nclDeviceMemAllocINTEL(long context, long device, long properties, long size, int alignment, long errcode_ret)
Unsafe version of: | ||||
| public static int | nclEnqueueMemAdviseINTEL(long command_queue, long ptr, long
the size of the memory region size, long advice, int the number of events in num_events_in_wait_list, long event_wait_list, long event)event_wait_listUnsafe version of: | ||||
| public static int | nclEnqueueMemcpyINTEL(long command_queue, int blocking, long dst_ptr, long src_ptr, long size, int
the number of events in num_events_in_wait_list, long event_wait_list, long event)event_wait_listUnsafe version of: | ||||
| public static int | nclEnqueueMemFillINTEL(long command_queue, long dst_ptr, long pattern, long
the size of of the value to write to the Unified Shared Memory region, in bytes.
pattern_size, long Must be a power of two and must be less than or equal to the size of the largest integer or floating-point vector data type supported by the device. the size of the memory region to set, in bytes size, int the number of events in num_events_in_wait_list, long event_wait_list, long event)event_wait_listUnsafe version of: | ||||
| public static int | nclEnqueueMigrateMemINTEL(long command_queue, long ptr, long
the size of the memory region to migrate size, long flags, int the number of events in num_events_in_wait_list, long event_wait_list, long event)event_wait_listUnsafe version of: | ||||
| public static int | nclGetMemAllocInfoINTEL(long context, long ptr, int param_name, long
the size in bytes of memory pointed to by param_value_size, long param_value, long param_value_size_ret)param_value. This size must be ≥ size of return type. If param_value is NULL, it is ignored.Unsafe version of: | ||||
| public static long | nclHostMemAllocINTEL(long context, long properties, long size, int alignment, long errcode_ret)
Unsafe version of: | ||||
| public static int | |||||
| public static int | |||||
| public static int | nclSetKernelArgMemPointerINTEL(long kernel, int arg_index, long arg_value)
Unsafe version of: | ||||
| public static long | nclSharedMemAllocINTEL(long context, long device, long properties, long size, int alignment, long errcode_ret)
Unsafe version of: |