WO2018150588A1 - 情報処理装置、情報処理方法及び情報処理プログラム - Google Patents

情報処理装置、情報処理方法及び情報処理プログラム Download PDF

Info

Publication number
WO2018150588A1
WO2018150588A1 PCT/JP2017/006220 JP2017006220W WO2018150588A1 WO 2018150588 A1 WO2018150588 A1 WO 2018150588A1 JP 2017006220 W JP2017006220 W JP 2017006220W WO 2018150588 A1 WO2018150588 A1 WO 2018150588A1
Authority
WO
WIPO (PCT)
Prior art keywords
loop
processing
calculation
time
processing time
Prior art date
Application number
PCT/JP2017/006220
Other languages
English (en)
French (fr)
Inventor
弘樹 村野
峯岸 孝行
吉大 小川
友美 竹内
Original Assignee
三菱電機株式会社
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 三菱電機株式会社 filed Critical 三菱電機株式会社
Priority to US16/471,925 priority Critical patent/US20190384687A1/en
Priority to PCT/JP2017/006220 priority patent/WO2018150588A1/ja
Priority to JP2019500167A priority patent/JP6548848B2/ja
Publication of WO2018150588A1 publication Critical patent/WO2018150588A1/ja

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3447Performance evaluation by modeling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3457Performance evaluation by simulation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/327Logic synthesis; Behaviour synthesis, e.g. mapping logic, HDL to netlist, high-level language to RTL or netlist
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/33Design verification, e.g. functional simulation or model checking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/33Design verification, e.g. functional simulation or model checking
    • G06F30/3308Design verification, e.g. functional simulation or model checking using simulation
    • G06F30/3312Timing analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/45Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
    • G06F8/451Code distribution
    • G06F8/452Loops
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2119/00Details relating to the type or aim of the analysis or the optimisation
    • G06F2119/12Timing analysis or timing optimisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/865Monitoring of software

