MLchartDataset catalogue

Patent · US10963176B2 · B2 · US

Technologies for offloading acceleration task scheduling operations to accelerator sleds

(11) Publication number
US10963176B2
(21) Application number
15/721,821
(22) Filing date
2017-09-30
(30) Priority date
2016-11-29
(43) Publication date
2021-03-30
(45) Date of grant
2021-03-30
(51) IPC
G06F 9/38; G06F 9/48; G06F 9/50; H04L 47/20; G06F 11/07; G06F 11/30; G06F 11/34; G06F 12/02; G06F 12/06; G06F 13/16; G06F 16/174; G06F 21/57; G06F 21/62; G06F 21/73; G06F 21/76; G06F 3/06; G06F 7/06; G06F 8/65; G06F 8/654; G06F 8/656; G06F 8/658; G06F 9/4401; G06F 9/54; G06T 1/20; G06T 1/60; G06T 9/00; H01R 13/453; H01R 13/631; H03K 19/173; H03M 7/30; H03M 7/40; H03M 7/42; H04L 12/28; H04L 12/46; H04L 9/08; H05K 7/14
(52) CPC
  • G06F Electric digital data processing: 9/5005, 11/0709, 11/0751, 11/079, 11/1453, 11/3006, 11/3034, 11/3055, 11/3079, 11/3409, 12/023, 12/0284, 12/0692, 13/1652, 13/4022, 13/4027, 15/161, 15/80, 16/1744, 21/44, 21/57, 21/6218, 21/70, 21/73, 21/76, 2212/401, 2212/402, 2221/2107, 3/0604, 3/0608, 3/0611, 3/0613, 3/0617, 3/0641, 3/0647, 3/065, 3/0653, 3/067, 7/06, 8/65, 8/654, 8/656, 8/658, 9/3851, 9/3891, 9/4401, 9/4881, 9/5038, 9/5044, 9/505, 9/5083, 9/544
  • G06T Image data processing or generation, in general: 1/20, 1/60, 9/005
  • H01R Electrically-conductive connections; structural associations of a plurality of mutually-insulated electrical connecting elements; coupling devices; current collectors: 13/453, 13/4536, 13/4538, 13/631
  • H03K Pulse technique: 19/1731
  • H03M Coding; decoding; code conversion in general: 7/3084, 7/40, 7/42, 7/60, 7/6011, 7/6017, 7/6029
  • H04L Transmission of digital information, e.g. telegraphic communication: 12/2881, 12/4633, 41/044, 41/046, 41/0816, 41/0853, 41/0895, 41/0896, 41/12, 41/142, 41/40, 43/04, 43/06, 43/08, 43/0894, 47/20, 47/2441, 47/78, 47/83, 49/104, 61/2007, 63/1425, 67/10, 67/1014, 67/327, 67/36, 9/0822
  • H05K Printed circuits; casings or constructional details of electric apparatus; manufacture of assemblages of electrical components: 7/1452, 7/1487, 7/1492
(73) Assignee
Intel Corp
(72) Inventors
Susanne M. Balle; Francesc Guim Bernat; Slawomir PUTYRSKI; Joe Grecco; Henry Mitchel; Rahul Khanna; Evan Custodio
(54) Title
Technologies for offloading acceleration task scheduling operations to accelerator sleds
(57) Abstract

Technologies for offloading acceleration task scheduling operations to accelerator sleds include a compute device to receive a request from a compute sled to accelerate the execution of a job, which includes a set of tasks. The compute device is also to analyze the request to generate metadata indicative of the tasks within the job, a type of acceleration associated with each task, and a data dependency between the tasks. Additionally the compute device is to send an availability request, including the metadata, to one or more micro-orchestrators of one or more accelerator sleds communicatively coupled to the compute device. The compute device is further to receive availability data from the one or more micro-orchestrators, indicative of which of the tasks the micro-orchestrator has accepted for acceleration on the associated accelerator sled. Additionally, the compute device is to assign the tasks to the one or more micro-orchestrators as a function of the availability data.

