IP Library Granted Patent US 9,992,256
Granted Patent B2
US 9,992,256 · App. 15/230,050 · Granted Jun 5, 2018

Distributed computing in R

Inventors: Edward Ma (Sunnyvale, CA); Indrajit Roy (Palo Alto, CA); Vishrut Gupta (Sunnyvale, CA); Meichun Hsu (Sunnyvale, CA)
Assignee: ENTIT SOFTWARE LLC
H04L67/02H04L41/14H04L67/10
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,992,256
App. No.
15/230,050
Filed
Aug 5, 2016
Granted
Jun 5, 2018
Kind
B2
Art Unit
2457
USPC
709/223
Abstract

Examples disclosed herein relate to distributed computing in R. Some examples disclosed herein may include identifying a distributed multivariate apply (dmapply) operation and an invocation of a distributed computing backend and determining a function referenced in the dmapply operation. A distributed backend driver associated with the invoked distributed computing backend may translate the determined function to a function native to an R application programming interface (API) of the invoked distributed computing backend and may provide the translated function to the invoked distributed computing backend to perform the translated function on a distributed data set referenced in the dmapply operation.

Claims (57)

1. A method for distributed computing in R, the method performed by at least one processor and comprising:

identifying a distributed multivariate apply (dmapply) operation and an invocation of a distributed computing backend;

determining a function referenced in the dmapply operation;

translating, using a distributed backend driver associated with the invoked distributed computing backend, the determined function to a function native to an R application programming interface (API) of the invoked distributed computing backend; and

providing the translated function to the invoked distributed computing backend to perform the translated function on a distributed data set referenced in the dmapply operation.

2. The method of claim 1 , wherein providing the translated function to the invoked distributed computing backend includes:

providing the translated function to worker nodes of the invoked distributed computing backend to perform the translated function.

3. The method of claim 2 , wherein each worker node of the worker nodes performs the translated function on a partition of the distributed data set referenced in the dmapply operation.

4. The method of claim 1 , wherein the dmapply operation specifies a subset of partitions included in the distributed data set, and the method comprises:

providing the translated function to the invoked distributed computing backend to perform the translated function on the specified subset of partitions included in the distributed data set.

5. The method of claim 4 , wherein:

the distributed data set is a distributed array;

the dmapply operation specifies a subset of partitions included in the distributed array; and

and the method comprises providing the translated function to each distributed node of the invoked distributed computing backend to perform the translated function on a partition of the specified subset of partitions included in the distributed array.

6. The method of claim 5 , wherein the specified subset of partitions included in the distributed array are at least one of row partitions and block partitions.

7. The method of claim 1 , wherein the distributed data set includes at least one of a distributed array, a distributed data frame, and a distributed list.

8. The method of claim 1 , comprising:

providing the translated function to the invoked distributed computing backend to perform the translated function on a plurality of distributed data sets referenced in the dmapply operation.

9. The method of claim 1 , comprising:

providing instructions to the invoked distributed computing backend to perform the translated function on each element of the distributed data set referenced in the dmapply operation based on a type of distributed data structure associated with the distributed data set referenced in the dmapply operation.

10. The method of claim 9 , wherein:

the distributed data set referenced in the dmapply operation is a distributed list and the method includes providing instructions to the invoked distributed computing backend to perform the translated function on each row of the distributed data set referenced in the dmapply operation;

the distributed data set referenced in the dmapply operation is a distributed array and the method includes providing instructions to the invoked distributed computing backend to perform the translated function on each cell of the distributed data set referenced in the dmapply operation; or

the distributed data set referenced in the dmapply operation is a distributed fram and the method includes providing instructions to the invoked distributed computing backend to perform the translated function on each column of the distributed data set referenced in the dmapply operation.

11. A non-transitory machine-readable storage medium storing instructions that, when executed by at least one processor, cause the at least one processor to:

identify a distributed multivariate apply (dmapply) operation and an invocation of a distributed computing backend;

determine a function referenced in the dmapply operation;

determine a distributed backend driver associated with the invoked distributed computing backend among a plurality of distributed backend drivers;

translate, using the determined distributed backend driver, the determined function to a function native to an R application programming interface (API) of the invoked distributed computing backend;

determine worker nodes of the invoked distributed computing backend having partitions of a distributed data set referenced in the dmapply operation; and

provide the translated function to the determined worker nodes of the invoked computation backend to perform the translated function on the partitions of the distributed data set referenced in the dmapply operation.

12. The non-transitory machine-readable storage medium of claim 11 , wherein the instructions, when executed by the at least one processor, cause the at least one processor to:

translate, using the determined distributed backend driver, the determined function to a function native to an R API of the invoked distributed computing backend based on a direct mapping between the determined function and the native function.

