Parallel BVH Construction Using Alternating Node and Object Kernels
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
The adaptive top-down approach for constructing bounding volume hierarchies (BVHs) is difficult to parallelize due to varying computational overhead and memory allocation challenges, making it inefficient for large-scale processing.
Innovation Solution
A technique involving alternating node and object update kernels is used to construct BVHs, where objects are assigned identifiers for child nodes based on partitions, allowing parallel processing without adapting thread or processor numbers, and objects are moved by changing node identifiers, eliminating the need for list partitioning and memory reallocation.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Adaptability or versatility
If adaptive top-down approach is used for BVH construction, then partitioning adapts to spatial distribution of objects, but parallelization becomes difficult due to varying computational overhead
Solution Approach 1:
The BVH construction process is segmented into two independent alternating phases: node update kernel (creating partitions and child nodes) and object update kernel (assigning objects to child nodes). This segmentation allows each phase to be executed in parallel across multiple threads without the variability that plagued the traditional adaptive approach, as each phase operates on fixed data structures rather than dynamically adapting during execution.
Solution Approach 2:
All node partitions and child nodes are created in advance during the node update phase before object assignment begins. This preliminary action eliminates the need for dynamic memory allocation and list partitioning during object assignment, enabling straightforward parallel execution of the object update kernel across multiple threads with consistent computational overhead.
2Adaptability or versatility
If adaptive top-down approach is used, then partitioning accounts for spatial distribution, but memory allocation and list partitioning overhead increases
Solution Approach 1:
Child nodes and their memory structures are pre-allocated during the node update phase before object assignment. This eliminates the need for dynamic memory allocation during the object update phase, as objects are simply assigned to pre-existing child nodes by updating identifier fields rather than creating new memory structures or partitioning lists at runtime.
Solution Approach 2:
Instead of maintaining and partitioning actual object lists during the update phase, the patent uses identifier fields in objects to indicate their assigned child node. This copying approach (storing references/identifiers rather than actual data structures) eliminates the computational overhead of list partitioning while preserving the adaptive spatial distribution achieved through the node update kernel.
3Productivity
If varying numbers of threads are used for different BVH levels, then processing adapts to node complexity, but implementation complexity and overhead increases
Solution Approach 1:
The patent employs the same number of threads for both the node update kernel and object update kernel, rather than varying thread counts for different BVH levels. This universal approach simplifies thread management and implementation while maintaining high productivity, as both kernels can be executed in parallel with consistent resource allocation. The adaptive partitioning is achieved through the algorithm logic rather than thread count variation.
Data Source
AI summary
One embodiment of the present invention sets forth a technique for generating a bounding volume hierarchy. The technique includes determining a first set of objects associated with a first node. The technique also includes generating a first plurality of child nodes that are associated with the first node. The technique further includes for each object included in the first set of objects, storing within the object an identifier for a corresponding child node included in the first plurality of child nodes based on a first set of partitions associated with the first set of objects.