Full text
View on Google Patents

Claims (28)

  1. A compute device comprising: an I/O subsystem and circuitry to: receive a request from a compute sled to accelerate execution of a job, wherein the job includes a set of tasks; analyze the request to generate metadata indicative of the tasks within the job, a type of acceleration associated with each task, and a data dependency between the tasks; send an availability request to a micro-orchestrator of an accelerator sled communicatively coupled to the compute device, wherein the availability request includes the metadata; receive availability data from the micro-orchestrator, wherein the availability data is indicative of which of the tasks the micro-orchestrator has accepted for acceleration on an associated accelerator sled; and assign the tasks to the micro-orchestrator as a function of the availability data.
  2. The compute device of claim 1, wherein to receive a request to accelerate a job comprises to receive a request that includes code indicative of operations to be performed within the job; and wherein to analyze the request comprises to analyze the code to identify operations to be grouped into tasks.
  3. The compute device of claim 1, wherein to analyze the request comprises to determine a type of acceleration for each task.
  4. The compute device of claim 1, wherein to analyze the request comprises to determine a data dependence between the tasks.
  5. The compute device of claim 4, wherein to determine the data dependence between the tasks comprises determine a subdivision of the tasks to operate on different portions of a data set concurrently.
  6. The compute device of claim 1, wherein to receive the request to accelerate a job comprises to receive a request that identifies a workload phase associated with the job; and wherein the circuitry is further to associate the tasks within the job with a workload phase identifier.
  7. The compute device of claim 1, wherein to send an availability request to a micro-orchestrator comprises to send the availability request to multiple micro-orchestrators.
  8. The compute device of claim 1, wherein to receive availability data from the micro-orchestrator comprises to receive an indication of an estimated time to complete the tasks accepted by a micro-orchestrator.
  9. The compute device of claim 1, wherein to receive availability data from the micro-orchestrator comprises to receive an indication of whether an accelerator sled associated with the micro-orchestrator can access a shared memory with another accelerator sled for parallel execution of one or more of the tasks.
  10. The compute device of claim 1, wherein the accelerator sled is one of a plurality of accelerator sleds and wherein to assign the tasks to the micro-orchestrator comprises to assign the tasks as a function of a best fit of each associated accelerated sled to the tasks.
  11. The compute device of claim 10, wherein to assign the tasks as a function of a best fit of each associated accelerated sled comprises to consolidate tasks on the associated accelerator sleds to reduce network congestion.
  12. The compute device of claim 10, wherein to assign the tasks as a function of a best fit of each associated accelerated sled comprises to assign the tasks as a function of estimated time completion of each task.
  13. One or more non-transitory machine-readable storage media comprising a plurality of instructions stored thereon that, in response to being executed, cause a compute device to: receive a request from a compute sled to accelerate execution of a job, wherein the job includes a set of tasks; analyze the request to generate metadata indicative of the tasks within the job, a type of acceleration associated with each task, and a data dependency between the tasks; send an availability request to a micro-orchestrator of an accelerator sled communicatively coupled to the compute device, wherein the availability request includes the metadata; receive availability data from the micro-orchestrator, wherein the availability data is indicative of which of the tasks the micro-orchestrator has accepted for acceleration on an associated accelerator sled; and assign the tasks to the micro-orchestrator as a function of the availability data.
  14. The one or more non-transitory machine-readable storage media of claim 13, wherein to receive a request to accelerate a job comprises to receive a request that includes code indicative operations to be performed within the job; and wherein to analyze the request comprises to analyze the code to identify operations to be grouped into tasks.
  15. The one or more non-transitory machine-readable storage media of claim 13, wherein to analyze the request comprises to determine a type of acceleration for each task.
  16. The one or more non-transitory machine-readable storage media of claim 13, wherein to analyze the request comprises to determine a data dependence between the tasks.
  17. The one or more non-transitory machine-readable storage media of claim 16, wherein to determine the data dependence between the tasks comprises determine a subdivision of the tasks to operate on different portions of a data set concurrently.
  18. The one or more non-transitory machine-readable storage media of claim 13, wherein to receive the request to accelerate a job comprises to receive a request that identifies a workload phase associated with the job; and wherein the plurality of instructions, when executed, further cause the compute device to associate the tasks within the job with a workload phase identifier.
  19. The one or more non-transitory machine-readable storage media of claim 13, wherein to send an availability request to a micro-orchestrator comprises to send the availability request to multiple micro-orchestrators.
  20. The one or more non-transitory machine-readable storage media of claim 13, wherein to receive availability data from the micro-orchestrator comprises to receive an indication of an estimated time to complete the tasks accepted by a micro-orchestrator.
  21. The one or more non-transitory machine-readable storage media of claim 13, wherein to receive availability data from the micro-orchestrator comprises to receive an indication of whether an accelerator sled associated with the micro-orchestrator can access a shared memory with another accelerator sled for parallel execution of one or more of the tasks.
  22. The one or more non-transitory machine-readable storage media of claim 13, wherein the accelerator sled is one of a plurality of accelerator sleds and wherein to assign the tasks to the micro-orchestrator comprises to assign the tasks as a function of a best fit of each associated accelerated sled to the tasks.
  23. The one or more non-transitory machine-readable storage media of claim 22, wherein to assign the tasks as a function of a best fit of each associated accelerated sled comprises to consolidate tasks on associated accelerator sleds to reduce network congestion.
  24. The one or more non-transitory machine-readable storage media of claim 22, wherein to assign the tasks as a function of a best fit of each associated accelerated sled comprises to assign the tasks as a function of estimated time completion of each task.
  25. A compute device comprising: circuitry for receiving a request from a compute sled to accelerate execution of a job, wherein the job includes a set of tasks; means for analyzing the request to generate metadata indicative of the tasks within the job, a type of acceleration associated with each task, and a data dependency between the tasks; circuitry for sending an availability request to a micro-orchestrator of an accelerator sled communicatively coupled to the compute device, wherein the availability request includes the metadata; circuitry for receiving availability data from the micro-orchestrator, wherein the availability data is indicative of which of the tasks the micro-orchestrator has accepted for acceleration on an associated accelerator sled; and means for assigning the tasks to the micro-orchestrator as a function of the availability data.
  26. A method comprising: receiving, by a compute device, a request from a compute sled to accelerate execution of a job, wherein the job includes a set of tasks; analyzing, by the compute device, the request to generate metadata indicative of the tasks within the job, a type of acceleration associated with each task, and a data dependency between the tasks; sending, by the compute device, an availability request to a micro-orchestrator of an accelerator sled communicatively coupled to the compute device, wherein the availability request includes the metadata; receiving, by the compute device, availability data from the micro-orchestrator, wherein the availability data is indicative of which of the tasks the micro-orchestrator has accepted for acceleration on an associated accelerator sled; and assigning, by the compute device, the tasks to the micro-orchestrator as a function of the availability data.
  27. The method of claim 26, wherein receiving a request to accelerate a job comprises receiving a request that includes code indicative operations to be performed within the job; and wherein analyzing the request comprises analyzing the code to identify operations to be grouped into tasks.
  28. The method of claim 26, wherein analyzing the request comprises determining a type of acceleration for each task.