13. The non-transitory machine-readable storage medium of claim 11 , wherein the instructions, when executed by the at least one processor, cause the at least one processor to:

provide the translated function and a global data set referenced in the dmapply operation to the determined worker nodes of the invoked computation backend to perform the translated function on the partitions of the distributed data set referenced in the dmapply operation using the global data set as input to the translated function.

14. The non-transitory machine-readable storage medium of claim 11 , wherein the instructions, when executed by the at least one processor, cause the at least one processor to:

determine that a global data set referenced in the dmapply operation is a distributed data structure; and

in response to determining that the global data set referenced in the dmapply operation is a distributed data structure, determine worker nodes of the invoked distributed computing backend having partitions of the distributed data structure.

15. The non-transitory machine-readable storage medium of claim 14 , wherein the instructions, when executed by the at least one processor, cause the at least one processor to:

provide instructions to the worker nodes determined to have partitions of the distributed data structure to provide the partitions of the distributed data structure to the worker nodes determined to have partitions of a distributed data set referenced in the dmapply operation to perform the translated function on the partitions of the distributed data set referenced in the dmapply operation using the provided partitions of the distributed data structure as input to the translated function.

16. A system, comprising:

a master node to:

identify a first distributed multivariate apply (dmapply) operation and an invocation of a distributed computing backend;

determine a first function referenced in the first dmapply operation;

translate, using a distributed backend driver associated with the invoked distributed computing backend, the first function to a first function native to an R application programming interface (API) of the invoked distributed computing backend; and

provide the translated first function to the invoked distributed computing backend to generate an intermediate distributed data set by performing the translated first function on an initial distributed data set referenced in the first dmapply operation;

identify a second dmapply operation;

determine a second function referenced in the second dmapply operation;

translate, using the distributed backend driver associated with the invoked distributed computing backend, the second function to a second function native to the R API of the invoked distributed computing backend; and

provide the translated second function to the invoked distributed computing backend to generate a final distributed data set by performing the translated second function on the intermediate distributed data set.

17. The system of claim 16 , wherein the master node is to:

determine a first global data set referenced in the first dmapply operation; and

determine a second global data set referenced in the second dmapply operation.

18. The system of claim 17 , wherein the master node is to:

provide the translated first function and the first global data set to the invoked distributed computing backend to generate the intermediate distributed data set by performing the translated first function on the initial distributed data set using the first global data set as input to the first translated function.

19. The system of claim 17 , wherein the first global data set is a vector and the second global data set is a list.

20. The system of claim 17 , wherein the first global data set includes a plurality of partitions of a first distributed data set and the second global data set includes an entire second distributed data set.

Assignments (8)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 28, 2026
From: MICRO FOCUS LLC
To: ROCKET SOFTWARE, INC.
Reel/Frame 075795/0114 →
RELEASE OF SECURITY INTEREST REEL/FRAME 044183/0718 Recorded Feb 2, 2023
From: JPMORGAN CHASE BANK, N.A.
To: MICRO FOCUS LLC (F/K/A ENTIT SOFTWARE LLC); BORLAND SOFTWARE CORPORATION; MICRO FOCUS (US), INC.; SERENA SOFTWARE, INC; ATTACHMATE CORPORATION; MICRO FOCUS SOFTWARE INC. (F/K/A NOVELL, INC.); NETIQ CORPORATION
Reel/Frame 062746/0399 →
RELEASE OF SECURITY INTEREST REEL/FRAME 044183/0577 Recorded Feb 2, 2023
From: JPMORGAN CHASE BANK, N.A.
To: MICRO FOCUS LLC (F/K/A ENTIT SOFTWARE LLC)
Reel/Frame 063560/0001 →
CHANGE OF NAME Recorded Aug 8, 2019
From: ENTIT SOFTWARE LLC
To: MICRO FOCUS LLC
Reel/Frame 050004/0001 →
SECURITY INTEREST Recorded Oct 11, 2017
From: ATTACHMATE CORPORATION; BORLAND SOFTWARE CORPORATION; NETIQ CORPORATION; MICRO FOCUS (US), INC.; MICRO FOCUS SOFTWARE, INC.; ENTIT SOFTWARE LLC; ARCSIGHT, LLC; SERENA SOFTWARE, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 044183/0718 →
SECURITY INTEREST Recorded Oct 11, 2017
From: ENTIT SOFTWARE LLC; ARCSIGHT, LLC
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 044183/0577 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 9, 2017
From: HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP
To: ENTIT SOFTWARE LLC
Reel/Frame 042746/0130 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 5, 2016
From: MA, EDWARD; ROY, INDRAJIT; GUPTA, VISHRUT; HSU, MEICHUN
To: HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP
Reel/Frame 039357/0943 →
Continuity (1)
Related Publication 20180041562A1 · Feb 8, 2018