blob: 4962a85770c75e005a9746e1bb9d02f438854741 [file] [log] [blame]
Name
ARM_core_id
Name Strings
cl_arm_core_id
Contributors
Robert Elliott
Hui Chen
Contacts
Robert Elliott, ARM (robert.elliott 'at' ARM.com)
Status
Shipping.
Version
Revision: #1, April 2nd, 2013
Number
OpenCL Extension #26
Dependencies
Requires OpenCL version 1.0 or later.
Overview
This extension provides a built-in function which returns the physical core
id (OpenCL Compute Unit) that a work-group is running on. This value is
uniform for a work-group.
This value can be used for a core-specific cache or atomic pool where the
storage is required to be in global memory and persistent (but not ordered)
between work-groups. This does not provide any additional ordering on top
of the existing guarantees between workgroups, nor does it provide any
guarantee of concurrent execution.
The extension string cl_arm_core_id is returned for devices and platforms
which support this extension.
Glossary
No new terminology is introduced by this extension.
New Types
None
New Procedures and Functions
Built-in Function
uint arm_get_core_id( void )
Description
Returns a uint that represents the physical core id, in the range 0 to
CL_DEVICE_MAX_COMPUTE_UNITS-1
Example
// Host code, size pool based on required_instance_size * number_of_compute_units
size_t required_instance_size = 1024;
cl_mem core_pool = clCreateBuffer( ctx, CL_MEM_READ_WRITE, required_instance_size * CL_DEVICE_MAX_COMPUTE_UNITS, NULL, NULL );
// Device/Kernel code, select memory instance
kernel void test( global char *per_core_pool, global char *input, uint required_instance_size )
{
global char *core_pool_instance = per_core_pool[ arm_get_core_id() * required_instance_size ];
...
}
New Tokens
OpenCL kernel code Now has access to:
#pragma OPENCL EXTENSION cl_arm_core_id : enable
The define cl_arm_core_id is also present