Description

Typically, in systems in which workloads are distributed among multiple compute devices (e.g., in a data center), a centralized server may track the utilization of each compute device, maintain a database of the features of each compute device (e.g., processing power, ability to accelerate certain types of tasks, etc.), and match the workloads to compute devices as a function of the loads on the compute devices (e.g., to avoid overloading a compute device) and as a function of the feature sets of the compute devices (e.g., assigning a cryptographic workload to a compute device with specialized circuitry for accelerating the execution of cryptographic operations). However, tracking the available features and the loads on the compute devices may be taxing on the centralized server, especially as the number compute devices and workloads in the data center increases.

To compensate for the relatively heavy processing load, the centralized server may make scheduling decisions using a reduced set of information and/or a less complex scheduling process, to maintain the ability to provide scheduling decisions across the data center. As such, it is possible that the centralized server may make scheduling decisions that overlook available features of the compute devices (e.g., that a compute device includes a field programmable gate array (FPGA) that is programmed to accelerate a particular type of function), and/or does not account for varying types of operations within a workload that may benefit (e.g., execute faster) from different types of acceleration, rather than a single type of acceleration.

Citations (16)

  • US20100191823A1
  • US20120054770A1
  • US20130179485A1
  • US20130232495A1
  • US9026765B1
  • US20150007182A1
  • US20170046179A1
  • US20170116004A1
  • US20170317945A1
  • US10034407B2
  • US10045098B2
  • US10085358B2
  • US20180077235A1
  • US20180150299A1
  • US20180150330A1
  • US20190065281A1