Definitions

  • the present invention relates to a technique for calculating the processing time of a program.
  • Embedded systems are composed of computational resources such as CPU (Central Processing Unit), DSP (Digital Signal Processor), GPU (Graphic Processing Unit), FPGA (Field Programmable Gate Array), memory, and IC (Integrated). Is done. Selecting these computing resources, selecting a memory and an IC, and determining a connection configuration between the computing resource, the memory, and the IC are called system architecture design.
  • CPU Central Processing Unit
  • DSP Digital Signal Processor
  • GPU Graphic Processing Unit
  • FPGA Field Programmable Gate Array
  • memory Integrated
  • IC Integrated
  • system architecture design has been performed based on the experience of designers.
  • performance estimation of an embedded system is performed by simulating an embedded system using a simulation model of software or hardware that operates on a computing resource.
  • Patent Document 1 and Patent Document 2 disclose a method of using a performance value on a database without using a simulation.
  • Patent Document 1 discloses a method for estimating the performance of a processor. More specifically, Patent Document 1 discloses a method of estimating processor performance by storing processor instruction execution time in a database and applying the processor instruction execution time to an operation included in a source code. Yes.
  • Patent Document 2 discloses a method for estimating the performance of a parallel processor such as a GPU. More specifically, in Patent Document 2, a method for estimating the performance of a parallel processor when a loop is parallelized by acquiring the number of loops from the functional model and dividing the acquired number of loops by the number of cores of the parallel processor. Is disclosed.
  • the main object of the present invention is to solve this problem. More specifically, the main object of the present invention is to realize highly accurate performance estimation that reflects the architecture of computing resources without using simulation.
  • An information processing apparatus includes: A loop extractor for extracting each of the one or more loop processes from a program including one or more loop processes; A characteristic determination unit for determining characteristics of each loop process extracted by the loop extraction unit; For each loop process, a process time calculation procedure for calculating the process time of each loop process is selected from the plurality of process time calculation procedures for calculating the process time.
  • a calculation procedure selection unit that selects based on the characteristics of and the architecture of a calculation resource that executes the program;
  • a processing time calculation unit that calculates the processing time of each loop process using the corresponding processing time calculation procedure selected by the calculation procedure selection unit.
  • FIG. 3 is a diagram illustrating a functional configuration example of a performance estimation apparatus according to the first embodiment.
  • FIG. 3 is a diagram illustrating a hardware configuration example of the performance estimation apparatus according to the first embodiment.
  • 5 is a flowchart showing an operation example of the performance estimation apparatus according to the first embodiment.
  • 5 is a flowchart showing an operation example of the performance estimation apparatus according to the first embodiment.
  • FIG. 3 is a diagram illustrating an example of a function model according to the first embodiment.
  • FIG. 6 is a diagram showing an example of loop processing according to the first embodiment.
  • FIG. 6 is a diagram illustrating an example of loop processing with data dependence between iterations according to the first embodiment.
  • FIG. 4 is a diagram showing an example of loop processing with control dependence according to the first embodiment.
  • FIG. 6 is a diagram showing an example of parameter extraction for loop processing according to the first embodiment.
  • FIG. 4 is a diagram showing an example of performance calculation basic formula information according to the first embodiment.
  • FIG. 6 is a diagram showing an example of constraint condition information according to the first embodiment.
  • FIG. 6 is a diagram showing an example of memory access delay characteristic information according to the first embodiment.
  • FIG. 4 is a diagram showing an example of calculation time information according to the first embodiment.
  • FIG. *** Explanation of configuration *** FIG. 1 shows a functional configuration example of a performance estimation apparatus 100 according to the first embodiment.
  • a functional configuration of the performance estimation apparatus 100 according to Embodiment 1 will be described with reference to FIG. However, the functional configuration of the performance estimation apparatus 100 may be different from that shown in FIG.
  • the performance estimation apparatus 100 includes a calculation resource information acquisition unit 110, a function model acquisition unit 120, a processing division unit 130, a parameter extraction unit 140, a performance calculation basic formula selection unit 150, a performance estimation unit 160, and a calculation resource database 170. Further, the performance estimation device 100 acquires the calculation resource information 200 and the function model 210 and outputs a performance estimation value 300.
  • the performance estimation device 100 corresponds to an information processing device. The operations performed by the performance estimation apparatus 100 correspond to an information processing method and an information processing program.
  • FIG. 2 shows a hardware configuration example of the performance estimation apparatus 100 according to the first embodiment.
  • the performance estimation apparatus 100 includes a processor 901, a memory 902, a storage device 903, an input device 904, and an output device 905.
  • the performance estimation apparatus 100 is a computer.
  • the storage device 903 includes a calculation resource information acquisition unit 110, a function model acquisition unit 120, a function model acquisition unit 120, a process division unit 130, a parameter extraction unit 140, a performance calculation basic expression selection unit 150, and a performance estimation unit illustrated in FIG.
  • a program for realizing 160 functions is stored. The program is loaded into the memory 902.
  • the processor 901 reads the program from the memory 902 and executes the program, and the calculation resource information acquisition unit 110, the function model acquisition unit 120, the function model acquisition unit 120, the processing division unit 130, the parameter extraction unit 140, and the performance calculation, which will be described later.
  • the basic expression selection unit 150 and the performance estimation unit 160 are operated.
  • the processor 901 has functions of a calculation resource information acquisition unit 110, a function model acquisition unit 120, a function model acquisition unit 120, a processing division unit 130, a parameter extraction unit 140, a performance calculation basic formula selection unit 150, and a performance estimation unit 160.
  • the state which is executing the program which realizes is typically expressed.
  • the calculation resource information acquisition unit 110 acquires the calculation resource information 200.
  • the computing resource information 200 indicates the architecture of computing resources that execute the function model 210.
  • the function model 210 describes a process for performance estimation.
  • the function model 210 is, for example, all or part of the program source code.
  • the function model 210 includes one or more loop processes.
  • a computing resource is an arithmetic device that executes a program. As described above, the calculation resource includes a CPU, a DSP, a GPU, an FPGA, and the like.
  • the architecture of the computing resource is a specific model number of the computing resource such as a product name and a product code.
  • the calculation resource information acquisition unit 110 outputs the calculation resource information 200 to the performance calculation basic formula selection unit 150.
  • the function model acquisition unit 120 acquires the function model 210.
  • the input of the function model 210 to the function model acquisition unit 120 is performed by a user who uses the performance estimation apparatus 100.
  • the process dividing unit 130 divides the function model 210 acquired by the function model acquiring unit 120. More specifically, the process dividing unit 130 extracts a loop process from the function model 210. For example, when the function model 210 is a C language program, the loop processing is processing represented by a for statement or the like. When the function model 210 is a C language program, the process dividing unit 130 extracts a portion surrounded by the for sentence as one loop, and also describes the process description between the for sentence and the for sentence as the number of loops. Extract as one loop. The process dividing unit 130 outputs the function model 210 divided for each loop process to the parameter extracting unit 140.
  • the function model acquisition unit 120 corresponds to a loop extraction unit.
  • the process performed by the function model acquisition unit 120 corresponds to a loop extraction process.
  • the parameter extraction unit 140 determines the characteristics of each loop process extracted by the process dividing unit 130. Further, the parameter extraction unit 140 extracts the memory access size and the memory access order of the entire loop process from each loop process extracted by the process dividing unit 130. Further, the parameter extraction unit 140 extracts the number of operations for each operation type in the loop processing from each loop processing extracted by the processing division unit 130.
  • the parameter extraction unit 140 includes, as characteristics of the loop processing, whether or not there is data dependency between iterations of the loop processing, the number of branch processing included in the loop processing (the number of control dependencies in processing within the loop processing), and reduction of the loop processing Judgment of the possibility of calculation. Note that the characteristics of the loop processing are not limited to these.
  • the parameter extraction unit 140 outputs the characteristics of each loop process to the performance calculation basic formula selection unit 150. In addition, the parameter extraction unit 140 outputs the extracted memory access size, memory access order, and the number of operations for each operation type to the performance estimation unit 160.
  • the parameter extraction unit 140 corresponds to a characteristic determination unit.
  • the process performed by the parameter extraction unit 140 corresponds to a characteristic determination process.
  • the performance calculation basic formula selection unit 150 selects an optimal performance calculation basic formula from a plurality of performance calculation basic formulas held in the calculation resource database 170.
  • the basic performance calculation formula is a processing time calculation procedure for calculating the processing time of the loop processing.
  • the performance calculation basic formula selection unit 150 selects an optimal performance calculation basic formula for each loop process. More specifically, the performance calculation basic formula selection unit 150 includes the constraint conditions indicated in the constraint condition information output from the calculation resource database 170, the characteristics of the loop processing determined by the parameter extraction unit 140, and the calculation resource information. Based on the calculation resource architecture shown in 200, an optimum basic formula for performance calculation is selected for each loop process.
  • the performance calculation basic formula selection unit 150 outputs the selected performance calculation basic formula to the performance estimation unit 160.
  • the performance calculation basic formula selection unit 150 corresponds to a calculation procedure selection unit.
  • the process performed by the performance calculation basic formula selection unit 150 corresponds to a calculation procedure selection process.
  • the performance estimation unit 160 acquires the performance calculation basic formula from the performance calculation basic formula selection unit 150. In addition, the performance estimation unit 160 acquires memory access delay characteristic information from the computing resource database 170. Then, the performance estimation unit 160 calculates the memory access time in the loop processing by applying the memory access size and the memory access order extracted by the parameter extraction unit 140 to the memory access delay characteristic information. In addition, the performance estimation unit 160 acquires calculation time information from the calculation resource database 170. Then, the performance estimation unit 160 calculates the calculation time (instruction execution time) in the loop process by applying the calculation number for each calculation type in the loop process extracted by the parameter extraction unit 140 to the calculation time information.
  • the performance estimation unit 160 also applies the calculated memory access time and calculation time (instruction execution time) to the basic performance calculation formula acquired from the basic performance calculation formula selection unit 150. Then, the performance estimation unit 160 obtains the processing time for the entire loop processing. The performance estimation unit 160 obtains the entire processing time of the function model 210 from the processing time of each loop process. Then, the performance estimation unit 160 outputs the entire processing time of the function model 210 as the performance estimation value 300.
  • the performance estimation unit 160 corresponds to a processing time calculation unit. The processing performed by the performance estimation unit 160 corresponds to processing time calculation processing.
  • the calculation resource database 170 holds performance calculation basic formula information.
  • the computing resource database 170 holds constraint condition information. Further, the computing resource database 170 holds memory access delay characteristic information and computation time information for each computation.
  • the computing resource database 170 is realized by the storage device 903.
  • FIG. 11 shows an example of performance calculation basic formula information. The details of the performance calculation basic formula information will be described later.
  • the performance calculation basic formula information of FIG. 11 four performance calculation basic formulas are described.
  • the explanation column is provided as supplementary information for understanding each performance calculation basic expression.
  • the performance calculation basic formula information held in the calculation resource database 170 does not need to have a description column.
  • FIG. 12 shows an example of constraint condition information.
  • a constraint condition regarding the characteristics of the loop processing and a constraint condition regarding the architecture of the computing resource are defined. Details of the constraint condition information will be described later.
  • the restriction on the characteristics of the loop processing indicates the characteristics of the loop processing to which the basic formula for performance calculation is applied.
  • the constraint on the architecture of the computing resource indicates the architecture of the computing resource to which the basic formula for performance calculation is applied.
  • the memory access delay characteristic information describes the calculation procedure of the memory access delay time.
  • FIG. 13 shows an example of memory access delay characteristic information. Details of the memory access delay characteristic information will be described later. Note that the memory access delay characteristic information corresponds to a memory access delay time calculation procedure.
  • the calculation time calculation procedure is described in the calculation time information.
  • FIG. 14 shows an example of calculation time information. Details of the calculation time information will be described later.
  • step S110 the calculation resource information acquisition unit 110 acquires the calculation resource information 200 and outputs the acquired calculation resource information 200 to the performance calculation basic formula selection unit 150. After step S110, the process proceeds to step S120.
  • step S ⁇ b> 120 the function model acquisition unit 120 acquires the function model 210 and outputs the acquired function model 210 to the process dividing unit 130.
  • the function model 210 is a process described in a programming language such as C language, and is the whole or a part of an executable program.
  • FIG. 5 shows an example of the function model 210.
  • step S ⁇ b> 130 the process dividing unit 130 extracts loop processes from the function model 210, and outputs each loop process to the parameter extracting unit 140.
  • FIG. 6 shows an example of the loop processing extracted from the function model 210 shown in FIG. After step S130, the process proceeds to step S140.
  • step S140 the parameter extraction unit 140 determines the characteristics of each loop process. Then, the parameter extraction unit 140 outputs each loop process and the characteristics of each loop process to the performance calculation basic formula selection unit 150.
  • the characteristics of loop processing include the following. (1) Presence / absence of data dependence between loop iterations The parameter extraction unit 140 determines whether or not the execution order of a plurality of operations included in the loop processing is limited.
  • FIG. 7 shows an example of loop processing with data dependency.
  • (2) Number of branch number processes in the loop When the branch process is included in the loop process, the parameter extraction unit 140 counts the number of branch processes.
  • FIG. 8 shows an example of loop processing having control dependence, that is, loop processing including branch processing. In the case of the loop processing of FIG.
  • the parameter extraction unit 140 converts the loop processing into a reduction operation. It is determined as a loop process that can be configured.
  • FIG. 9 shows an example of loop processing that can be reduced. After step S140, the process proceeds to step S141.
  • step S141 the parameter extraction unit 140 extracts the memory access size, the memory access order (sequential or random), and the number of operations for each operation type from each loop process. Then, the parameter extraction unit 140 outputs the memory access size, the memory access order, the number of operations for each operation type, and the calculation resource information 200 to the performance estimation unit 160.
  • the parameter extraction unit 140 extracts operators such as addition, subtraction, multiplication, division, bit shift, and logical operation as the operation type.
  • the parameter extraction unit 140 also extracts an operation treated as one operation on the architecture of a calculation resource such as a product-sum operation (a * c + b) as one operation type.
  • FIG. 10 shows a loop processing source code and a parameter extraction example of the parameter extraction unit 140 for the loop processing. After step S141, the process proceeds to step S150.
  • step S150 the performance calculation basic formula selection unit 150 acquires constraint condition information from the calculation resource database 170.
  • FIG. 12 shows an example of constraint condition information.
  • step S151 the performance calculation basic formula selection unit 150 selects an optimum value for each loop processing from among a plurality of performance calculation basic formulas held in the calculation resource database 170 from the characteristics of the loop processing and the architecture of the calculation resources. Select the basic formula for performance calculation. More specifically, the performance calculation basic formula selection unit 150 acquires the combination of the loop processing characteristics determined by the parameter extraction unit 140 and the calculation resource architecture indicated in the calculation resource information 200 in step S150. A performance calculation basic expression is selected by comparing a constraint condition regarding the characteristics of the loop processing indicated in the constraint condition information with a combination of the constraint condition regarding the architecture of the computing resource. In FIG.
  • the performance calculation basic formula selection unit 150 sets “(1) Sequential”, “(2 Performance calculation basic formulas of “) parallel” and “(4) contraction” can be selected.
  • the loop process shown in FIG. 10 is a loop process that has data dependence between loop iterations and can be reduced.
  • the performance calculation basic formula selection unit 150 can select a performance calculation basic formula of “(1) Sequential” or “(4) Reduction” for the loop processing of FIG.
  • the performance calculation basic formula selection unit 150 selects the performance calculation basic formula “(4) contraction”.
  • the performance calculation basic formula selection unit 150 acquires the selected performance calculation basic formula from the calculation resource database 170 and outputs the acquired performance calculation basic formula to the performance estimation unit 160. After step S151, the process proceeds to step S160.
  • step S160 the performance estimation unit 160 acquires memory access delay characteristic information from the calculation resource database 170.
  • the memory access delay characteristic information indicates a procedure for calculating the memory access delay time from the memory access order and the memory access size depending on the memory architecture of the calculation resource.
  • FIG. 13 shows an example of memory access delay characteristic information.
  • the memory access delay characteristic information in FIG. 13 indicates that the access time is Tr_slow [ns] when the access size of the read access is N [bytes] or more and the memory access order is random access.
  • the memory access delay characteristic information in FIG. 13 indicates that the access time is Tr_fast [ns] when the access size and the memory access order of the read access are other than the above conditions. Further, the memory access delay characteristic information in FIG.
  • the memory access delay characteristic information in FIG. 13 indicates that the access time for write access is always Tw [ns].
  • the memory access delay characteristic information in FIG. 13 indicates the memory access delay characteristic of a computing resource having an N [byte] cache.
  • the memory access delay characteristic information is expressed in the form of a programming language, but the memory access delay characteristic information may be expressed by other methods such as a mathematical expression.
  • step S161 the performance estimation unit 160 substitutes the memory access order and memory access size acquired from the parameter extraction unit 140 in step S141 for the memory access delay characteristic information acquired in S160, thereby performing memory access in loop processing. Calculate the delay time.
  • the parameter extraction unit 140 extracts the access size and the memory access order shown in FIG.
  • the read access time Tr_fast [ns] and the write access time Tw [ns] are obtained. Therefore, the memory access time in the loop process is (Tr_fast + Tw) [ns].
  • step S ⁇ b> 162 the performance estimation unit 160 acquires calculation time information of calculation resources from the calculation resource database 170.
  • FIG. 14 shows an example of calculation time information. As shown in FIG. 14, the calculation time information indicates the calculation type corresponding to the delay value for each calculator included in the calculation resource. After step S162, the process proceeds to step S163.
  • step S163 the performance estimation unit 160 calculates the calculation time in the loop process from the calculation time information acquired in step S162 and the number of calculations for each calculation type extracted by the parameter extraction unit 140 in step S141.
  • step S163 the process proceeds to step S164.
  • step S164 the performance estimation unit 160 adds the memory access time and loop in the loop processing calculated by the performance estimation unit 160 in steps S161 and S163 to the performance calculation basic formula selected by the performance calculation basic formula selection unit 150 in step S151.
  • the processing time of the entire loop process is calculated by substituting the calculation time in the process.
  • the performance calculation basic formula is “(4) contraction” in FIG. 11, the memory access delay in the loop processing is (Tr_fast + Tw) [ns], the computation time in the loop processing is Talu [ns], and the overhead When (fixed value) is OH [ns], the calculation time of the entire loop processing is calculated as ⁇ (Tr_fast + Tw + Talu + OH) ⁇ log2 (N) ⁇ [ns].
  • the performance calculation basic calculation formula 150 selects “(1) Sequential” in FIG. 12 and assuming that the same memory access delay time and calculation time as described above are obtained, the calculation time of the entire loop processing is ⁇ ( Tr_fast + Tw + Talu + OH) ⁇ N ⁇ [ns].
  • the basic formula for performance calculation reflects the difference in processing time of the loop processing caused by the loop processing implementation method.
  • step S164 the process proceeds to step S165.
  • step S165 the performance estimation unit 160 calculates the processing time of the entire functional model from the processing time of the entire loop processing calculated in step S164.
  • the performance estimation unit 160 calculates the processing time of the entire function model 210 by calculating the total of each loop process or the critical path.
  • the performance estimation unit 160 calculates a critical path by task scheduling in the case of a calculation resource that can be task-parallelized.
  • a computing resource capable of task parallelization is, for example, a multi-core CPU or FPGA.
  • the performance estimation unit 160 outputs the processing time of the entire function model 210 calculated above as the performance estimation value 300, and ends the performance estimation process.
  • the calculation resource database 170 holds one memory access delay characteristic information and one calculation time information for each calculation resource.
  • the calculation resource database 170 holds memory access delay characteristic information and calculation time information in units of combinations of calculation resources and basic performance calculation formulas. You may do it.
  • the GPU corresponds to “(1) Sequential”, “(2) Parallel”, and “(4) Reduction”.
  • the computing resource database 170 includes memory access delay characteristic information and calculation time information for a combination of GPU and “(1) Sequential”, memory access delay characteristic information and calculation time information for a combination of GPU and “(2) parallel”, In addition, memory access delay characteristic information and calculation time information regarding a combination of the GPU and “(4) contraction” may be held.
  • Each memory access delay characteristic information indicates a different calculation procedure, and each calculation time information indicates a different calculation procedure.
  • the performance estimation apparatus selects a basic performance calculation formula based on the characteristics of loop processing and the architecture of calculation resources. Then, the performance estimation device according to the present embodiment calculates the processing time of the loop processing using the selected performance calculation basic formula. For this reason, it is possible to realize a highly accurate performance estimation that reflects the architecture of computing resources without using a simulation.
  • a processor 901 illustrated in FIG. 2 is an IC (Integrated Circuit) that performs processing.
  • the processor 901 is a CPU (Central Processing Unit), a DSP (Digital Signal Processor), or the like.
  • the memory 902 is a RAM (Random Access Memory).
  • the storage device 903 is a ROM (Read Only Memory), a flash memory, an HDD (Hard Disk Drive), or the like.
  • the input device 904 is, for example, a mouse or a keyboard.
  • the output device 905 is, for example, a display device.
  • the storage device 903 also stores an OS (Operating System). Then, at least a part of the OS is executed by the processor 901. While executing at least part of the OS, the processor 901 executes a calculation resource information acquisition unit 110, a function model acquisition unit 120, a function model acquisition unit 120, a process division unit 130, a parameter extraction unit 140, a performance calculation basic expression selection unit 150, and A program for realizing the function of the performance estimation unit 160 is executed. When the processor 901 executes the OS, task management, memory management, file management, communication control, and the like are performed.
  • OS Operating System
  • Information indicating the processing results of the calculation resource information acquisition unit 110, the function model acquisition unit 120, the function model acquisition unit 120, the processing division unit 130, the parameter extraction unit 140, the performance calculation basic formula selection unit 150, and the performance estimation unit 160 At least one of the data, the signal value, and the variable value is stored in at least one of the storage device 903, the register in the processor 901, and the cache memory.
  • the programs for realizing the functions of the calculation resource information acquisition unit 110, the function model acquisition unit 120, the processing division unit 130, the parameter extraction unit 140, the performance calculation basic formula selection unit 150, and the performance estimation unit 160 are a magnetic disk and a flexible disk. Further, it may be stored in a portable storage medium such as an optical disk, a compact disk, a Blu-ray (registered trademark) disk, or a DVD.
  • the performance estimation device 100 may be realized by an electronic circuit such as a logic IC (Integrated Circuit), a GA (Gate Array), an ASIC (Application Specific Integrated Circuit), or an FPGA (Field-Programmable Gate Array).
  • the computational resource information acquisition unit 110, the functional model acquisition unit 120, the functional model acquisition unit 120, the processing division unit 130, the parameter extraction unit 140, the performance calculation basic formula selection unit 150, and the performance estimation unit 160 are each an electronic circuit. Realized as part of The processor and the electronic circuit are also collectively referred to as a processing circuit.
  • 100 performance estimation device 110 calculation resource information acquisition unit, 120 function model acquisition unit, 130 process division unit, 140 parameter extraction unit, 150 performance calculation basic formula selection unit, 160 performance estimation unit, 170 calculation resource database, 200 calculation resource information , 210 function model, 300 performance estimate, 901 processor, 902 memory, 903 storage device, 904 input device, 905 output device.

