IP Library Granted Patent US 9,009,155
Granted Patent B2
US 9,009,155 · App. 13/651,718 · Granted Apr 14, 2015

Parallel set aggregation

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 9,009,155
App. No.
13/651,718
Granted
Apr 14, 2015
Kind
B2
Abstract

A system, method and medium may provide determination of a first plurality of a plurality of data records assigned to a first processing unit, identification of a first record of the first plurality of data records, the first record associated with a first key value, generation of a first dictionary entry of a first dictionary for the first key value, storage of a first identifier of the first record as a tail identifier and as a head identifier in the first dictionary entry, storage an end flag in a first shared memory location, the first shared memory location associated with the first record, identification of a second record of the first plurality of data records, the second record associated with the first key value, replacement of the tail identifier in the first dictionary entry with a second identifier of the second record, and storage of the first identifier in a second shared memory location, the second shared memory location associated with the second record.

Claims (106)

1. A system comprising:

a storage device storing a plurality of data records, each of the plurality of data records associated with one of a plurality of key values;

a processor; and

a memory storing processor-executable program code executable by the processor to cause the system to:

determine a first plurality of the plurality of data records assigned to a first processing unit of the processor;

identify, using the first processing unit, a first record of the first plurality of data records, the first record associated with a first key value;

generate, using the first processing unit, a first dictionary entry of a first dictionary for the first key value;

store, using the first processing unit, a first identifier of the first record as a tail identifier and as a head identifier in the first dictionary entry;

store, using the first processing unit, an end flag in a first shared memory location, the first shared memory location associated with the first record and shared with a second processing unit of the processor;

identify, using the first processing unit, a second record of the first plurality of data records, the second record associated with the first key value;

replace, using the first processing unit, the tail identifier in the first dictionary entry with a second identifier of the second record;

store, using the first processing unit, the first identifier in a second shared memory location, the second shared memory location associated with the second record and shared with the second processing unit;

determine, using the second processing unit, a second plurality of the plurality of data records assigned to the second processing unit;

identify, using the second processing unit, a third record of the second plurality of data records, the third record associated with the first key value;

generate, using the second processing unit, a second dictionary entry of a second dictionary for the first key value;

store, using the second processing unit, a third identifier of the third record of the second plurality of data records as a second tail identifier and as a second head identifier in the second dictionary entry;

store, using the second processing unit, a second end flag in a third shared memory location, the third shared memory location associated with the third record and shared with the first processing unit;

identify, using the second processing unit, a fourth record of the first plurality of data records, the fourth record associated with the first key value;

replace, using the second processing unit, the second tail identifier in the second dictionary entry with a fourth identifier of the fourth record; and

store, using the second processing unit, the third identifier in a fourth shared memory location, the fourth shared memory location associated with the fourth record and shared with the first processing unit.

2. A system according to claim 1 , the processor-executable program code further executable by the processor to cause the system to:

identify, using the first processing unit, a third record of the first plurality of data records, the third record associated with the first key value;

replace, using the first processing unit, the tail identifier in the first dictionary entry with an identifier of the third record of the first plurality of data records; and

store, using the first processing unit, the second identifier in a third shared memory location, the third shared memory location associated with the third record and shared with the second processing unit.

3. A system according to claim 1 , the processor-executable program code further executable by the processor to cause the system to:

identify, using the first processing unit, a third record of the first plurality of data records, the third record associated with a second key value;

generate, using the first processing unit, a second dictionary entry of the first dictionary for the second key value;

store, using the first processing unit, an identifier of the third record of the first plurality of data records as a third tail identifier and as a third head identifier in the second dictionary entry of the first dictionary;

store, using the first processing unit, a third end flag in a third shared memory location, the third shared memory location associated with the third record and shared with the second processing unit;

identify, using the first processing unit, a fourth record of the first plurality of data records, the fourth record of the first plurality of data records associated with the second key value;

replace, using the first processing unit, the third tail identifier in the second dictionary entry of the first dictionary with a fourth identifier of the fourth record of the first plurality of data records; and

store, using the first processing unit, the identifier of the third record of the first plurality of data records in a fourth shared memory location, the fourth shared memory location associated with the fourth record and shared with the second processing unit.

