Offload Server Automates GPU Parallelization via OpenACC

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing methods for automatically offloading processing to GPUs, such as those using OpenACC, do not sufficiently improve performance compared to manual acceleration with CUDA, and face challenges in identifying appropriate parallel processing areas and reducing data exchange overhead between CPU and GPU memory.

Innovation Solution

An offload server that analyzes application code, designates GPU processing using OpenACC directives, identifies loop statements, generates parallel processing patterns, measures performance, and selects the most efficient pattern for offloading, thereby extending the scope of application for GPU offloading.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Ease of operation

If automatic parallelization is used to offload processing to GPU, then programming complexity is reduced, but performance improvement is insufficient due to data exchange overhead between CPU and GPU memory

Engineering Contradiction:
Improveprogramming complexityVSAvoidperformance improvement
Core Design Contradiction:
Ease of operationVSProductivity

Solution Approach 1:

The system performs preliminary code analysis to automatically identify parallelizable loop statements before execution. By pre-determining which loops can be offloaded to GPU and generating appropriate OpenACC directives, the system eliminates the need for manual programming while optimizing performance through automated data transfer management.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The patent introduces an intermediary layer (the offload server and code analyzer) between the CPU code and GPU execution. This intermediary automatically handles the complex tasks of code analysis, parallelization detection, data transfer optimization, and directive generation, thereby resolving the contradiction between ease of programming and performance improvement.

Inventive Principle:
Principle #24Intermediary (Mediator)

2Productivity

If manual CUDA optimization is performed to reduce data exchange overhead, then performance is improved, but programming complexity and skill requirements increase

Engineering Contradiction:
ImproveperformanceVSAvoidprogramming complexity
Core Design Contradiction:
ProductivityVSEase of operation

Solution Approach 1:

The system enables self-service optimization where the offload server automatically analyzes application code, identifies parallelizable sections, generates OpenACC directives, and manages data transfers without requiring manual intervention. The system serves itself by performing what would otherwise require skilled manual optimization.

Inventive Principle:
Principle #25Self-service

Solution Approach 2:

The patent changes the approach from manual parameter tuning to automated parameter generation. By using code analysis to automatically determine optimization parameters (which loops to parallelize, how to structure data transfers, which directives to generate), the system achieves performance improvement without manual programming complexity.

Inventive Principle:
Principle #35Parameter changes

3Adaptability or versatility

If loop statements are identified for parallel processing, then GPU offloading capability is extended, but compilation errors may occur with certain loop structures

Engineering Contradiction:
ImproveGPU offloading capabilityVSAvoidcompilation success rate
Core Design Contradiction:
Adaptability or versatilityVSReliability

Solution Approach 1:

The system dynamically adapts its behavior based on the code structure. By analyzing each loop statement and determining whether it can be safely parallelized, the system dynamically generates appropriate OpenACC directives or skips problematic loops. This dynamic adaptation maintains high versatility while ensuring compilation success.

Inventive Principle:
Principle #15Dynamics

Solution Approach 2:

The patent applies partial parallelization by selectively identifying only the loop statements that can be safely offloaded to GPU, rather than attempting to parallelize all loops. This partial action approach extends GPU offloading capability to more applications while avoiding compilation errors in cases where full parallelization would not be appropriate.

Inventive Principle:
Principle #16Partial or excessive action

Data Source

PatentUS12033235B2Offload server, offload control method, and offload program
Publication Date: 2024.07.09 NIPPON TELEGRAPH & TELEPHONE CORP
  • US12033235B2 patent drawing
  • US12033235B2 patent drawing
  • US12033235B2 patent drawing

AI summary

An offload server includes: an application code analysis section configured to analyze source code of an application; a data transfer designation section configured to, on the basis of a result of the code analysis, designate GPU processing for a loop statement by using at least one selected from the group of directive clauses, of OpenACC, consisting of a ‘kernels’ directive clause, a ‘parallel loop’ directive clause, and a ‘parallel loop vector’ directive clause; and a parallel processing designation section configured to identify loop statements in the application, and, for each of the identified loop statements, specify a statement specifying application of parallel processing by the GPU and perform compilation.