Abstract

処理分割部(130)は、1つ以上のループ処理が含まれる機能モデル(210)から1つ以上のループ処理の各々を抽出する。パラメータ抽出部(140)は、抽出された各ループ処理の特性を判定する。性能計算基本式選択部(150)は、処理時間を計算するための複数の処理時間計算手順の中から、ループ処理ごとに、各ループ処理の処理時間を計算するための処理時間計算手順を、各ループ処理の特性と、機能モデル(210)を実行する計算資源のアーキテクチャとに基づき選択する。性能見積り部(160)は、性能計算基本式選択部(150)により選択された、対応する処理時間計算手順を用いて、各ループ処理の処理時間を計算する。

Description

情報処理装置、情報処理方法及び情報処理プログラム
 本発明は、プログラムの処理時間を計算する技術に関する。
 組込みシステムは、CPU(Central Processing Unit)、DSP(Digital Signal Processor)、GPU(Graphic Processing Unit)、FPGA(Field Programmable Gate Array)等の計算資源、メモリ、IC(Integrated Circuit)などが組み合わされて構成される。これらの計算資源を選定すること、メモリ及びICを選定すること及び計算資源とメモリ及びICとの接続構成を決定することをシステムアーキテクチャ設計と呼ぶ。
 従来から、システムアーキテクチャ設計は、設計者の経験等により行われている。また、計算資源上で動作するソフトウェアやハードウェアのシミュレーションモデルを用いて、組込みシステムのシミュレートを行うことで、組込みシステムの性能見積りが行われる。
 しかしながら、上記の性能見積り方法は、一旦システムアーキテクチャ設計を行ったうえで、システムを構成する計算資源及びメモリのそれぞれについてシミュレーションモデルを作成する必要がある。このため、シミュレーションモデル開発に工数がかかるという問題がある。また、システムアーキテクチャを変更する度に、シミュレーションモデルの変更が必要になるという問題もある。
 また、性能を見積もるためにシミュレーションモデルを用いたシミュレーションを行う時間が必要となり、性能見積りに時間がかかるという問題もある。
 これらの問題を解決するため、シミュレーションを用いずにデータベース上の性能値を利用する方法が、特許文献1及び特許文献2に開示されている。
 特許文献1では、プロセッサの性能を見積る方法が開示されている。より具体的には、特許文献1では、プロセッサの命令実行時間をデータベースに格納しておき、プロセッサの命令実行時間をソースコードに含まれる演算に当てはめることでプロセッサの性能を見積もる方法が開示されている。
 特許文献2では、GPUのような並列プロセッサの性能を見積る方法が開示されている。より具体的には、特許文献2では、機能モデルからループ回数を取得し、取得したループ回数を並列プロセッサのコア数で除算することにより、ループを並列化した際の並列プロセッサの性能を見積る方法が開示されている。
