Compiler Data Streaming for Many Integrated Core Processors

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Achieving high performance on manycore accelerators like Intel Xeon Phi coprocessors is challenging due to high data transfer overhead and inefficient handling of irregular memory accesses, leading to performance gaps compared to multicore CPUs.

Innovation Solution

The implementation of source-to-source compiler optimizations, including data streaming to overlap data transfer with computation, regularization of irregular memory accesses, and a shared memory mechanism for efficient transfer of large pointer-based data structures, to reduce memory footprint and optimize buffer usage.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If data transfer is performed sequentially before computation, then data is fully available for processing, but data transfer overhead dominates execution time

Engineering Contradiction:
Improvedata availabilityVSAvoiddata transfer overhead
Core Design Contradiction:
ReliabilityVSLoss of time

Solution Approach 1:

The compiler performs preliminary actions by pre-computing and preparing data structures (such as computing inverse transforms) before the main computation loop. This allows the actual data transfer and computation to overlap, reducing the dominant data transfer overhead while ensuring data is fully available when needed.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The patent implements continuous useful action through overlapping data transfer with computation. The data transfer operation continues in the background while computation proceeds, eliminating idle waiting time and ensuring both data availability and time efficiency are improved simultaneously.

Inventive Principle:
Principle #20Continuity of useful action

2Productivity

If buffers are allocated for each array, then data transfer can be optimized, but memory footprint on MIC increases

Engineering Contradiction:
Improvedata transfer efficiencyVSAvoidmemory footprint
Core Design Contradiction:
ProductivityVSVolume of moving object

Solution Approach 1:

The patent applies universality by using a single shared buffer that serves multiple arrays sequentially. Instead of allocating dedicated buffers for each array, the same buffer is reused across different arrays, reducing the total memory footprint on the MIC while maintaining efficient data transfer through proper buffer management and timing.

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

3Loss of time

If kernel is launched for each data transfer, then data transfer can be asynchronous, but thread reuse is prevented and overhead increases

Engineering Contradiction:
Improvedata transfer timeVSAvoidkernel launch overhead
Core Design Contradiction:
Loss of timeVSDevice complexity

Solution Approach 1:

The patent implements self-service by having threads reuse themselves across multiple kernel launches. Instead of creating new threads for each asynchronous data transfer operation, existing threads are reused, which reduces the complexity of thread management and eliminates repeated kernel launch overhead while maintaining asynchronous data transfer capability.

Inventive Principle:
Principle #25Self-service

Data Source

PatentUS9471289B2Compiler optimization for many integrated core processors
Publication Date: 2016.10.18 NEC CORP
  • US9471289B2 patent drawing
  • US9471289B2 patent drawing
  • US9471289B2 patent drawing

AI summary

Systems and methods for source-to-source transformation for compiler optimization for many integrated core (MIC) coprocessors, including identifying data dependencies in candidate loops and data elements used in each iteration for arrays, profiling candidate loops to find a proper number m, wherein data transfer and computation for m iterations take an equal amount of time, and creating an outer loop outside the candidate loop, with each iteration of the outer loop executing m iterations of the candidate loop. Data streaming is performed by determining optimum buffer size for one or more arrays and inserting code before the outer loop to create optimum sized buffers, overlapping data transfer between central processing units (CPUs) and MICs with the computation; reusing buffers to reduce memory employed on the MICs, and reusing threads on MICs to repeatedly launch kernels on the MICs for asynchronous data transfer.