4. A system according to claim 3 , the processor-executable program code further executable by the processor to cause the system to:

identify, using the first processing unit, a fifth record of the first plurality of data records, the fifth record associated with the second key value;

replace, using the first processing unit, the tail identifier in the second dictionary entry with a fifth identifier of the fifth record; and

store, using the first processing unit, the fourth identifier in a fifth shared memory location, the fifth shared memory location associated with the fifth record and shared with the second processing unit.

5. A system according to claim 1 , wherein the first processing unit is a first processor core of the processor, and the second processing unit is a second processor core of the processor.

6. A method for a plurality of data records, each of the plurality of data records associated with one of a plurality of key values, the method implemented by a computing system in response to execution of program code by a processor of the computing system, the method comprising:

determining a first plurality of the plurality of data records assigned to a first processing unit of the processor;

identifying, a first record of the first plurality of data records, the first record associated with a first key value;

generating, using the first processing unit, a first dictionary entry of a first dictionary for the first key value;

storing, using the first processing unit, a first identifier of the first record as a tail identifier and as a head identifier in the first dictionary entry;

storing, using the first processing unit, an end flag in a first shared memory location, the first shared memory location associated with the first record and shared with a second processing unit of the processor;

identifying, a second record of the first plurality of data records, the second record associated with the first key value;

replacing, using the first processing unit, the tail identifier in the first dictionary entry with a second identifier of the second record;

storing, using the first processing unit, the first identifier in a second shared memory location, the second shared memory location associated with the second record and shared with the second processing unit;

determining, using the second processing unit, a second plurality of the plurality of data records assigned to the second processing unit;

identifying, using the second processing unit, a third record of the second plurality of data records, the third record associated with the first key value;

generating, using the second processing unit, a second dictionary entry of a second dictionary for the first key value;

storing, using the second processing unit, a third identifier of the third record of the second plurality of data records as a second tail identifier and as a second head identifier in the second dictionary entry;

storing, using the second processing unit, a second end flag in a third shared memory location, the third shared memory location associated with the third record and shared with the first processing unit;

identifying, using the second processing unit, a fourth record of the first plurality of data records, the fourth record associated with the first key value;

replacing, using the second processing unit, the second tail identifier in the second dictionary entry with a fourth identifier of the fourth record; and

storing, using the second processing unit, the third identifier in a fourth shared memory location, the fourth shared memory location associated with the fourth record and shared with the first processing unit.

7. A method according to claim 6 , further comprising:

identifying, using the first processing unit, a third record of the first plurality of data records, the third record associated with the first key value;

replacing, using the first processing unit, the tail identifier in the first dictionary entry with an identifier of the third record of the first plurality of data records; and

storing, using the first processing unit, the second identifier in a third shared memory location, the third shared memory location associated with the third record and shared with the second processing unit.

8. A method according to claim 6 , further comprising:

identifying, using the first processing unit, a third record of the first plurality of data records, the third record associated with a second key value;

generating, using the first processing unit, a second dictionary entry of the first dictionary for the second key value;

storing, using the first processing unit, an identifier of the third record of the first plurality of data records as a third tail identifier and as a third head identifier in the second dictionary entry of the first dictionary;

storing, using the first processing unit, a third end flag in a third shared memory location, the third shared memory location associated with the third record and shared with the second processing unit;

identifying, a fourth record of the first plurality of data records, the fourth record of the first plurality of data records associated with the second key value;

replacing, using the first processing unit, the third tail identifier in the second dictionary entry of the first dictionary with a fourth identifier of the fourth record of the first plurality of data records; and

storing, using the first processing unit, the identifier of the third record of the first plurality of data records in a fourth shared memory location, the fourth shared memory location associated with the fourth record and shared with the second processing unit.

9. A method according to claim 8 , further comprising:

identifying, using the first processing unit, a fifth record of the first plurality of data records, the fifth record associated with the second key value;

replacing, using the first processing unit, the tail identifier in the second dictionary entry with a fifth identifier of the fifth record; and

storing, using the first processing unit, the fourth identifier in a fifth shared memory location, the fifth shared memory location associated with the fifth record and shared with the second processing unit.