特開2005-242569号公報 特開2014-194660号公報
 しかしながら、これらの手法を用いても、計算資源のアーキテクチャに基づいて機能モデルを実装した際の性能見積りができず、見積値の精度が低いという課題がある。
 本発明は、この課題を解決することを主な目的とする。より具体的には、本発明は、シミュレーションを用いずに、計算資源のアーキテクチャを反映した高精度な性能見積りを実現することを主な目的とする。
 本発明に係る情報処理装置は、
 1つ以上のループ処理が含まれるプログラムから前記1つ以上のループ処理の各々を抽出するループ抽出部と、
 前記ループ抽出部により抽出された各ループ処理の特性を判定する特性判定部と、
 処理時間を計算するための複数の処理時間計算手順の中から、ループ処理ごとに、各ループ処理の処理時間を計算するための処理時間計算手順を、前記特性判定部により判定された各ループ処理の特性と、前記プログラムを実行する計算資源のアーキテクチャとに基づき選択する計算手順選択部と、
 前記計算手順選択部により選択された、対応する処理時間計算手順を用いて、各ループ処理の処理時間を計算する処理時間計算部とを有する。
 本発明によれば、シミュレーションを用いずに、計算資源のアーキテクチャを反映した高精度な性能見積りを実現することができる。
実施の形態1に係る性能見積り装置の機能構成例を示す図。 実施の形態1に係る性能見積り装置のハードウェア構成例を示す図。 実施の形態1に係る性能見積り装置の動作例を示すフローチャート。 実施の形態1に係る性能見積り装置の動作例を示すフローチャート。 実施の形態1に係る機能モデルの例を示す図。 実施の形態1に係るループ処理の例を示す図。 実施の形態1に係るイタレーション間にデータ依存のあるループ処理の例を示す図。 実施の形態1に係る制御依存のあるループ処理の例を示す図。 実施の形態1に係る縮約可能演算化が可能なループ処理の例を示す図。 実施の形態1に係るループ処理のパラメータ抽出例を示す図。 実施の形態1に係る性能計算基本式情報の例を示す図。 実施の形態1に係る制約条件情報の例を示す図。 実施の形態1に係るメモリアクセス遅延特性情報の例を示す図。 実施の形態1に係る演算時間情報の例を示す図。
 以下、本発明の実施の形態について、図を用いて説明する。以下の実施の形態の説明及び図面において、同一の符号を付したものは、同一の部分または相当する部分を示す。
 実施の形態1.
