IP Library Granted Patent US 12,445,528
Granted Patent B2
US 12,445,528 · App. 18/515,082 · Granted Oct 14, 2025

Enhanced processing of user profiles using data structures specialized for graphical processing units (GPUs)

Inventors: David Lawrence Rager (Austin, TX); Andrew Edward Brownsword (Bowen Island, CA); Guy Lewis Steele, Jr. (Lexington, MA)
Assignee: Oracle International Corporation
H04L67/306G06F9/3009G06F9/4881G06F9/52G06F16/2237G06F16/2246G06F16/258G06F16/9027G06Q30/0201G06Q30/0269G06T1/20G06Q50/01
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 12,445,528
App. No.
18/515,082
Filed
Nov 20, 2023
Granted
Oct 14, 2025
Kind
B2
Art Unit
2454
USPC
709/217
Abstract

Disclosed are techniques for processing user profiles using data structures that are specialized for processing by a GPU. More particularly, the disclosed techniques relate to systems and methods for evaluating characteristics of user profiles to determine whether to offload certain user profiles to the GPU for processing or to process the user profiles locally by one or more central processing units (CPUs). Processing user profiles may include comparing the interest tags included in the user profiles with logic trees, for example, logic trees representing marketing campaigns, to identify user profiles that match the campaigns.

Claims (57)

1. A computer-implemented method comprising:

accessing a set of user profiles each user profile of the set of user profiles including one or more tags, each tag of the one or more tags characterizing a user based on an interaction between a user device and a web server or an application server;

determining that one or more characteristics of each user profile of the set of user profiles satisfies an offloading condition that is a condition to transfer the set of user profiles from a cloud service to a graphical processing unit (GPU);

in response to determining that the offloading condition is satisfied:

transforming, using the GPU, the set of user profiles into a plurality of subsets of user profiles;

storing, for each subset of the plurality of subsets of user profiles, the tags for the subset of user profiles in in a manner that accounts for the tags and a number of threads in a warp of the GPU, wherein a number of threads in the warp of the GPU equals a number of user profiles in the subset of user profiles;

determining, using the warps of the GPU, one or more user profiles of the set of user profiles that satisfy a logic of one or more logic trees, wherein the one or more user profiles are determined based on one or more tags of one or more specialized data structures associated with the subsets of the set of users and one or more operand values of the one or more logic trees; and

outputting the one or more user profiles.

2. The computer-implemented method of Claim 1 , further comprising:

creating at least one array, wherein the tags for the subset of user profiles are stored in or in accordance with the at least one array, wherein the at least one array stores tags for the subset of user profiles in a sorted order, wherein tags for a user profile are arranged sequentially in the at least one array according to identifiers.

3. The computer-implemented method of Claim 1 , further comprising:

creating at least one array, wherein the tags for the subset of user profiles are stored in or in accordance with the at least one array, wherein the at least one array stores tags for the subset of user profiles in an interleaved manner, wherein tags for a user profile are interleaved with tags for another user profile in the at least one array according to identifiers.

4. The computer-implemented method of claim 1 , wherein, for each subset of the plurality of subsets of user profiles, each thread of the number of threads in the warp is configured to execute instructions running on a core of the GPU.

5. The computer-implemented method of claim 1 , wherein determining, using the warps of the GPU, one or more user profiles of the set of user profiles that satisfy logic of one or more logic trees comprises reading a specialized data structure of the specialized data structures with a warp of the GPU.

6. The computer-implemented method of claim 1 , further comprising:

accessing at least one array, wherein the tags for the subset of user profiles are stored in or in accordance with the at least one array,

wherein determining, using the warps of the GPU, one or more user profiles of the set of user profiles that satisfy logic of one or more logic trees comprises:

retrieving tags from an array of the at least one array;

identifying one or more operand values of a logic tree of the one or more logic trees that references the retrieved tags; and

setting the logic tree of the one or more logic trees as true.

7. A system comprising:

one or more processors;

one or more non-transitory computer-readable media storing instructions, which, when executed by the system, cause the system to perform a set of actions including:

accessing a set of user profiles, each user profile of the set of user profiles including one or more tags, each tag of the one or more tags characterizing an interest of a user detected based on an interaction between a user device and a web server or an application server;

