IP Library › Granted Patent US 11,263,060
Granted Patent B2
US 11,263,060 · App. 16/690,269 · Granted Mar 1, 2022

Dynamic distribution of loads across heterogeneous computing structures in computational rendering

Inventors: Fearghal O'Donncha (Aran Islands, IE); Emanuele Ragnoli (Mulhuddart, IE); Albert Akhriev (Mulhuddart, IE)
Assignee: INTERNATIONAL BUSINESS MACHINES CORPORATION
G06F9/5083G06F8/451G06F8/71G06F9/3885G06F9/541G06T1/20
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 11,263,060
App. No.
16/690,269
Granted
Mar 1, 2022
Kind
B2
Abstract

Embodiments for dynamically distributing loads in computational rendering in a computing environment. A computational rendering model on a computational rendering to exploit nested recursive parallelism within a heterogenous computing architecture to enable communication overlap, memory transfer, and data and task management, wherein the computational rendering model is developed for the heterogenous computing architecture.

Claims (44)

1. A method for dynamically distributing loads in computational rendering, by a processor, comprising:

executing a computational rendering model on a computational rendering to exploit nested recursive parallelism within a heterogeneous computing architecture to enable communication overlap, memory transfer, and data and task management, wherein the computational rendering model is developed for the heterogeneous computing architecture using developed application code compiled by a compiler, and wherein the compiler generates multiple code versions for each computational timestep specifically optimized to one or more hardware structures of the heterogeneous computing architecture according to contextual data location and hardware parameters used during runtime;

developing the application code according to an application programing interface (API);

compiling, by the compiler, the application code into a plurality of binaries managed by the heterogeneous computing architecture, wherein the plurality of binaries include meta information on data structures, computational directives, and communication schema; and

executing the application code across the heterogeneous computing architecture using recursive parallelism that enables overlapping of communication and computations by using a plurality of synchronization solutions provided by each of a plurality of sub-domains after each computational timestep, wherein a localization of computation for each of the plurality of sub-domains is performed inclusive of a localized sampling of pixel radiance and a localized termination of a light path, based on a probabilistic analysis of material reflectance properties, of the computational rendering.

2. The method of claim 1 , further including:

applying the computational rendering model to divide a domain of a computational rendering into the plurality of sub-domains;

developing, within the API, each of the plurality of sub-domains and communication schema according to a defined specification, protocol, and data structure of the API; and

providing synchronization instructions by each of the plurality of sub-domains to neighboring domains after each computational timestep.

3. The method of claim 1 , further including:

defining parallel primitives within using the API, wherein the API comprises an Allscale API; and

analyzing recursive primitive usage and data access to the heterogeneous computing architecture using the compiler.

4. The method of claim 1 , further including managing a plurality of hardware resources and distribution of workload and data structures to one or more compute resources, wherein the heterogeneous computing architecture includes one or more central processing units (CPUs) and graphics processing units (GPUs).

5. The method of claim 1 , further including managing a plurality of assignments of tasks to the heterogeneous computing architecture, location of data elements, and a plurality of hardware parameters, wherein the heterogeneous computing architecture includes one or more central processing units (CPUs) and graphics processing units (GPUs).

6. A system for dynamically distributing loads in computational rendering in a computing environment, comprising:

one or more computers with executable instructions that when executed cause the system to:

execute a computational rendering model on a computational rendering to exploit nested recursive parallelism within a heterogeneous computing architecture to enable communication overlap, memory transfer, and data and task management, wherein the computational rendering model is developed for the heterogeneous computing architecture using developed application code compiled by a compiler, and wherein the compiler generates multiple code versions for each computational timestep specifically optimized to one or more hardware structures of the heterogeneous computing architecture according to contextual data location and hardware parameters used during runtime;

develop the application code according to an application programing interface (API);

compile, by the compiler, the application code into a plurality of binaries managed by the heterogeneous computing architecture, wherein the plurality of binaries include meta information on data structures, computational directives, and communication schema; and

