VSIPL++ API Extension for Parallel Game Engine Data Mapping

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

The increasing complexity and cost of game development due to complex hardware architectures and the need for cross-platform deployment are exacerbated by the challenges of parallel computing, including deadlock, timing, and synchronization errors, which existing technologies struggle to address effectively.

Innovation Solution

A C++ based extension of the VSIPL++ API that includes a ray/triangle intersection function and a data mapping mechanism to distribute data across multiple computational units, rather than just processors, enabling easier development and cross-platform deployment by separating functionality from the underlying parallel implementation.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If multi-threaded code is used to leverage multiple cores, then processing power and productivity are improved, but programming complexity and synchronization errors increase

Engineering Contradiction:
Improveprocessing powerVSAvoidprogramming complexity
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The patent introduces an intermediary layer (the mapping system and abstraction interface) between the parallel computing infrastructure and the application code. This intermediary automatically handles thread management, data distribution, and synchronization, allowing developers to write simpler sequential-like code while still leveraging multi-core processing power through the intermediary's automated parallelization mechanisms.

Inventive Principle:
Principle #24Intermediary (Mediator)

Solution Approach 2:

The patent creates a universal parallel computing framework that can automatically adapt to different hardware architectures (multi-core CPUs, GPUs, clusters) through a single interface. The mapping system provides multi-functionality by handling various parallelization strategies (data parallelism, task parallelism, pipeline parallelism) through unified abstractions, eliminating the need for architecture-specific parallel programming code.

Inventive Principle:
Principle #6Universality (Multi-functionality)

2Productivity

If hardware architecture becomes more complex with more cores, then computational capability is improved, but portability and ease of deployment worsen

Engineering Contradiction:
Improvecomputational capabilityVSAvoidportability
Core Design Contradiction:
ProductivityVSAdaptability or versatility

Solution Approach 1:

The patent implements a universal parallel computing framework that provides the same interface across diverse hardware architectures. The mapping system automatically detects the target architecture and adapts the parallel execution strategy accordingly, allowing the same application code to run efficiently on multi-core CPUs, GPUs, or distributed clusters without modification, thus maintaining portability while leveraging enhanced computational capabilities.

Inventive Principle:
Principle #6Universality (Multi-functionality)

Solution Approach 2:

The patent uses parameter changes to adapt the parallel execution behavior based on the target architecture. The mapping system modifies execution parameters (such as thread count, block size, synchronization frequency) automatically according to the detected hardware characteristics, enabling the same application to optimize its performance on different architectures without changing the source code, thereby maintaining portability while utilizing enhanced computational capabilities.

Inventive Principle:
Principle #35Parameter changes

3Ease of manufacture

If data is mapped across processors only, then implementation is simpler, but computational efficiency on modern architectures worsens

Engineering Contradiction:
Improveimplementation simplicityVSAvoidcomputational efficiency
Core Design Contradiction:
Ease of manufactureVSProductivity

Solution Approach 1:

The patent segments the computational units into multiple levels: processors, computational units within processors, and threads. The mapping system can distribute data and tasks across this hierarchical segmentation, assigning work to the finest-grained computational units available (such as GPU cores or vector units) rather than coarse processor boundaries, thereby maximizing computational efficiency while maintaining implementation simplicity through automated hierarchical mapping.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent adds another dimension to the mapping model by introducing hierarchical levels of computational units within processors. Instead of a flat processor-to-data mapping, the system creates a multi-dimensional mapping space that includes processor, computational unit, and thread levels. This dimensional expansion enables more fine-grained data distribution and parallel execution, improving computational efficiency on modern architectures while keeping the implementation approach simple through automated hierarchical management.

Inventive Principle:
Principle #17Another dimension (Dimensionality change)

Data Source

PatentUS9465666B2Game engine and method for providing an extension of the VSIPL++ API
Publication Date: 2016.10.11 SQUARE ENIX HLDG CO LTD
  • US9465666B2 patent drawing
  • US9465666B2 patent drawing
  • US9465666B2 patent drawing

AI summary

A system includes a memory, a graphics processor, and a processor. The memory stores a control program that includes an extension of an application programming interface. The graphics processor includes multiple computational units. The processor executes the control program, with the control program causing the processor to obtain data from the memory. The data specifies a first function and is intended to execute on the multiple computational units. The control program further causes the processor to create at least one map for assigning computational tasks for the first function across the multiple computational units. A part of the data associated with each of the computational tasks is stored to the respective multiple computational units that are assigned to execute the computational tasks.