10. A method according to claim 6 , wherein the first processing unit is a first processor core, and the second processing unit is a second processor core.

11. A non-transitory medium storing computer-executable program code, the program code executable by a computing device to:

determine a first plurality of the plurality of data records assigned to a first processing unit;

identify, using the first processing unit, a first record of the first plurality of data records, the first record associated with a first key value;

generate, using the first processing unit, a first dictionary entry of a first dictionary for the first key value;

store, using the first processing unit, a first identifier of the first record as a tail identifier and as a head identifier in the first dictionary entry;

store, using the first processing unit, an end flag in a first shared memory location, the first shared memory location associated with the first record and shared with a second processing unit;

identify, using the first processing unit, a second record of the first plurality of data records, the second record associated with the first key value;

replace, using the first processing unit, the tail identifier in the first dictionary entry with a second identifier of the second record;

store, using the first processing unit, the first identifier in a second shared memory location, the second shared memory location associated with the second record and shared with a second processing unit;

determine, using the second processing unit, a second plurality of the plurality of data records assigned to the second processing unit;

identify, using the second processing unit, a third record of the second plurality of data records, the third record associated with the first key value;

generate, using the second processing unit, a second dictionary entry of a second dictionary for the first key value;

store, using the second processing unit, a third identifier of the third record of the second plurality of data records as a second tail identifier and as a second head identifier in the second dictionary entry;

store, using the second processing unit, a second end flag in a third shared memory location, the third shared memory location associated with the third record and shared with the first processing unit;

identify, using the second processing unit, a fourth record of the first plurality of data records, the fourth record associated with the first key value;

replace, using the second processing unit, the second tail identifier in the second dictionary entry with a fourth identifier of the fourth record; and

store, using the second processing unit, the third identifier in a fourth shared memory location, the fourth shared memory location associated with the fourth record and shared with the first processing unit.

12. A medium according to claim 11 , the program code further executable by a computing device to:

identify, using the first processing unit, a third record of the first plurality of data records, the third record associated with the first key value;

replace, using the first processing unit, the tail identifier in the first dictionary entry with a third identifier of the third record of the first plurality of data records; and

store, using the first processing unit, the second identifier in a third shared memory location, the third shared memory location associated with the third record and shared with the second processing unit.

13. A medium according to claim 11 , the program code further executable by a computing device to:

identify, using the first processing unit, a third record of the first plurality of data records, the third record associated with a second key value;

generate, using the first processing unit, a second dictionary entry of the first dictionary for the second key value;

store, using the first processing unit, an identifier of the third record of the first plurality of data records as a third tail identifier and as a third head identifier in the second dictionary entry of the first dictionary;

store, using the first processing unit, a third end flag in a third shared memory location, the third shared memory location associated with the third record and shared with the second processing unit;

identify, using the first processing unit, a fourth record of the first plurality of data records, the fourth record of the first plurality of data records associated with the second key value;

replace, using the first processing unit, the third tail identifier in the second dictionary entry of the first dictionary with a fourth identifier of the fourth record of the first plurality of data records; and

store, using the first processing unit, the identifier of the third record of the first plurality of data records in a fourth shared memory location, the fourth shared memory location associated with the fourth record and shared with the second processing unit.

14. A medium according to claim 13 , the program code further executable by a computing device to:

identify, using the first processing unit, a fifth record of the first plurality of data records, the fifth record associated with the second key value;

replace, using the first processing unit, the tail identifier in the second dictionary entry with a fifth identifier of the fifth record; and

store, using the first processing unit, the fourth identifier in a fifth shared memory location, the fifth shared memory location associated with the fifth record and shared with the second processing unit.

15. A medium according to claim 11 , wherein the first processing unit is a first processor core, and the second processing unit is a second processor core.

16. A medium according to claim 11 , wherein the first processing unit is a first processor, and the second processing unit is a second processor.

Assignments (2)
CHANGE OF NAME Recorded Aug 26, 2014
From: SAP AG
To: SAP SE
Reel/Frame 033625/0223 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 15, 2012
From: BOHNSACK, NICO; STAMMERJOHANN, KAI; TRANSIER, FREDERIK
To: SAP AG
Reel/Frame 029128/0408 →