***構成の説明***
 図1は、実施の形態1に係る性能見積り装置100の機能構成例を示す。実施の形態1に係る性能見積り装置100の機能構成について、図1に基づいて説明する。ただし、性能見積り装置100の機能構成は図1と異なる機能構成であっても構わない。
 性能見積り装置100は、計算資源情報取得部110と機能モデル取得部120と処理分割部130とパラメータ抽出部140と性能計算基本式選択部150と性能見積り部160と計算資源データベース170とを備える。
 また、性能見積り装置100は、計算資源情報200と機能モデル210を取得し、性能見積値300を出力する。
 性能見積り装置100は、情報処理装置に相当する。また、性能見積り装置100で行われる動作は、情報処理方法及び情報処理プログラムに相当する。
 また、図2は、実施の形態1に係る性能見積り装置100のハードウェア構成例を示す。
 性能見積り装置100は、プロセッサ901、メモリ902、記憶装置903、入力装置904及び出力装置905を備える。
 性能見積り装置100は、コンピュータである。
 記憶装置903には、図1に示す計算資源情報取得部110、機能モデル取得部120、機能モデル取得部120、処理分割部130、パラメータ抽出部140、性能計算基本式選択部150及び性能見積り部160の機能を実現するプログラムが記憶されている。
 プログラムはメモリ902にロードされる。そして、プロセッサ901がプログラムをメモリ902から読み出してプログラムを実行し、後述する計算資源情報取得部110、機能モデル取得部120、機能モデル取得部120、処理分割部130、パラメータ抽出部140、性能計算基本式選択部150及び性能見積り部160の動作を行う。
 図1では、プロセッサ901が計算資源情報取得部110、機能モデル取得部120、機能モデル取得部120、処理分割部130、パラメータ抽出部140、性能計算基本式選択部150及び性能見積り部160の機能を実現するプログラムを実行している状態を模式的に表している。
 次に、図1に示す構成要素の詳細を説明する。
 計算資源情報取得部110は、計算資源情報200を取得する。計算資源情報200には、機能モデル210を実行する計算資源のアーキテクチャが示される。機能モデル210には、性能見積もりの対象の処理が記述される。機能モデル210は、例えば、プログラムのソースコードの全部又は一部である。機能モデル210には、1つ以上のループ処理が含まれる。計算資源とは、プログラムを実行する演算装置である。前述したように、計算資源には、CPU、DSP、GPU、FPGA等が含まれる。計算資源のアーキテクチャは、製品名、製品コードといった計算資源の具体的な型番である。
 計算資源情報取得部110は、計算資源情報200を性能計算基本式選択部150に出力する。
 機能モデル取得部120は、機能モデル210を取得する。機能モデル210の機能モデル取得部120への入力は、性能見積り装置100を利用するユーザが実施する。
 処理分割部130は、機能モデル取得部120が取得した機能モデル210を分割する。より具体的には、処理分割部130は、機能モデル210からループ処理を抽出する。
 ループ処理とは、例えば機能モデル210がC言語のプログラムである場合は、for文などで表される処理である。処理分割部130は、機能モデル210がC言語のプログラムである場合は、for文で囲われた箇所を1つのループとして抽出し、また、for文とfor文の間の処理記述を、ループ回数1のループとして抽出する。
 処理分割部130は、ループ処理ごとに分割した機能モデル210をパラメータ抽出部140に出力する。
 機能モデル取得部120は、ループ抽出部に相当する。また、機能モデル取得部120により行われる処理は、ループ抽出処理に相当する。
 パラメータ抽出部140は、処理分割部130で抽出された各ループ処理の特性を判定する。また、パラメータ抽出部140は、処理分割部130で抽出された各ループ処理から、ループ処理全体のメモリアクセスサイズとメモリアクセス順序を抽出する。また、パラメータ抽出部140は、処理分割部130で抽出された各ループ処理から、ループ処理内の演算種別ごとの演算数を抽出する。
 パラメータ抽出部140は、ループ処理の特性として、ループ処理のイタレーション間のデータ依存の有無、ループ処理に含まれる分岐処理の数(ループ処理内の処理の制御依存数)、ループ処理の縮約演算化の可否を判定する。なお、ループ処理の特性は、これらに限られない。
 パラメータ抽出部140は、各ループ処理の特性を性能計算基本式選択部150に出力する。
 また、パラメータ抽出部140は、抽出したメモリアクセスサイズ、メモリアクセス順序、演算種別ごとの演算数を性能見積り部160に出力する。
 パラメータ抽出部140は、特性判定部に相当する。また、パラメータ抽出部140により行われる処理は特性判定処理に相当する。
 性能計算基本式選択部150は、計算資源データベース170で保持されている複数の性能計算基本式から最適の性能計算基本式を選択する。性能計算基本式は、ループ処理の処理時間を計算するための処理時間計算手順である。性能計算基本式選択部150は、ループ処理ごとに、最適の性能計算基本式を選択する。より具体的には、性能計算基本式選択部150は、計算資源データベース170から出力される制約条件情報に示される制約条件と、パラメータ抽出部140で判定されたループ処理の特性と、計算資源情報200に示される計算資源のアーキテクチャとに基づき、ループ処理ごとに、最適な性能計算基本式を選択する。
 性能計算基本式選択部150は、選択した性能計算基本式を性能見積り部160に出力する。
 性能計算基本式選択部150は、計算手順選択部に相当する。また、性能計算基本式選択部150で行われる処理は、計算手順選択処理に相当する。
 性能見積り部160は、性能計算基本式選択部150から、性能計算基本式を取得する。
 また、性能見積り部160は、計算資源データベース170から、メモリアクセス遅延特性情報を取得する。そして、性能見積り部160は、パラメータ抽出部140が抽出したメモリアクセスサイズ、メモリアクセス順序をメモリアクセス遅延特性情報に適用して、ループ処理内のメモリアクセス時間を算出する。
 また、性能見積り部160は、計算資源データベース170から、演算時間情報を取得する。そして、性能見積り部160は、パラメータ抽出部140が抽出したループ処理内の演算種別ごとの演算数を演算時間情報に適用して、ループ処理での演算時間(命令実行時間)を算出する。
 また、性能見積り部160は、算出したメモリアクセス時間、演算時間(命令実行時間)を性能計算基本式選択部150から取得した性能計算基本式に適用する。そして、性能見積り部160は、ループ処理全体の処理時間を得る。
 性能見積り部160は、各ループ処理の処理時間から、機能モデル210の全体の処理時間を得る。そして、性能見積り部160は、機能モデル210の全体の処理時間を性能見積値300として出力する。
 性能見積り部160は、処理時間計算部に相当する。また、性能見積り部160により行われる処理は処理時間計算処理に相当する。
 計算資源データベース170は、性能計算基本式情報を保持する。また、計算資源データベース170は、制約条件情報を保持する。更に、計算資源データベース170は、メモリアクセス遅延特性情報、演算ごとの演算時間情報を保持する。
 計算資源データベース170は、記憶装置903で実現される。
 性能計算基本式情報には、複数の性能計算基本式が記述されている。図11に性能計算基本式情報の例を示す。性能計算基本式情報の詳細は後述する。
 図11の性能計算基本式情報には、4つの性能計算基本式が記述される。なお、説明の欄は、各性能計算基本式を理解するための補足情報として設けている。計算資源データベース170で保持する性能計算基本式情報には、説明の欄を設けなくてもよい。
 制約条件情報には、性能計算基本式ごとに制約条件が記述される。図12に制約条件情報の例を示す。図12の制約条件情報には、ループ処理の特性についての制約条件と計算資源のアーキテクチャについての制約条件が定義されている。制約条件情報の詳細は後述する。ループ処理の特性についての制約条件には、性能計算基本式の適用対象のループ利処理の特性が示される。また、計算資源のアーキテクチャについての制約条件には、性能計算基本式の適用対象の計算資源のアーキテクチャが示される。
 メモリアクセス遅延特性情報には、メモリアクセス遅延時間の算出手順が記述される。図13にメモリアクセス遅延特性情報の例を示す。メモリアクセス遅延特性情報の詳細は後述する。なお、メモリアクセス遅延特性情報は、メモリアクセス遅延時間計算手順に相当する。
 演算時間情報には、演算時間の算出手順が記述される。図14に演算時間情報の例を示す。演算時間情報の詳細は後述する。
