cl_int clEnqueueSVMMap
(
| cl_command_queue command_queue, |
| cl_bool blocking_map, | |
| cl_map_flags map_flags, | |
| void *svm_ptr, | |
| size_t size, | |
| cl_uint num_events_in_wait_list, | |
| const cl_event *event_wait_list, | |
cl_event *event) |
command_queue
Must be a valid host command-queue.
blocking_map
Indicates if the map operation is blocking or
non-blocking.
If blocking_map is CL_TRUE,
clEnqueueSVMMap does not return until the application can
access the contents of the SVM region specified by
svm_ptr and size on the host.
If blocking_map is CL_FALSE
i.e. map operation is non-blocking, the region specified by
svm_ptr and size
cannot be used until the map command has completed.
The event argument
returns an event object which can be used to query
the execution status of the map command.
When the map command is completed, the application
can access the contents of the region
specified by svm_ptr and
size.
map_flags
A bit-bield with the following supported values.
| cl_map_flags | Description |
|---|---|
CL_MAP_READ
|
This flag specifies that the region being mapped in the memory object is being mapped for reading.
The pointer returned by
|
CL_MAP_WRITE
|
This flag specifies that the region being mapped in the memory object is being mapped for writing.
The pointer returned by
|
CL_MAP_WRITE_INVALIDATE_REGION
|
This flag specifies that the region being mapped in the memory object is being mapped for writing.
The contents of the region being mapped are to be discarded.
This is typically the case
when the region being mapped is overwritten by the host. This
flag allows the implementation
to no longer guarantee that the pointer returned by
|
svm_ptr and size
A pointer to a memory region and size in bytes
that will be updated by the
host. If svm_ptr is allocated using
clSVMAlloc
then it must be allocated from the same context
from which command_queue was created.
Otherwise the behavior is undefined.
event_wait_list,
num_events_in_wait_list
Specify events that need to complete before this particular
command can be executed. If event_wait_list
is NULL, then this particular command does not wait on any
event to complete. If event_wait_list is
NULL, num_events_in_wait_list must be 0. If
event_wait_list is not NULL, the list of events
pointed to by event_wait_list must be valid
and num_events_in_wait_list must be greater
than 0. 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. The memory associated with event_wait_list
can be reused or freed after the function returns.
event
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 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.
clEnqueueBarrierWithWaitList
can be used instead. 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.
Note that since we are enqueuing a command with a SVM buffer, the region is already mapped in the host address space.
clEnqueueSVMMap, and clEnqueueSVMUnmap act as synchronization points for the region of the SVM buffer specified in these calls.
clEnqueueSVMMap returns CL_SUCCESS
if the function is executed successfully. Otherwise,
it returns one of the following errors:
command_queue
is not a valid host command-queue.
command_queue
and events in event_wait_list are not the same.
svm_ptr is NULL.
size
is 0 or if values specified in map_flags are not valid.
event_wait_list is NULL and
num_events_in_wait_list > 0,
or event_wait_list is not NULL and
num_events_in_wait_list is 0, or if event objects in
event_wait_list are not valid events.
event_wait_list is a negative
integer value.
Copyright © 2007-2013 The Khronos Group Inc.
Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and/or associated documentation files (the
"Materials"), to deal in the Materials without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Materials, and to
permit persons to whom the Materials are furnished to do so, subject to
the condition that this copyright notice and permission notice shall be included
in all copies or substantial portions of the Materials.