Record as JSON
{
  "publication_number": "US10963176B2",
  "country": "US",
  "kind": "B2",
  "title": "Technologies for offloading acceleration task scheduling operations to accelerator sleds",
  "abstract": "Technologies for offloading acceleration task scheduling operations to accelerator sleds include a compute device to receive a request from a compute sled to accelerate the execution of a job, which includes a set of tasks. The compute device is also to analyze the request to generate metadata indicative of the tasks within the job, a type of acceleration associated with each task, and a data dependency between the tasks. Additionally the compute device is to send an availability request, including the metadata, to one or more micro-orchestrators of one or more accelerator sleds communicatively coupled to the compute device. The compute device is further to receive availability data from the one or more micro-orchestrators, indicative of which of the tasks the micro-orchestrator has accepted for acceleration on the associated accelerator sled. Additionally, the compute device is to assign the tasks to the one or more micro-orchestrators as a function of the availability data.",
  "claims": [
    "1. A compute device comprising: an I/O subsystem and circuitry to: receive a request from a compute sled to accelerate execution of a job, wherein the job includes a set of tasks; analyze the request to generate metadata indicative of the tasks within the job, a type of acceleration associated with each task, and a data dependency between the tasks; send an availability request to a micro-orchestrator of an accelerator sled communicatively coupled to the compute device, wherein the availability request includes the metadata; receive availability data from the micro-orchestrator, wherein the availability data is indicative of which of the tasks the micro-orchestrator has accepted for acceleration on an associated accelerator sled; and assign the tasks to the micro-orchestrator as a function of the availability data.",
    "2. The compute device of claim 1, wherein to receive a request to accelerate a job comprises to receive a request that includes code indicative of operations to be performed within the job; and wherein to analyze the request comprises to analyze the code to identify operations to be grouped into tasks.",
    "3. The compute device of claim 1, wherein to analyze the request comprises to determine a type of acceleration for each task.",
    "4. The compute device of claim 1, wherein to analyze the request comprises to determine a data dependence between the tasks.",
    "5. The compute device of claim 4, wherein to determine the data dependence between the tasks comprises determine a subdivision of the tasks to operate on different portions of a data set concurrently.",
    "6. The compute device of claim 1, wherein to receive the request to accelerate a job comprises to receive a request that identifies a workload phase associated with the job; and wherein the circuitry is further to associate the tasks within the job with a workload phase identifier.",
    "7. The compute device of claim 1, wherein to send an availability request to a micro-orchestrator comprises to send the availability request to multiple micro-orchestrators.",
    "8. The compute device of claim 1, wherein to receive availability data from the micro-orchestrator comprises to receive an indication of an estimated time to complete the tasks accepted by a micro-orchestrator.",
    "9. The compute device of claim 1, wherein to receive availability data from the micro-orchestrator comprises to receive an indication of whether an accelerator sled associated with the micro-orchestrator can access a shared memory with another accelerator sled for parallel execution of one or more of the tasks.",
    "10. The compute device of claim 1, wherein the accelerator sled is one of a plurality of accelerator sleds and wherein to assign the tasks to the micro-orchestrator comprises to assign the tasks as a function of a best fit of each associated accelerated sled to the tasks.",
    "11. The compute device of claim 10, wherein to assign the tasks as a function of a best fit of each associated accelerated sled comprises to consolidate tasks on the associated accelerator sleds to reduce network congestion.",
    "12. The compute device of claim 10, wherein to assign the tasks as a function of a best fit of each associated accelerated sled comprises to assign the tasks as a function of estimated time completion of each task.",
    "13. One or more non-transitory machine-readable storage media comprising a plurality of instructions stored thereon that, in response to being executed, cause a compute device to: receive a request from a compute sled to accelerate execution of a job, wherein the job includes a set of tasks; analyze the request to generate metadata indicative of the tasks within the job, a type of acceleration associated with each task, and a data dependency between the tasks; send an availability request to a micro-orchestrator of an accelerator sled communicatively coupled to the compute device, wherein the availability request includes the metadata; receive availability data from the micro-orchestrator, wherein the availability data is indicative of which of the tasks the micro-orchestrator has accepted for acceleration on an associated accelerator sled; and assign the tasks to the micro-orchestrator as a function of the availability data.",
    "14. The one or more non-transitory machine-readable storage media of claim 13, wherein to receive a request to accelerate a job comprises to receive a request that includes code indicative operations to be performed within the job; and wherein to analyze the request comprises to analyze the code to identify operations to be grouped into tasks.",
    "15. The one or more non-transitory machine-readable storage media of claim 13, wherein to analyze the request comprises to determine a type of acceleration for each task.",
    "16. The one or more non-transitory machine-readable storage media of claim 13, wherein to analyze the request comprises to determine a data dependence between the tasks.",
    "17. The one or more non-transitory machine-readable storage media of claim 16, wherein to determine the data dependence between the tasks comprises determine a subdivision of the tasks to operate on different portions of a data set concurrently.",
    "18. The one or more non-transitory machine-readable storage media of claim 13, wherein to receive the request to accelerate a job comprises to receive a request that identifies a workload phase associated with the job; and wherein the plurality of instructions, when executed, further cause the compute device to associate the tasks within the job with a workload phase identifier.",
    "19. The one or more non-transitory machine-readable storage media of claim 13, wherein to send an availability request to a micro-orchestrator comprises to send the availability request to multiple micro-orchestrators.",
    "20. The one or more non-transitory machine-readable storage media of claim 13, wherein to receive availability data from the micro-orchestrator comprises to receive an indication of an estimated time to complete the tasks accepted by a micro-orchestrator.",
    "21. The one or more non-transitory machine-readable storage media of claim 13, wherein to receive availability data from the micro-orchestrator comprises to receive an indication of whether an accelerator sled associated with the micro-orchestrator can access a shared memory with another accelerator sled for parallel execution of one or more of the tasks.",
    "22. The one or more non-transitory machine-readable storage media of claim 13, wherein the accelerator sled is one of a plurality of accelerator sleds and wherein to assign the tasks to the micro-orchestrator comprises to assign the tasks as a function of a best fit of each associated accelerated sled to the tasks.",
    "23. The one or more non-transitory machine-readable storage media of claim 22, wherein to assign the tasks as a function of a best fit of each associated accelerated sled comprises to consolidate tasks on associated accelerator sleds to reduce network congestion.",
    "24. The one or more non-transitory machine-readable storage media of claim 22, wherein to assign the tasks as a function of a best fit of each associated accelerated sled comprises to assign the tasks as a function of estimated time completion of each task.",
    "25. A compute device comprising: circuitry for receiving a request from a compute sled to accelerate execution of a job, wherein the job includes a set of tasks; means for analyzing the request to generate metadata indicative of the tasks within the job, a type of acceleration associated with each task, and a data dependency between the tasks; circuitry for sending an availability request to a micro-orchestrator of an accelerator sled communicatively coupled to the compute device, wherein the availability request includes the metadata; circuitry for receiving availability data from the micro-orchestrator, wherein the availability data is indicative of which of the tasks the micro-orchestrator has accepted for acceleration on an associated accelerator sled; and means for assigning the tasks to the micro-orchestrator as a function of the availability data.",
    "26. A method comprising: receiving, by a compute device, a request from a compute sled to accelerate execution of a job, wherein the job includes a set of tasks; analyzing, by the compute device, the request to generate metadata indicative of the tasks within the job, a type of acceleration associated with each task, and a data dependency between the tasks; sending, by the compute device, an availability request to a micro-orchestrator of an accelerator sled communicatively coupled to the compute device, wherein the availability request includes the metadata; receiving, by the compute device, availability data from the micro-orchestrator, wherein the availability data is indicative of which of the tasks the micro-orchestrator has accepted for acceleration on an associated accelerator sled; and assigning, by the compute device, the tasks to the micro-orchestrator as a function of the availability data.",
    "27. The method of claim 26, wherein receiving a request to accelerate a job comprises receiving a request that includes code indicative operations to be performed within the job; and wherein analyzing the request comprises analyzing the code to identify operations to be grouped into tasks.",
    "28. The method of claim 26, wherein analyzing the request comprises determining a type of acceleration for each task."
  ],
  "description_excerpt": "Typically, in systems in which workloads are distributed among multiple compute devices (e.g., in a data center), a centralized server may track the utilization of each compute device, maintain a database of the features of each compute device (e.g., processing power, ability to accelerate certain types of tasks, etc.), and match the workloads to compute devices as a function of the loads on the compute devices (e.g., to avoid overloading a compute device) and as a function of the feature sets of the compute devices (e.g., assigning a cryptographic workload to a compute device with specialized circuitry for accelerating the execution of cryptographic operations). However, tracking the available features and the loads on the compute devices may be taxing on the centralized server, especially as the number compute devices and workloads in the data center increases.\n\nTo compensate for the relatively heavy processing load, the centralized server may make scheduling decisions using a reduced set of information and/or a less complex scheduling process, to maintain the ability to provide scheduling decisions across the data center. As such, it is possible that the centralized server may make scheduling decisions that overlook available features of the compute devices (e.g., that a compute device includes a field programmable gate array (FPGA) that is programmed to accelerate a particular type of function), and/or does not account for varying types of operations within a workload that may benefit (e.g., execute faster) from different types of acceleration, rather than a single type of acceleration.",
  "cpc": [
    "G06F 9/5005",
    "G06F 11/0709",
    "G06F 11/0751",
    "G06F 11/079",
    "G06F 11/1453",
    "G06F 11/3006",
    "G06F 11/3034",
    "G06F 11/3055",
    "G06F 11/3079",
    "G06F 11/3409",
    "G06F 12/023",
    "G06F 12/0284",
    "G06F 12/0692",
    "G06F 13/1652",
    "G06F 13/4022",
    "G06F 13/4027",
    "G06F 15/161",
    "G06F 15/80",
    "G06F 16/1744",
    "G06F 21/44",
    "G06F 21/57",
    "G06F 21/6218",
    "G06F 21/70",
    "G06F 21/73",
    "G06F 21/76",
    "G06F 2212/401",
    "G06F 2212/402",
    "G06F 2221/2107",
    "G06F 3/0604",
    "G06F 3/0608",
    "G06F 3/0611",
    "G06F 3/0613",
    "G06F 3/0617",
    "G06F 3/0641",
    "G06F 3/0647",
    "G06F 3/065",
    "G06F 3/0653",
    "G06F 3/067",
    "G06F 7/06",
    "G06F 8/65",
    "G06F 8/654",
    "G06F 8/656",
    "G06F 8/658",
    "G06F 9/3851",
    "G06F 9/3891",
    "G06F 9/4401",
    "G06F 9/4881",
    "G06F 9/5038",
    "G06F 9/5044",
    "G06F 9/505",
    "G06F 9/5083",
    "G06F 9/544",
    "G06T 1/20",
    "G06T 1/60",
    "G06T 9/005",
    "H01R 13/453",
    "H01R 13/4536",
    "H01R 13/4538",
    "H01R 13/631",
    "H03K 19/1731",
    "H03M 7/3084",
    "H03M 7/40",
    "H03M 7/42",
    "H03M 7/60",
    "H03M 7/6011",
    "H03M 7/6017",
    "H03M 7/6029",
    "H04L 12/2881",
    "H04L 12/4633",
    "H04L 41/044",
    "H04L 41/046",
    "H04L 41/0816",
    "H04L 41/0853",
    "H04L 41/0895",
    "H04L 41/0896",
    "H04L 41/12",
    "H04L 41/142",
    "H04L 41/40",
    "H04L 43/04",
    "H04L 43/06",
    "H04L 43/08",
    "H04L 43/0894",
    "H04L 47/20",
    "H04L 47/2441",
    "H04L 47/78",
    "H04L 47/83",
    "H04L 49/104",
    "H04L 61/2007",
    "H04L 63/1425",
    "H04L 67/10",
    "H04L 67/1014",
    "H04L 67/327",
    "H04L 67/36",
    "H04L 9/0822",
    "H05K 7/1452",
    "H05K 7/1487",
    "H05K 7/1492"
  ],
  "ipc": [
    "G06F 9/38",
    "G06F 9/48",
    "G06F 9/50",
    "H04L 47/20",
    "G06F 11/07",
    "G06F 11/30",
    "G06F 11/34",
    "G06F 12/02",
    "G06F 12/06",
    "G06F 13/16",
    "G06F 16/174",
    "G06F 21/57",
    "G06F 21/62",
    "G06F 21/73",
    "G06F 21/76",
    "G06F 3/06",
    "G06F 7/06",
    "G06F 8/65",
    "G06F 8/654",
    "G06F 8/656",
    "G06F 8/658",
    "G06F 9/4401",
    "G06F 9/54",
    "G06T 1/20",
    "G06T 1/60",
    "G06T 9/00",
    "H01R 13/453",
    "H01R 13/631",
    "H03K 19/173",
    "H03M 7/30",
    "H03M 7/40",
    "H03M 7/42",
    "H04L 12/28",
    "H04L 12/46",
    "H04L 9/08",
    "H05K 7/14"
  ],
  "assignees": [
    "Intel Corp"
  ],
  "inventors": [
    "Susanne M. Balle",
    "Francesc Guim Bernat",
    "Slawomir PUTYRSKI",
    "Joe Grecco",
    "Henry Mitchel",
    "Rahul Khanna",
    "Evan Custodio"
  ],
  "filing_date": "2017-09-30",
  "publication_date": "2021-03-30",
  "grant_date": "2021-03-30",
  "priority_date": "2016-11-29",
  "application_number": "US-201715721821-A",
  "family_id": "62190163",
  "cited_by_count": 14,
  "citations": [
    "US20100191823A1",
    "US20120054770A1",
    "US20130179485A1",
    "US20130232495A1",
    "US9026765B1",
    "US20150007182A1",
    "US20170046179A1",
    "US20170116004A1",
    "US20170317945A1",
    "US10034407B2",
    "US10045098B2",
    "US10085358B2",
    "US20180077235A1",
    "US20180150299A1",
    "US20180150330A1",
    "US20190065281A1"
  ]
}

Record 1,697 of 8,000 in Patents full text (MLC-0201). Request the full dataset.