***動作の説明***
 図3及び図4は、実施の形態1に係る性能見積り装置100の動作例を示す。
 実施の形態1に係る性能見積り装置100の動作例を図3及び図4に基づいて説明する。ただし、性能見積り装置100の動作に図3及び図4と異なる処理が含まれていても構わない。
 先ず、ステップS110において、計算資源情報取得部110は、計算資源情報200を取得し、取得した計算資源情報200を性能計算基本式選択部150に出力する。
 ステップS110の後、処理はステップS120に進む。
 次に、ステップS120において、機能モデル取得部120が、機能モデル210を取得し、取得した機能モデル210を処理分割部130に出力する。機能モデル210は、C言語等のプログラミング言語で記述された処理であり、実行可能なプログラムの全体または一部である。図5に機能モデル210の例を示す。
 ステップS120の後、処理はステップS130に進む。
 次に、S130において、処理分割部130が、機能モデル210からループ処理を抽出し、各ループ処理をパラメータ抽出部140に出力する。
 図6は、図5に示す機能モデル210から抽出されたループ処理の例を示す。
 ステップS130の後、処理はステップS140に進む。
 次に、ステップS140において、パラメータ抽出部140が、各ループ処理の特性を判定する。そして、パラメータ抽出部140は、各ループ処理と、各ループ処理の特性を性能計算基本式選択部150に出力する。ループ処理の特性としては、例えば、以下のようなものがある。
(1)ループイタレーション間のデータ依存の有無
 パラメータ抽出部140は、ループ処理に含まれている複数の演算の実行順序が制限されるか否かを判定する。図7に、データ依存があるループ処理の例を示す。
(2)ループ内の分岐数処理の数
 ループ処理内に分岐処理が含まれる場合に、パラメータ抽出部140は、分岐処理の数をカウントする。図8に制御依存があるループ処理、すなわち、分岐処理が含まれるループ処理の例を示す。図8のループ処理の場合は、分岐処理が1つのため、分岐処理数(制御依存数ともいう)は1である。
(3)ループの縮約演算化の可否
 演算結果が1変数に集約される、交換法則適用可能な演算がループ処理に含まれる場合に、パラメータ抽出部140は、当該ループ処理を、縮約演算化可能なループ処理として判定する。図9に縮約演算化可能なループ処理の例を示す。
 ステップS140の後、処理はステップS141に進む。
 ステップS141において、パラメータ抽出部140が、各ループ処理からメモリアクセスサイズ、メモリアクセス順序(シーケンシャルまたはランダム)、演算種別ごとの演算数を抽出する。そして、パラメータ抽出部140は、メモリアクセスサイズ、メモリアクセス順序、演算種別ごとの演算数と、計算資源情報200を性能見積り部160に出力する。
 パラメータ抽出部140は、演算種別として、加減乗除、ビットシフト、論理演算などの演算子を抽出する。また、パラメータ抽出部140は、積和演算(a * c + b)等の計算資源のアーキテクチャ上、1演算として扱われる演算も1つの演算種別として抽出する。
 図10に、ループ処理のソースコードと、当該ループ処理についてのパラメータ抽出部140のパラメータ抽出例を示す。
 ステップS141の後、処理はステップS150に進む。
 次に、ステップS150において、性能計算基本式選択部150が、計算資源データベース170から、制約条件情報を取得する。
 図12に制約条件情報の例を示す。
 S150の後、処理はS151に進む。
 ステップS151において、性能計算基本式選択部150は、ループ処理の特性と計算資源のアーキテクチャから、計算資源データベース170で保持されている複数の性能計算基本式の中から、ループ処理ごとに、最適な性能計算基本式を選択する。
 より具体的には、性能計算基本式選択部150は、パラメータ抽出部140で判定されたループ処理の特性と、計算資源情報200に示される計算資源のアーキテクチャとの組み合わせと、ステップS150で取得した制約条件情報に示されるループ処理の特性についての制約条件と計算資源のアーキテクチャについての制約条件との組み合わせとを比較して、性能計算基本式を選択する。
 図12では、「(1)シーケンシャル」の性能計算基本式に対しては、ループ処理の特性についての制約条件として「無」が定義され、計算資源のアーキテクチャについての制約条件として「CPU,DSP,FPGA,GPU」が定義されている。「(2)並列」の性能計算基本式に対しては、ループ処理の特性についての制約条件として「ループイタレーション間のデータ存在無」が定義され、計算資源のアーキテクチャについての制約条件として「DSP,GPU」が定義されている。「(4)縮約」の性能計算基本式に対しては、ループ処理の特性についての制約条件として「縮約演算化可能」が定義され、計算資源のアーキテクチャについての制約条件として「GPU,FPGA」が定義されている。
 計算資源情報200に示される計算資源のアーキテクチャがGPUに属する型番である場合は、性能計算基本式選択部150は、当該ループ処理の性能計算基本式として、「(1)シーケンシャル」、「(2)並列」及び「(4)縮約」の性能計算基本式が選択可能である。図10に示すループ処理は、ループイタレーション間のデータ依存があり、縮約化可能なループ処理である。性能計算基本式選択部150は、図10のループ処理に対しては、「(1)シーケンシャル」又は「(4)縮約」の性能計算基本式が選択可能である。ここでは、「(4)縮約」の性能計算基本式の方が性能が良いので、性能計算基本式選択部150は、「(4)縮約」の性能計算基本式を選択する。
 そして、性能計算基本式選択部150は、選択した性能計算基本式を計算資源データベース170から取得し、取得した性能計算基本式を性能見積り部160に出力する。
 ステップS151の後、処理はステップS160に進む。
 ステップS160において、性能見積り部160は、計算資源データベース170から、メモリアクセス遅延特性情報を取得する。メモリアクセス遅延特性情報は、計算資源のメモリアーキテクチャに依存したメモリアクセス順序及びメモリアクセスサイズから、メモリアクセス遅延時間を算出する手順を示す。図13にメモリアクセス遅延特性情報の例を示す。
 図13のメモリアクセス遅延特性情報は、リードアクセスのアクセスサイズがN[byte]以上、メモリアクセス順序がランダムアクセスのときに、アクセス時間がTr_slow[ns]であることを示す。また、図13のメモリアクセス遅延特性情報は、リードアクセスのアクセスサイズ及びメモリアクセス順序が上記の条件以外のときは、アクセス時間がTr_fast[ns]であることを示す。また、図13のメモリアクセス遅延特性情報は、ライトアクセスのアクセス時間は常にTw[ns]であることを示す。図13のメモリアクセス遅延特性情報は、N[byte]のキャッシュを持つ計算資源のメモリアクセス遅延特性を示している。
 図13の例では、メモリアクセス遅延特性情報は、プログラミング言語の形式で表現されているが、メモリアクセス遅延特性情報は、数式等の他の方法で表現されてもよい。
 ステップS160の後は、処理はステップS161に進む。
 ステップS161において、性能見積り部160は、S160で取得したメモリアクセス遅延特性情報に、ステップS141でパラメータ抽出部140から取得したメモリアクセス順序、メモリアクセスサイズを代入することで、ループ処理でのメモリアクセス遅延時間を計算する。
 図13に示す計算資源のメモリアクセス遅延特性情報が用いられ、パラメータ抽出部140が図10で示すアクセスサイズ、メモリアクセス順序を抽出した場合を想定する。この場合は、アクセスサイズ=N[byte]、リードアクセス順序=シーケンシャルなので、リードアクセス時間Tr_fast[ns]、ライトアクセス時間Tw[ns]となる。このため、ループ処理内のメモリアクセス時間は(Tr_fast+Tw)[ns]となる。
 ステップS162において、性能見積り部160は、計算資源データベース170から、計算資源の演算時間情報を取得する。図14は演算時間情報の例を示す。図14に示すように、演算時間情報には、計算資源に含まれる演算器ごとに、遅延値と対応する演算種別が示される。
 ステップS162の後は、処理はステップS163に進む。
 ステップS163において、性能見積り部160は、ステップS162で取得した演算時間情報と、ステップS141でパラメータ抽出部140が抽出した演算種別ごとの演算数から、ループ処理での演算時間を計算する。
 図14に示す演算時間情報が用いられ、パラメータ抽出部140が図10で示す演算種別ごとの演算数を抽出した場合を想定する。図10の例では、ADDが1つなので、ループ内演算時間はTalu[ns]となる。もし、ループ処理に、ADDが1つ、SUBが1つ、SHIFTが1つ含まれていれば、ループ内演算時間は、3×Talu[ns]となる。
 ステップS163の後は、ステップS164に進む。
 ステップS164において、性能見積り部160は、ステップS151で性能計算基本式選択部150が選択した性能計算基本式にステップS161とステップS163で性能見積り部160が算出したループ処理内のメモリアクセス時間とループ処理内の演算時間を代入してループ処理全体の処理時間を計算する。
 性能計算基本式が図11の「(4)縮約」であり、ループ処理内のメモリアクセス遅延が(Tr_fast+Tw)[ns]であり、ループ処理内の演算時間がTalu[ns]であり、オーバーヘッド(固定値)がOH[ns]である場合は、ループ処理全体の演算時間は{(Tr_fast+Tw+Talu+OH)×log2(N)}[ns]と算出される。
 例えば、性能計算基本計算式150が図12の「(1)シーケンシャル」を選択した場合に、上記と同じメモリアクセス遅延時間と演算時間が得られたと仮定すると、ループ処理全体の演算時間は{(Tr_fast+Tw+Talu+OH)×N}[ns]となる。
 このように、性能計算基本式は、ループ処理の実装方法によって生じるループ処理の処理時間の差異を反映している。
 ステップS164の後は、処理はステップS165に進む。
 ステップS165において、性能見積り部160は、ステップS164で算出した各ループ処理全体の処理時間から、機能モデル全体の処理時間を算出する。
 性能見積り部160は、例えば、各ループ処理の総和またはクリティカルパスの算出により機能モデル210全体の処理時間を算出する。性能見積り部160は、タスク並列化が可能な計算資源の場合、クリティカルパスをタスクスケジューリングにより算出する。タスク並列化が可能な計算資源は、例えばマルチコアCPUやFPGAである。
 性能見積り部160は、上記で算出した機能モデル210全体の処理時間を性能見積値300として出力し、性能見積り処理を終了する。
 なお、上記では、計算資源データベース170は、計算資源ごとに1つのメモリアクセス遅延特性情報と1つの演算時間情報を保持している。1つの計算資源が複数の性能計算基本式に適応している場合は、計算資源データベース170は、計算資源と性能計算基本式との組合せの単位で、メモリアクセス遅延特性情報及び演算時間情報を保持していてもよい。
 図12の例では、GPUは「(1)シーケンシャル」、「(2)並列」及び「(4)縮約」に対応している。計算資源データベース170は、GPUと「(1)シーケンシャル」の組合せについてのメモリアクセス遅延特性情報及び演算時間情報、GPUと「(2)並列」の組合せについてのメモリアクセス遅延特性情報及び演算時間情報、及びGPUと「(4)縮約」の組合せについてのメモリアクセス遅延特性情報及び演算時間情報を保持してもよい。
 そして、各メモリアクセス遅延特性情報には異なる算出手順が示され、各演算時間情報には異なる算出手順が示されている。
