Offload Server Optimizing CPU GPU Data Transfer

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 reducing data exchange overhead between CPU and GPU memory, making it difficult for unskilled users to enhance application performance.

Innovation Solution

An offload server that analyzes application code to identify loop statements, generates parallel processing patterns, and optimizes data transfers by collectively transferring variables between CPU and GPU, using OpenACC directives like 'data copy' and 'data present' to minimize unnecessary transfers and create temporary areas for efficient data handling.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Ease of operation

If automatic parallelization is performed using compilers like Intel compiler or PGI Compiler, then programming complexity is reduced, but data exchange overhead between CPU and GPU memory increases, reducing performance improvement

Engineering Contradiction:
Improveprogramming complexityVSAvoiddata exchange overhead
Core Design Contradiction:
Ease of operationVSLoss of energy

Solution Approach 1:

The system performs preliminary analysis of application code to identify loop statements suitable for parallelization before compilation. By pre-determining which loops should be offloaded to GPU and optimizing data transfer timing in advance, the system reduces unnecessary data exchange overhead while maintaining ease of automatic parallelization through compiler-based approaches

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The system changes parameters related to data transfer timing and frequency by analyzing code structure and identifying when data should be transferred between CPU and GPU. By optimizing these transfer parameters based on code analysis results, the system reduces data exchange overhead while maintaining automatic parallelization benefits

Inventive Principle:
Principle #35Parameter changes

2Productivity

If manual tuning in OpenCL or CUDA is performed to reduce data transfer overhead, then performance improvement is enhanced, but programming complexity and skill requirements increase significantly

Engineering Contradiction:
Improveperformance improvementVSAvoidprogramming complexity
Core Design Contradiction:
ProductivityVSEase of operation

Solution Approach 1:

The system enables automatic self-service optimization by analyzing application code and automatically determining optimal data transfer timing and parallelization strategies. This eliminates the need for manual tuning by programmers while achieving performance improvements comparable to or exceeding manual optimization, thus maintaining ease of operation

Inventive Principle:
Principle #25Self-service

Solution Approach 2:

The system incorporates feedback mechanisms that analyze code execution patterns and use this information to automatically optimize data transfer timing. By continuously analyzing and adapting based on code structure and execution characteristics, the system achieves high performance without requiring programmer expertise in manual tuning

Inventive Principle:
Principle #23Feedback

3Loss of energy

If data transfer timing is optimized by collective transfer of variables, then data exchange overhead is reduced, but system complexity increases due to code analysis requirements

Engineering Contradiction:
Improvedata exchange overheadVSAvoidsystem complexity
Core Design Contradiction:
Loss of energyVSDevice complexity

Solution Approach 1:

The system replaces manual mechanical optimization processes with automated code analysis and optimization. By using compiler-based analysis and automatic determination of data transfer timing, the system achieves optimized collective variable transfer without requiring complex manual configuration or increasing system complexity

Inventive Principle:
Principle #28Mechanics substitution (Replace mechanical system)

Data Source

PatentUS12056475B2Offload server, offload control method, and offload program
Publication Date: 2024.08.06 NIPPON TELEGRAPH & TELEPHONE CORP
  • US12056475B2 patent drawing
  • US12056475B2 patent drawing
  • US12056475B2 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 a data transfer to be collectively performed on, before starting GPU processing and after finishing the GPU processing, of variables that need to be transferred between a CPU and a GPU, those which are not mutually referenced nor mutually updated between CPU processing and the GPU processing and which are only to be returned to the CPU as a result of the GPU processing; 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.