摘要:
In a compiling method, whether a variable (induction variable)recurrsively defined during loop iteration is included in an iteratively executed loop portion of a source program is detected. If such a variable is detected, a computation program portion for calculating a value of the variable which the variable should have during loop iteration of an arbitrary loop iteration number is generated. A plurality of parallely executable object program portions each for executing one of a plurality of processing to be executed during loop iteration of a respective loop iteration number of the loop portion is generated. Each of the object program portions includes a portion for executing the generated computation program portion for a respective loop iteration number to calculate a value of the variable for that loop iteration number.
摘要:
In a method of generating an object program for a multiprocessor system from a source program including a loop, there is detected a variable in the loop. For the detected variable, first codes providing a one-dimensional work array are added to the source program. The work array has elements whose the number is predetermined according to a maximum number of parallel processes to be generated for the loop and is shared among the parallel processes. It is determined whether or not the variable is used outside the loop. When it is determined that the variable is not used at any position outside the loop, the source program with the first codes added is compiled to produce the object program, thereby executing the loop in a parallel fashion by the parallel processes using the elements of the work array as a local variable associated with the variable.
摘要:
Vectorization is enabled in a source program having a conditional branch in a loop in which a sequence of definition and reference of data is disordered by the vectorization. A statement reordering part having a conditional statement moving part, and a loop splitting part are provided in an automatic vectorization processing part of a compiler. The statement reordering part reorders the statements by moving the statements in the source grogram to any desired position so that the sequence of definition and reference of data is converted to the vector instructions. If the statement to be moved is a conditional one, the associated condition statement is also copied and moved together with it. The loop splitting part splits the source program loop into a vector loop and a scaler loop when the loop in the source program contains both statements which can be vectorized and statements which can not be vectorized. If a split point is under a condition statement, the condition statement is copied into the scaler loop and the vector loop. As a result, the execution condition for the statements does not change before and after the loop split. In this manner, the portion which can not be vectorized is minimized for the loop which contains the conditional branch.
摘要:
In a parallel computer, a method for controlling a debugging process includes the steps of registering identifiers of plural processors into an execution waiting queue in a predetermined order; executing a corresponding program by each of the processors in an order until it is brought into either a waiting state or an end state; registering the identifier of the processor of the waiting state as a last element of the execution waiting queue; and repeating the executing step until there are no executable processors. A program having a bug is determined from the identifiers left in the execution waiting queue. Further, the debugging-process control method further includes outputting trace data during execution of the executing step, the program having the bug is determined from this trace data.
摘要:
In order to make parallel processing of a serial execution type user program automatically and at a high speed without re-coding, an object code is parallelized by detection of the possibility of parallel execution in an iteration unit of a loop, detection of the possibility of parallel execution of each statement in the loop, the interchange of an outer loop by an inner loop of a multiple loop, reduction of the multiple loop to a single loop, inclined coversion for making parallel execution along a wave front plane (line) when sufficient multiplicity is not derived, and the program which is estimated to have the shortest processing time is selected from the granularity, and multiplicity of the object code, the variance of the number of instructions and the proportion of synchronization control at the time of parallelization of the object code.
摘要:
A compiling method is provided for vectorizing outer sides of multiple loops which are not tight. The method detects variables which are defined in one loop and referenced by another. The information, mapped into a dependence graph, is used to analyze the data dependency of each loop level and expand the source program. The value of the variable is substituted for an appropriate element of the array and the value of the appropriate element of the array is substituted for an original variable. The compiler inserts control statements to assure initial values and end values for the loops are preserved minimizing the size of the working arrays, and vectorizing multiple loops for each loop level.
摘要:
A compiler for generating from a serially processed type source program described in a high level language the object codes to be executed in parallel by a parallel processor system which is composed of a plurality of processors marked with respective identification numbers and in which inter-processor data transfer system for identifying data for transfer by data identifiers is adopted. The serially executed source program is first translated to programs to be executed in parallel. The inter-processor data transfer processing is extracted from the flow of processings involved in executing the programs for parallel execution resulting from the above-mentioned translation, and all the interprocessor data transfer processings are attached with data identifiers such that no overlap takes place.
摘要:
In order to generate a source program or an object code which can be executed in parallel efficiency by detecting an independent operation of a large grain size from a program which can not be analyzed by the compiler, a parallelization supporting tool inputs a result of an output of the interprocedural analyzer 120 and the source program. A program of intermediate language is produced by the parse and the program of information of common and dummy argument variables is reflected into the program of intermediate language by the interprocedural variable information read processing. After a control flow analysis and a dataflow analysis have been carried out, dependency unknown variables are extracted and parallelizability conditions are produced. Based on the result of the produced conditions, questions and answers are made with the user or a condition statement is inserted into the source program to execute the program and a decision of parallelizability is made. A source program or a parallelized object program which has been corrected in accordance with a user's request is also produced.
摘要:
A method for converting a source program having a loop including a control statement into an object program including the steps of detecting from the statements of a first loop of a source program a control statement (an inductive control statement) having a control expression; detecting based on the control expression a turning form indicating whether a change of a turning number representing a loop iteration count indicates changes from values for a successful branch to values for an unsuccessful branch or vice versa and a turning point type indicating whether the turning number is an initial iteration count, a final iteration count, or an intermediate iteration count of the first loop; generating a string of statements having a loop not including the control statement and generating an execution result identical to an execution result of the first loop based on the first loop, the turning number, the turning form and the turning point type detected on the control statement; and converting the generated string of statements into an object code.