Terminates all pending work associated with the context and renders all data owned by the context invalid.
cl_int clTerminateContextKHR(cl_context context)
It is the responsibility of the application to release all objects associated with the context being terminated.
When a context is terminated:
The execution status of enqueued commands will be
CL_TERMINATED_KHR. Event objects can be queried using
clGetEventInfo. Event callbacks can be registered and registered event callbacks will be called with
clWaitForEventswill return as immediately for commands associated with event objects specified in
event_list. The status of user events can be set. Event objects can be retained and released.
The context is considered to be terminated. A callback function registered when the context was created will be called. Only queries, retain and release operations can be performed on the context. All other APIs that use a context as an argument will return
The contents of the memory regions of the memory objects is undefined. Queries, registering a destructor callback, retain and release operations can be performed on the memory objects.
Once a context has been terminated, all OpenCL API calls that create objects or enqueue commands will return
CL_CONTEXT_TERMINATED_KHR. APIs that release OpenCL objects will continue to operate as though
clTerminateContextKHRwas not called.
The behavior of callbacks will remain unchanged, and will report appropriate error, if executing after termination of context. This behavior is similar to enqueued commands, after the command queue has become invalid.
An implementation that supports this extension must be able to terminate commands currently executing on devices or queued across all command-queues associated with the context that is being terminated.
The implementation cannot implement this extension by waiting for currently executing (or queued) commands to finish execution on devices associated with this context (i.e.
In Table 4.5, (see
CL_CONTEXT_TERMINATE_KHR can be specified in the context properties only if all devices associated with the context support the ability to support context termination (i.e.
CL_DEVICE_TERMINATE_CAPABILITY_CONTEXT_KHR is set for
Otherwise, context creation fails with error code of
CL_SUCCESS if the function is executed successfully.
Otherwise, it returns one of the following errors:
contextis not a valid OpenCL context.
contexthas already been terminated.
contextwas not created with
CL_OUT_OF_RESOURCESif there is a failure to allocate resources required by the OpenCL implementation on the device.
CL_OUT_OF_HOST_MEMORYif there is a failure to allocate resources required by the OpenCL implementation on the host.