US2023297425A1PendingUtilityA1
Allocation of memory resources to simd workgroups
Est. expirySep 15, 2037(~11.1 yrs left)· nominal 20-yr term from priority
G06F 12/0842G06F 12/084G06F 12/0223G06F 9/5022G06F 9/5016Y02D10/00G06F 12/02G06F 12/00G06F 9/4881G06F 9/505G06F 9/544
73
PatentIndex Score
0
Cited by
0
References
0
Claims
Abstract
A resource allocator receives a memory resource request for first memory resources in respect of a first-received task of a workgroup having a plurality of tasks. In response to receiving the memory resource request, the resource allocator allocates to the entire workgroup a block of memory portions of a shared memory that is sufficient in size for each task of the workgroup to receive memory resources in the block equivalent to the first memory resources.
Claims
exact text as granted — not AI-modifiedWhat is claimed is:
1 . A resource allocator configured to:
receive a memory resource request for first memory resources in respect of a first-received task of a workgroup, the workgroup comprising a plurality of tasks; and in response to receiving the memory resource request, allocate to the entire workgroup a block of memory portions of a shared memory that is sufficient in size for each task of the workgroup to receive memory resources in the block equivalent to the first memory resources.
2 . The resource allocator of claim 1 , wherein each task of the workgroup is a single-instruction multiple data (SIMD) task.
3 . The resource allocator of claim 1 , wherein the memory resource request indicates the size of memory resources required for the first-received task of the workgroup, and wherein the block of memory portions is allocated based on the indicated size of the memory resources required for that task.
4 . The resource allocator of claim 3 , wherein the size of the allocated block of memory portions is at least N times the size of the memory resources indicated in the memory resource request, where N is the number of tasks in the workgroup.
5 . The resource allocator of claim 1 , further configured to receive, with the memory resource request, an indication of the number of tasks in the workgroup.
6 . The resource allocator of claim 1 , wherein the resource allocator is configured to allocate the block of memory portions as a contiguous block of memory portions.
7 . The resource allocator of claim 1 , wherein the resource allocator is configured to, on servicing the first-received task of the workgroup, allocate to that task the requested first memory resources from the block and reserve the remaining memory portions of the block so as to prevent allocation to tasks of other workgroups.
8 . The resource allocator of claim 1 , wherein the resource allocator is configured to, in response to subsequently receiving a memory resource request in respect of a second-received task of the workgroup, allocate memory resources of the block to that second-received task.
9 . The resource allocator of claim 8 , wherein the resource allocator is configured to allocate a first portion of the block of memory portions to the first-received task, and to allocate a second portion of the block of memory portions to the second-received task, the second portion being adjacent to the first portion within the memory block.
10 . The resource allocator of claim 1 , wherein the resource allocator is arranged to receive memory resource requests from a plurality of different requestors and to, in response to allocating the block of memory portions to the workgroup, preferentially service memory requests received from the requestor from which the first-received task of that workgroup was received.
11 . The resource allocator of claim 1 , wherein the resource allocator is further configured to, in response to receiving an indication that processing of a task of the workgroup has completed, deallocate the memory resources allocated to that task without waiting for processing of the workgroup to complete.
12 . The resource allocator of claim 1 , wherein the resource allocator is further configured to maintain a fine status array arranged to indicate whether each memory portion of the shared memory is allocated to a task.
13 . The resource allocator of claim 12 , wherein the resource allocator is configured to, in response to receiving the memory resource request in respect of the first-received task of the workgroup, search a current window for a contiguous block of memory portions which are indicated by the fine status array as being available for allocation, the resource allocator being configured to, if such a contiguous block is identified in the current window, allocate that contiguous block to the workgroup.
14 . The resource allocator of claim 13 , wherein the resource allocator is configured to allocate the contiguous block of memory portions such that the block starts at the lowest possible position in the window.
15 . The resource allocator of claim 13 , wherein the resource allocator is further configured to maintain a coarse status array arranged to indicate, for each window of the shared memory, whether all the memory portions of the window are unallocated, the resource allocator being configured to, in parallel with searching the current window for a contiguous block of memory portions, check the coarse status array to determine whether the size of the requested block can be accommodated by one or more subsequent windows; the resource allocator being configured to, if both a sufficiently large contiguous block cannot be identified in the current window and the requested block can be accommodated by one or more subsequent windows, allocate the block to the workgroup comprising memory portions starting at the first memory portion of the current window in a contiguous block with the subsequent window(s) and extending into those subsequent window(s).
16 . The resource allocator of claim 15 , wherein the resource allocator is further configured to, in parallel with searching the current window, form an overflow metric representing the memory resources of the required block of memory portions which cannot be accommodated in the current window starting at the first memory portion of the current window in a contiguous block of unallocated memory portions immediately adjacent to the subsequent window, the resource allocator being configured to, if both a sufficiently large contiguous block cannot be identified in the current window and the requested block cannot be accommodated by one or more subsequent windows, subsequently attempt allocation of a block to the workgroup by searching the subsequent window, starting at the first memory portion of the subsequent window, for a contiguous block of unallocated memory portions sufficient in total size to accommodate the overflow metric.
17 . The resource allocator of claim 1 , wherein the resource allocator maintains a data structure identifying which of the one or more workgroups are currently allocated a block of memory portions.
18 . The resource allocator of claim 1 , the resource allocator being implemented within a memory subsystem for use with a processor comprising a plurality of processing units configured for processing one or more workgroups each comprising a plurality of tasks, the memory subsystem further comprising the shared memory that is partitioned into a plurality of memory portions for allocation to tasks that are to be processed by the processor.
19 . A method of allocating shared memory resources comprising:
receiving a memory resource request for first memory resources in respect of a first-received task of a workgroup, the workgroup comprising a plurality of tasks; and in response to receiving the memory resource request, allocating to the entire workgroup a block of memory portions of a shared memory that is sufficient in size for each task of the workgroup to receive memory resources in the block equivalent to the first memory resources.
20 . A non-transitory computer readable storage medium having stored thereon a computer readable dataset description of an integrated circuit that, when processed in an integrated circuit manufacturing system, causes the integrated circuit manufacturing system to manufacture a resource allocator configured to:
receive a memory resource request for first memory resources in respect of a first-received task of a workgroup, the workgroup comprising a plurality of tasks; and in response to receiving the memory resource request, allocate to the entire workgroup a block of memory portions of a shared memory that is sufficient in size for each task of the workgroup to receive memory resources in the block equivalent to the first memory resources.Join the waitlist — get patent alerts
Track US2023297425A1 — get alerts on status changes and closely related new filings.
We store only your email — no account needed. See our privacy policy.