execute the application code across the heterogeneous computing architecture using recursive parallelism that enables overlapping of communication and computations by using a plurality of synchronization solutions provided by each of a plurality of sub-domains after each computational timestep, wherein a localization of computation for each of the plurality of sub-domains is performed inclusive of a localized sampling of pixel radiance and a localized termination of a light path, based on a probabilistic analysis of material reflectance properties, of the computational rendering.

7. The system of claim 6 , wherein the executable instructions:

specify the computational rendering model to divide a domain of a computational rendering into the plurality of sub-domains;

develop, within the API, each of the plurality of sub-domains and communication schema according to a defined specification, protocol, and data structure of the API; and

provide synchronization instructions by each of the plurality of sub-domains to neighboring domains after each computational timestep according to the protocols of the API.

8. The system of claim 6 , wherein the executable instructions:

define parallel primitives using the API, wherein the API comprises an Allscale API; and

analyze recursive primitive usage and data access to the heterogeneous computing architecture using the compiler.

9. The system of claim 6 , wherein the executable instructions manage a plurality of hardware resources and distribution of workload and data structures to one or more compute resources, wherein the heterogeneous computing architecture includes one or more central processing units (CPUs) and graphics processing units (GPUs).

10. The system of claim 6 , wherein the executable instructions manage a plurality of assignments of tasks to the heterogeneous computing architecture, location of data elements, and a plurality of hardware parameters, wherein the heterogeneous computing architecture includes one or more central processing units (CPUs) and graphics processing units (GPUs).

11. A computer program product for dynamically distributing loads in computational rendering in a computing environment, the computer program product comprising a non-transitory computer-readable storage medium having computer-readable program code portions stored therein and executed by a processor, the computer-readable program code portions comprising:

an executable portion that executes a computational rendering model on a computational rendering to exploit nested recursive parallelism within a heterogeneous computing architecture to enable communication overlap, memory transfer, and data and task management, wherein the computational rendering model is developed for the heterogeneous computing architecture using developed application code compiled by a compiler, and wherein the compiler generates multiple code versions for each computational timestep specifically optimized to one or more hardware structures of the heterogeneous computing architecture according to contextual data location and hardware parameters used during runtime;

an executable portion that develops the application code according to an application programing interface (API);

an executable portion that compiles, by the compiler, the application code into a plurality of binaries managed by the heterogeneous computing architecture, wherein the plurality of binaries include meta information on data structures, computational directives, and communication schema; and

an executable portion that executes the application code across the heterogeneous computing architecture using recursive parallelism that enables overlapping of communication and computations by using a plurality of synchronization solutions provided by each of a plurality of sub-domains after each computational timestep, wherein a localization of computation for each of the plurality of sub-domains is performed inclusive of a localized sampling of pixel radiance and a localized termination of a light path, based on a probabilistic analysis of material reflectance properties, of the computational rendering.

12. The computer program product of claim 11 , further including an executable portion that:

applies the computational rendering model to divide a domain of a computational rendering into the plurality of sub-domains;

develops, within the API, each of the plurality of sub-domains and communication schema according to a defined specification, protocol, and data structure of the API; and

provides synchronization instructions by each of the plurality of sub-domains to neighboring domains after each computational timestep according to the protocols of the API.

13. The computer program product of claim 11 , further including an executable portion that:

define parallel primitives using the API, wherein the API comprises an Allscale API; and

analyze recursive primitive usage and data access to the heterogeneous computing architecture using the compiler.

14. The computer program product of claim 11 , further including an executable portion that:

manages a plurality of hardware resources and distribution of workload and data structures to one or more compute resources, wherein the heterogeneous computing architecture includes one or more central processing units (CPUs) and graphics processing units (GPUs); and

manages a plurality of assignments of tasks to the heterogeneous computing architecture, location of data elements, and a plurality of hardware parameters, wherein the heterogeneous computing architecture includes one or more central processing units (CPUs) and graphics processing units (GPUs).

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 21, 2019
From: O'DONNCHA, FEARGHAL; RAGNOLI, EMANUELE; AKHRIEV, ALBERT
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 051072/0926 →
Continuity (1)
Related Publication 20210157654A1 · May 27, 2021
Cited By (1)
US 12,530,296