Compiler Cycle Count Generation for Parallel Task Scheduling

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

In software development, it is challenging for compilers to accurately determine the number of cycles required for each task, especially when function definitions are split across multiple source files, leading to inefficiencies in parallel task execution due to unequal execution times.

Innovation Solution

A computer system and method that compiles source programs to generate information on the number of cycles for each function and task, including call relationships, allowing for accurate calculation of task cycles and optimal thread assignment during link processing.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Ease of manufacture

If compiling is performed for each source file separately, then the compiling process is simple and modular, but it becomes difficult to determine the number of cycles of tasks that span multiple source files

Engineering Contradiction:
Improvemodularity of compiling processVSAvoidcycle count information of tasks
Core Design Contradiction:
Ease of manufactureVSLoss of information

Solution Approach 1:

The patent introduces an intermediary mechanism (linker or integrated compilation system) that bridges separate compilation processes. This intermediary collects cycle count information from individual source file compilations and aggregates it to determine the total cycle counts for tasks spanning multiple files, thus preserving task-level cycle information without requiring a complete rewrite of the modular compilation process

Inventive Principle:
Principle #24Intermediary (Mediator)

Solution Approach 2:

The patent applies preliminary action by having the compiler generate and store cycle count information for each function during the compilation of individual source files. This pre-computed information is then reused during link processing to determine the total cycle counts for tasks, avoiding the need for re-compilation and enabling accurate parallel execution scheduling

Inventive Principle:
Principle #10Preliminary action

2Productivity

If parallel execution is implemented without accurate cycle information, then task execution can start immediately, but execution efficiency decreases due to unequal task completion times

Engineering Contradiction:
Improveparallel execution efficiencyVSAvoidwaiting time for task completion
Core Design Contradiction:
ProductivityVSLoss of time

Solution Approach 1:

The patent changes the parameter of task assignment by using calculated cycle counts to dynamically determine the number of threads assigned to each task. Tasks with longer cycle counts are assigned more threads to balance the execution time across all parallel tasks, thereby reducing the overall completion time and eliminating idle waiting time

Inventive Principle:
Principle #35Parameter changes

Solution Approach 2:

The patent implements feedback by using the calculated cycle count information to adjust thread assignment decisions. The system feeds back the cycle count data from the compilation phase to the execution phase, enabling intelligent resource allocation that optimizes parallel execution efficiency based on actual task requirements

Inventive Principle:
Principle #23Feedback

Data Source

PatentUS10089088B2Computer that performs compiling, compiler program, and link program
Publication Date: 2018.10.02 FUJITSU LTD
  • US10089088B2 patent drawing
  • US10089088B2 patent drawing
  • US10089088B2 patent drawing

AI summary

A computer configured to perform compiling, including a memory configured to store a source program and a processor, the processor is configured to execute a method which includes; compiling the source program, wherein a number of cycles desired for executing each function included in the source program and information indicating a call relationship between a task and a function called by the task are generated, and performing link processing, wherein a number of cycles desired for executing each task based on the number of cycles desired for executing each function and the call relationship.