determining that one or more characteristics of each user profile of the set of user profiles satisfies an offloading condition that is a condition to transfer the set of user profiles from a cloud service to a graphical processing unit (GPU);

in response to determining that the offloading condition is satisfied;

transforming, using the GPU, the set of user profiles into a plurality of subsets of user profiles; and

storing, for each subset of the plurality of subsets of user profiles, the tags for the subset of user profiles in in a manner that accounts for the tags and a number of threads in a warp of the GPU, wherein a number of threads in the warp of the GPU equals a number of user profiles in the subset of user profiles;

determining, using the warps of the GPU, one or more user profiles of the set of user profiles that satisfy a logic of one or more logic trees wherein the one or more user profiles are determined based on one or more tags of one or more specialized data structures associated with the subsets of the set of users and one or more operand values of the one or more logic trees; and

outputting the one or more user profiles.

8. The system of Claim 7 , further comprising:

creating at least one array, wherein the tags for the subset of user profiles are stored in or in accordance with the at least one array, wherein the at least one array stores tags for the subset of user profiles in a sorted order, wherein tags for a user profile are arranged sequentially in the at least one array according to identifiers.

9. The system of Claim 7 , further comprising:

creating at least one array, wherein the tags for the subset of user profiles are stored in or in accordance with the at least one array, wherein the at least one array stores tags for the subset of user profiles in an interleaved manner, wherein tags for a user profile are interleaved with tags for another user profile in the at least one array according to identifiers.

10. The system of claim 7 , The computer-implemented method of claim 1 , wherein, for each subset of the plurality of subsets of user profiles, each thread of the number of threads in the warp is configured to execute instructions running on a core of the GPU.

11. The system of claim 7 , wherein determining, using the warps of the GPU, one or more user profiles of the set of user profiles that satisfy logic of one or more logic trees comprises reading a specialized data structure of the specialized data structures with a warp of the GPU.

12. The system of claim 7 , further comprising:

accessing at least one array, wherein the tags for the subset of user profiles are stored in or in accordance with the at least one array,

wherein determining, using the warps of the GPU, one or more user profiles of the set of user profiles that satisfy logic of one or more logic trees comprises:

retrieving tags from an array of the at least one array;

identifying one or more operand values of a logic tree of the one or more logic trees that references the retrieved tags; and

setting the logic tree of the one or more logic trees as true.

13. A computer-program product tangibly embodied in a non-transitory machine-readable storage medium, including instructions configured to cause one or more data processors to perform a set of actions including:

accessing a set of user profiles, each user profile of the set of user profiles including one or more tags, each tag of the one or more tags characterizing an interest of a user detected based on an interaction between a user device and a web server or an application server;

determining that one or more characteristics of each user profile of the set of user profiles satisfies an offloading condition that is a condition to transfer the set of user profiles from a cloud service to a graphical processing unit (GPU);

in response to determining that the offloading condition is satisfied:

transforming, using the GPU, the set of user profiles into a plurality of subsets of user profiles; and

storing, for each subset of the plurality of subsets of user profiles, the tags for the subset of user profiles in in a manner that accounts for the tags and a number of threads in a warp of the GPU, wherein a number of threads in the warp of the GPU equals a number of user profiles in the subset of user profiles;

determining, using the warps of the GPU, one or more user profiles of the set of user profiles that satisfy a logic of one or more logic trees, wherein the one or more user profiles are determined based on one or more tags of one or more specialized data structures associated with the subsets of the set of users and one or more operand values of the one or more logic trees; and

outputting the one or more user profiles.

14. The computer-program product of claim 13 , further comprising:

creating at least one array, wherein the tags for the subset of user profiles are stored in or in accordance with the at least one array,

wherein the at least one array stores tags for the subset of user profiles in a sorted order, wherein tags for a user profile are arranged sequentially in the at least one array according to identifiers.

15. The computer-program product of claim 13 , further comprising:

creating at least one array, wherein the tags for the subset of user profiles are stored in or in accordance with the at least one array, wherein the at least one array stores tags for the subset of user profiles in an interleaved manner, wherein tags for a user profile are interleaved with tags for another user profile in the at least one array according to interest identifiers.