***実施の形態の効果の説明***
 本実施の形態に係る性能見積り装置は、ループ処理の特性と、計算資源のアーキテクチャとに基づき、性能計算基本式を選択する。そして、本実施の形態に係る性能見積り装置は、選択した性能計算基本式を用いて、ループ処理の処理時間を計算する。このため、シミュレーションを用いずに、計算資源のアーキテクチャを反映した高精度な性能見積りを実現することができる。
***ハードウェア構成の説明***
 最後に、性能見積り装置100のハードウェア構成の補足説明を行う。
 図2に示すプロセッサ901は、プロセッシングを行うIC(Integrated Circuit)である。
 プロセッサ901は、CPU(Central Processing Unit)、DSP(Digital Signal Processor)等である。
 メモリ902は、RAM(Random Access Memory)である。
 記憶装置903は、ROM(Read Only Memory)、フラッシュメモリ、HDD(Hard Disk Drive)等である。
 入力装置904は、例えば、マウス又はキーボードである。
 出力装置905は、例えば、ディスプレイ装置である。
 また、記憶装置903には、OS(Operating System)も記憶されている。
 そして、OSの少なくとも一部がプロセッサ901により実行される。
 プロセッサ901はOSの少なくとも一部を実行しながら、計算資源情報取得部110、機能モデル取得部120、機能モデル取得部120、処理分割部130、パラメータ抽出部140、性能計算基本式選択部150及び性能見積り部160の機能を実現するプログラムを実行する。
 プロセッサ901がOSを実行することで、タスク管理、メモリ管理、ファイル管理、通信制御等が行われる。
 また、計算資源情報取得部110、機能モデル取得部120、機能モデル取得部120、処理分割部130、パラメータ抽出部140、性能計算基本式選択部150及び性能見積り部160の処理の結果を示す情報、データ、信号値及び変数値の少なくともいずれかが、記憶装置903、プロセッサ901内のレジスタ及びキャッシュメモリの少なくともいずれかに記憶される。
 また、計算資源情報取得部110、機能モデル取得部120、処理分割部130、パラメータ抽出部140、性能計算基本式選択部150及び性能見積り部160の機能を実現するプログラムは、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ブルーレイ(登録商標)ディスク、DVD等の可搬記憶媒体に記憶されてもよい。
 また、計算資源情報取得部110、機能モデル取得部120、機能モデル取得部120、処理分割部130、パラメータ抽出部140、性能計算基本式選択部150及び性能見積り部160の「部」を、「回路」又は「工程」又は「手順」又は「処理」に読み替えてもよい。
 また、性能見積り装置100は、ロジックIC(Integrated Circuit)、GA(Gate Array)、ASIC(Application Specific Integrated Circuit)、FPGA(Field-Programmable Gate Array)といった電子回路により実現されてもよい。
 この場合は、計算資源情報取得部110、機能モデル取得部120、機能モデル取得部120、処理分割部130、パラメータ抽出部140、性能計算基本式選択部150及び性能見積り部160は、それぞれ電子回路の一部として実現される。
 なお、プロセッサ及び上記の電子回路を総称してプロセッシングサーキットリーともいう。
 100 性能見積り装置、110 計算資源情報取得部、120 機能モデル取得部、130 処理分割部、140 パラメータ抽出部、150 性能計算基本式選択部、160 性能見積り部、170 計算資源データベース、200 計算資源情報、210 機能モデル、300 性能見積値、901 プロセッサ、902 メモリ、903 記憶装置、904 入力装置、905 出力装置。