16. The computer-program product of claim 13 , The computer-implemented method of claim 1 , wherein, for each subset of the plurality of subsets of user profiles, each thread of the number of threads in the warp is configured to execute instructions running on a core of the GPU.

17. The computer-program product of claim 13 , wherein determining, using the warps of the GPU, one or more user profiles of the set of user profiles that satisfy logic of one or more logic trees comprises reading a specialized data structure of the specialized data structures with a warp of the GPU.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 12, 2023
From: RAGER, DAVID LAWRENCE; BROWNSWORD, ANDREW EDWARD; STEELE, GUY LEWIS, JR
To: ORACLE INTERNATIONAL CORPORATION
Reel/Frame 065850/0154 →
Continuity (4)
Continuation 17830591 · Jun 2, 2022
Continuation 17085819 · Oct 30, 2020
Provisional Application 62929662 · Nov 1, 2019
Related Publication 20240098151A1 · Mar 21, 2024
References Cited (37)
US 6453347B1 · Revashetti et al. · 2002 [cited by applicant]
US 6801909B2 · Delgado et al. · 2004 [cited by applicant]
US 9282162B2 · Boyle et al. · 2016 [cited by applicant]
US 9298777B2 · Lawrence · 2016 [cited by applicant]
US 9299113B2 · Alonso et al. · 2016 [cited by applicant]
US 10116680B1 · Han et al. · 2018 [cited by applicant]
US 10311480B2 · Singh et al. · 2019 [cited by applicant]
US 10657559B2 · Sinha · 2020 [cited by examiner]
US 10742716B1 · Finkelstein et al. · 2020 [cited by applicant]
US 10950135B2 · Ghatage et al. · 2021 [cited by applicant]
US 11375040B2 · Rager et al. · 2022 [cited by applicant]
US 11475338B2 · Zheng · 2022 [cited by applicant]
US 11599946B2 · Yeh · 2023 [cited by applicant]
US 20030074400A1 · Brooks et al. · 2003 [cited by applicant]
US 20040128617A1 · Oh · 2004 [cited by applicant]
US 20080162537A1 · Mancini · 2008 [cited by applicant]
US 20090265220A1 · Bayraktar et al. · 2009 [cited by applicant]
US 20120226560A1 · Chang et al. · 2012 [cited by applicant]
US 20140122245A1 · Qu et al. · 2014 [cited by applicant]
US 20150106209A1 · Levi et al. · 2015 [cited by applicant]
US 20150213074A1 · Varakin et al. · 2015 [cited by applicant]
US 20160055542A1 · Hui · 2016 [cited by examiner]
US 20160253710A1 · Publicover et al. · 2016 [cited by applicant]
US 20160307223A1 · García Gómez · 2016 [cited by examiner]
US 20170228784A1 · Singh et al. · 2017 [cited by applicant]
US 20180032568A1 · Pal · 2018 [cited by examiner]
US 20180130091A1 · Rae · 2018 [cited by applicant]
US 20180217836A1 · Johnson · 2018 [cited by applicant]
US 20180240042A1 · Boada · 2018 [cited by examiner]
US 20200293568A1 · Lu · 2020 [cited by examiner]
US 20200410546A1 · Arora · 2020 [cited by examiner]
Liu et al., “Multi-Interest Network with Dynamic Routing for Recommendation at Tmall”; https://doi.org/10.1145/3357384; 2019 Association for Computing Machinery; (Liu_2019.pdf; pp. 2615-2623) (Year: 2019). [cited by applicant]
Non-Final Office Action for U.S. Appl. No. 17/830,591, dated Apr. 12, 2023. [cited by applicant]
Notice of Allowance for U.S. Appl. No. 17/085,811, dated Jan. 12, 2023. [cited by applicant]
Notice of Allowance for U.S. Appl. No. 17/085,819, dated Mar. 2, 2022. [cited by applicant]
Notice of Allowance for U.S. Appl. No. 17/085,842, dated Aug. 4, 2023. [cited by applicant]
Notice of Allowance for U.S. Appl. No. 17/830,591, dated Aug. 25, 2023. [cited by applicant]