Claims (8)

  1.  1つ以上のループ処理が含まれるプログラムから前記1つ以上のループ処理の各々を抽出するループ抽出部と、
     前記ループ抽出部により抽出された各ループ処理の特性を判定する特性判定部と、
     処理時間を計算するための複数の処理時間計算手順の中から、ループ処理ごとに、各ループ処理の処理時間を計算するための処理時間計算手順を、前記特性判定部により判定された各ループ処理の特性と、前記プログラムを実行する計算資源のアーキテクチャとに基づき選択する計算手順選択部と、
     前記計算手順選択部により選択された、対応する処理時間計算手順を用いて、各ループ処理の処理時間を計算する処理時間計算部とを有する情報処理装置。
  2.  前記計算手順選択部は、
     メモリアクセス遅延時間を計算するための複数のメモリアクセス遅延時間計算手順の中から、ループ処理ごとに、各ループ処理でのメモリアクセス遅延時間を計算するためのメモリアクセス遅延時間計算手順を、前記プログラムを実行する計算資源のアーキテクチャに基づき選択し、
     前記処理時間計算部は、
     前記計算手順選択部により選択された、対応するメモリアクセス遅延時間計算手順を用いて、各ループ処理でのメモリアクセス遅延時間を計算し、
     計算により得られたメモリアクセス遅延時間を、対応する処理時間計算手順に適用して、各ループ処理の処理時間を計算する請求項1に記載の情報処理装置。
  3.  前記処理時間計算部は、
     各ループ処理で行われる演算の種別と演算数とに基づき、各ループ処理での演算時間を計算し、
     計算により得られた演算時間を、対応する処理時間計算手順に適用して、各ループ処理の処理時間を計算する請求項1に記載の情報処理装置。
  4.  前記複数の処理時間計算手順の各々には、適用対象のループ処理の特性と適用対象の計算資源のアーキテクチャとが定義されており、
     前記計算手順選択部は、
     各ループ処理の特性と前記プログラムを実行する計算資源のアーキテクチャと、各処理時間計算手順に定義されている適用対象のループ処理の特性と適用対象の計算資源のアーキテクチャとを比較して、ループ処理ごとに、各ループ処理の処理時間を計算するための処理時間計算手順を選択する請求項1に記載の情報処理装置。
  5.  前記特性判定部は、
     ループ処理の特性として、ループ処理のイタレーション間のデータ依存の有無、ループ処理に含まれる分岐処理の数、及びループ処理の縮約演算化の可否のうちの少なくともいずれかを判定する請求項1に記載の情報処理装置。
  6.  前記処理時間計算部は、
     各ループ処理の処理時間から、前記プログラムの処理時間を得る請求項1に記載の情報処理装置。
  7.  コンピュータが、1つ以上のループ処理が含まれるプログラムから前記1つ以上のループ処理の各々を抽出し、
     前記コンピュータが、各ループ処理の特性を判定し、
     前記コンピュータが、処理時間を計算するための複数の処理時間計算手順の中から、ループ処理ごとに、各ループ処理の処理時間を計算するための処理時間計算手順を、各ループ処理の特性と、前記プログラムを実行する計算資源のアーキテクチャとに基づき選択し、
     前記コンピュータが、対応する処理時間計算手順を用いて、各ループ処理の処理時間を計算する情報処理方法。
  8.  1つ以上のループ処理が含まれるプログラムから前記1つ以上のループ処理の各々を抽出するループ抽出処理と、
     前記ループ抽出処理により抽出された各ループ処理の特性を判定する特性判定処理と、
     処理時間を計算するための複数の処理時間計算手順の中から、ループ処理ごとに、各ループ処理の処理時間を計算するための処理時間計算手順を、前記特性判定処理により判定された各ループ処理の特性と、前記プログラムを実行する計算資源のアーキテクチャとに基づき選択する計算手順選択処理と、
     前記計算手順選択処理により選択された、対応する処理時間計算手順を用いて、各ループ処理の処理時間を計算する処理時間計算処理とをコンピュータに実行させる情報処理プログラム。
PCT/JP2017/006220 2017-02-20 2017-02-20 情報処理装置、情報処理方法及び情報処理プログラム WO2018150588A1 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
US16/471,925 US20190384687A1 (en) 2017-02-20 2017-02-20 Information processing device, information processing method, and computer readable medium
PCT/JP2017/006220 WO2018150588A1 (ja) 2017-02-20 2017-02-20 情報処理装置、情報処理方法及び情報処理プログラム
JP2019500167A JP6548848B2 (ja) 2017-02-20 2017-02-20 情報処理装置、情報処理方法及び情報処理プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2017/006220 WO2018150588A1 (ja) 2017-02-20 2017-02-20 情報処理装置、情報処理方法及び情報処理プログラム

Publications (1)

Publication Number Publication Date
WO2018150588A1 true WO2018150588A1 (ja) 2018-08-23

Family

ID=63169754

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2017/006220 WO2018150588A1 (ja) 2017-02-20 2017-02-20 情報処理装置、情報処理方法及び情報処理プログラム

Country Status (3)

Country Link
US (1) US20190384687A1 (ja)
JP (1) JP6548848B2 (ja)
WO (1) WO2018150588A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2020064455A (ja) * 2018-10-17 2020-04-23 Kddi株式会社 計算量評価装置、計算量評価方法及び計算量評価プログラム

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH1091416A (ja) * 1996-09-18 1998-04-10 Nec Software Ltd 原始プログラム表示システム
JP2002229818A (ja) * 2001-02-01 2002-08-16 Hitachi Ltd プログラム実行時間解析方法およびその装置
JP2016212667A (ja) * 2015-05-11 2016-12-15 富士通株式会社 性能見積方法、性能見積プログラム、及び性能見積装置

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06139065A (ja) * 1992-10-29 1994-05-20 Hokuriku Nippon Denki Software Kk プログラム性能見積もり装置
JPH07271572A (ja) * 1994-03-30 1995-10-20 Hitachi Software Eng Co Ltd 動的ステップ数計算式の生成方法
JP4842783B2 (ja) * 2006-11-30 2011-12-21 三菱電機株式会社 情報処理装置及び情報処理方法及びプログラム

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH1091416A (ja) * 1996-09-18 1998-04-10 Nec Software Ltd 原始プログラム表示システム
JP2002229818A (ja) * 2001-02-01 2002-08-16 Hitachi Ltd プログラム実行時間解析方法およびその装置
JP2016212667A (ja) * 2015-05-11 2016-12-15 富士通株式会社 性能見積方法、性能見積プログラム、及び性能見積装置

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2020064455A (ja) * 2018-10-17 2020-04-23 Kddi株式会社 計算量評価装置、計算量評価方法及び計算量評価プログラム
JP7003025B2 (ja) 2018-10-17 2022-01-20 Kddi株式会社 計算量評価装置、計算量評価方法及び計算量評価プログラム

Also Published As

Publication number Publication date
US20190384687A1 (en) 2019-12-19
JPWO2018150588A1 (ja) 2019-06-27
JP6548848B2 (ja) 2019-07-24

Similar Documents

Publication Publication Date Title
US10089426B2 (en) Logic circuit generation device and method
US20200225921A1 (en) Lookup table optimization for programming languages that target synchronous digital circuits
US10430191B2 (en) Methods and apparatus to compile instructions for a vector of instruction pointers processor architecture to enable speculative execution and avoid data corruption
US10423733B1 (en) Systems and methods for sharing resources having different data types
US20160124713A1 (en) Fast, energy-efficient exponential computations in simd architectures
US20130318540A1 (en) Data flow graph processing device, data flow graph processing method, and data flow graph processing program
KR20210112330A (ko) 스레드 실행 순서를 유지하는 동기식 디지털 회로를 생성하는 언어 및 컴파일러
US10936769B2 (en) Systems and methods for measuring error in terms of unit in last place
US10437949B1 (en) Scheduling events in hardware design language simulation
US20090049417A1 (en) Method of designing a circuit for optimizing output bit length and integrated circuit therefor
US20220358269A1 (en) Simulation execution system, simulation execution method, and computer readable medium
US20200012250A1 (en) Program editing device, program editing method, and computer readable medium
US9182960B2 (en) Loop distribution detection program and loop distribution detection method
US9658938B2 (en) Iterative test generation based on data source analysis
KR101862981B1 (ko) 명령어 기반 카운터를 통한 성능 및 전력량 예측 시스템 및 방법
WO2018150588A1 (ja) 情報処理装置、情報処理方法及び情報処理プログラム
JP2011253253A (ja) コンピュータ試験方法、コンピュータ試験装置およびコンピュータ試験プログラム
JP6567215B2 (ja) アーキテクチャ選定装置、アーキテクチャ選定方法およびアーキテクチャ選定プログラム
US20210326130A1 (en) Scale calculation apparatus and computer readable medium
US8843862B2 (en) Method and apparatus for creating and changing logic representations in a logic design using arithmetic flexibility of numeric formats for data
US20200004503A1 (en) Information processing device, information processing method, and computer readable medium
US9830174B2 (en) Dynamic host code generation from architecture description for fast simulation
WO2018163387A1 (ja) 解析装置、解析方法及び解析プログラム
JP6266183B2 (ja) 回路設計支援装置および回路設計支援プログラム
JP2019191796A (ja) 高位合成方法、高位合成プログラム、高位合成装置

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 17897133

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2019500167

Country of ref document: JP

Kind code of ref document: A

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 17897133

Country of ref document: EP

Kind code of ref document: A1