Technical Field
[0001] This invention relates to a compiling method for parallel processing program which
generates execution codes of a program prepared by using program language for allowing
a plurality of arithmetic processors to carry out image processing in parallel, an
image processing apparatus for carrying out image processing by parallel processing
of a plurality of operations, and an image processing method for allowing the image
processing apparatus to be operative.
Background Art
[0002] Generally, in the parallel processing system, in distributing procedure (processing)
defined by user to a plurality of processors to allow them to carry out parallel processing,
the program developer carries out description and preparation of program so as to
carry out these distributed procedures every respective processors.
[0003] When the procedure defined by user is assumed to be load in the parallel processing
system, the program developer prepares source program so that distribution of load
with respect to respective processors is suitably carried out in advance in a parallel
processing system as described above.
[0004] Accordingly, the program developer must describe source program so that load to individual
processors is intentionally distributed in order to realize the processing of high
efficiency.
[0005] However, in the preparation of the program, the work in which distribution of load
to individual processors is caused to be conscious would be forced on the program
developer by the number of processors to which load is distributed. This heavily makes
the burden on the program developer.
[0006] In the image processing using such a parallel processing system, in the case where
picture division processing is carried out, there are instances where the number of
small areas obtained by division is greater than the number of processors and the
number of small areas cannot be divided (is indivisible) by the number of processors,
so there results remainder area, i.e., fraction area in picture. When such fraction
area takes place, any one of the processors would be caused to carry out fraction
processing with respect to the fraction area.
[0007] Moreover, in the case where load is distributed, when processing for integrally performing
operation of results of image processing in small areas obtained by dividing a picture
is imposed on a portion of processors, the portion of the processors is required to
have two kinds of execution codes of execution code for arithmetic processing with
respect to the small areas and the above-described integration processing execution
code for integrally performing operation. Because preparation of such a program causes
the program developer to carry out preparation of program in which the above-mentioned
integration processing is caused to be conscious as well, the burden is heavier than
the burden described above.
[0008] Further, two kinds of execution codes are delivered to the processor, whereby the
execution code quantity with respect to the processor would increase to more degree
as compared to the execution code quantity for arithmetic processing with respect
to the small areas. In addition, such integration processing is supplemented, whereby
the capacity of memory used is spent substantially twice.
[0009] This invention has been made in view of actual circumstances as described above,
and its object is to provide a compiling method for parallel processing program which
can suppress increase in execution codes to be generated without making heavy burden
on the program developer.
[0010] Another object of this invention is to provide an image processing apparatus and
an image processing method adapted for generating execution codes in dependency upon,
e.g., application program used, etc., thus making it possible to carry out image processing
of which efficiency is higher than that of the prior art.
Disclosure of the Invention
[0011] With a view to solving the above-described problems, a compiling method for parallel
processing program according to this invention is directed to a compiling method for
parallel processing program, which compiles program prepared by using program language
for allowing a plurality of arithmetic processors to carry out, in parallel, image
processing to generate execution codes, the method comprising: an analysis step of
carrying out identification and analysis of control statement to which identifier
indicating parallel processing in the image processing is attached from the prepared
program; and an execution code generating step of generating execution codes of parallel
processing to respective arithmetic processors corresponding to analysis result by
the analysis step and the number of the plural arithmetic processors.
[0012] Moreover, an image processing method according to this invention is directed to an
image processing method for carrying out image processing in accordance with execution
codes of program prepared by using program language which allows a plurality of arithmetic
processors to carry out image processing in parallel, the method comprising: an analysis
step of carrying out identification and analysis of control statement to which identifier
indicating parallel processing in the image processing is attached from the prepared
program; an execution code generating step of generating execution codes of parallel
processing to respective arithmetic processors corresponding to analysis result by
the analysis step and the number of the plurality of arithmetic processors; and an
image processing step in which the arithmetic processors respectively carry out image
processing on the basis of the prepared execution codes.
[0013] In addition, an image processing apparatus according to this invention is directed
to an image processing apparatus adapted for carrying out image processing by parallel
processing of a plurality of operations, the apparatus comprising: a plurality of
arithmetic means for respectively carrying out, in parallel, operations of image processing
with respect to respective small areas obtained by dividing a picture of an inputted
picture signal; and data supply control means for carrying out integral operation
on the basis of respective operation results from the arithmetic means.
Brief Description of the Drawings
[0014] Fig. 1 is a block diagram showing outline of the configuration of an image processing
apparatus according to this invention.
[0015] Fig. 2 is a main flowchart for explaining outline of the operation of the image processing
apparatus.
[0016] Fig. 3 is a flowchart for explaining processing procedure of the subroutine 1 in
the main flowchart.
[0017] Fig. 4 is a model view for explaining the relationship between picture configuration
of the image processing apparatus and small divided areas and way of movement of the
small divided area.
[0018] Fig. 5 is a flowchart for explaining processing procedure of the subroutine 2 in
the main flowchart.
[0019] Fig. 6 is a model view showing an example of a picture in the case where picture
parallel processing flag is raised (set) in the subroutine 2.
[0020] Fig. 7 is a flowchart for explaining processing procedure of the subroutine 3 in
the main flowchart.
Best Mode for Carrying Out the Invention
[0021] Embodiments of a compiling method for parallel processing program, an image processing
apparatus, and an image processing method according to this invention will now be
described with reference to the attached drawings.
[0022] The compiling method for parallel processing program of this invention is a method
comprising: analyzing a prepared program at an analysis step; discriminating, at an
execution code generating step, between program of arithmetic processors and programs
except for the above on the basis of analysis result by the analysis step to generate
execution codes, thereby to generate execution codes of processors which play respective
roles.
[0023] In this embodiment, an example of an image processing apparatus (unit) to which the
above-mentioned method is applied will be described.
[0024] The image processing unit comprises, as shown in Fig. 1, for example, a unit control
section 1 for controlling the entirety, a data flow control section 2 for controlling
flow of data, an arithmetic section 3 having a plurality of arithmetic processors,
a program buffer 4, and an input/output section 5.
[0025] The unit control section 1 controls the program buffer 4 to load program corresponding
to the data flow control section 2 and the arithmetic section 3 on the program buffer
4 into program memory within the processor of the data flow control section 2 and
program memories within respective arithmetic processors of the arithmetic section
3 through a memory bus 6. Moreover, the unit control section 1 carries out execution
control of respective arithmetic processors of the data flow control section 2 and
the arithmetic section 3 and supply of clock thereto.
[0026] The data flow control section 2 carries out integral operation on the basis of respective
operation results from the arithmetic section 3, and distributes and delivers this
operation result to the arithmetic section 3 as occasion demands. Explanation will
now be given in more practical sense. The data flow control section 2 delivers a control
signal to a shared memory (not shown) within the input/output section 5. Thus, the
data flow control section 2 carries out a control to distribute data to distributed
memories (not shown) within respective arithmetic processors through a data bus 7
from the shared memory. Moreover, the data flow control section 2 carries out transmission
and reception of control signals with respect to respective arithmetic processors
of the arithmetic section 3 to collect, from the arithmetic processor in which arithmetic
processing with respect to the delivered data has been completed, the processing result.
Then, the data flow control section 2 carries out a control to deliver data of the
processing result to the shared memory within the input/output section 5 through the
data bus 7. The data flow control section 2 carries out a control to distribute the
next data through the data bus 7 from the shared memory with respect to the arithmetic
processor in which the arithmetic processing has been completed. In a manner stated
above, the data flow control section 2 repeats distribution and collection of data
to carry out a control until the program of the data flow control section 2 has been
completed.
[0027] As stated above, the image processing unit is such that parallel processing is implemented
to a delivered picture signal so that speed of image processing is caused to be higher.
Moreover, this image processing unit is adapted so that respective arithmetic processors
execute the same program with respect to a plurality of small areas obtained by dividing
picture data. Namely, the image processing unit includes a plurality of arithmetic
processors for executing the same program, and thus carries out parallel processing
of picture (pictorial image) at a high speed by architecture which divides a single
picture into small areas to carry out parallel processing.
[0028] Meanwhile, for the image processing, there is such an image processing which is not
closed within small areas divided so as to become in correspondence with the model
which satisfies this architecture. As such an image processing, there is the case
where, e.g., density mean value of all pictures is determined, or the like.
[0029] In the image processing unit, when load in the image processing is distributed to
a plurality of arithmetic processors to allow a portion of arithmetic processors to
carry out integration processing which collects results of respective image processing
of the load distribution, two kinds of execution codes of execution code of arithmetic
processor for processing of divided areas and execution code of arithmetic processor
for integration processing are required for the arithmetic section 3. The execution
codes generated in this way do not become model which satisfies the above-described
architecture, and quantity of execution codes generated is increased.
[0030] In view of the above, the image processing unit to which this invention is applied
allows respective arithmetic processors of the arithmetic section 3 to execute shared
program on the basis of model which satisfies the architecture to draw up respective
arithmetic results at the data flow control section 2 to carry out integration processing
to further carry out a processing to deliver this integration processing result to
respective arithmetic processors of the arithmetic section 3 to allow them to perform
operation, etc.
[0031] Meanwhile, in the case where the number of pictures to be processed is great, there
has been also proposed a method of allocating pictures to respective arithmetic processors
one by one. In the case where the number of pictures to be processed is divisible
by the number of arithmetic processors, there is no arithmetic processor running idle
during parallel processing, thus making it possible to enhance the degree of parallel
processing so that it becomes maximum. Moreover, it also becomes unnecessary to carry
out communication between the data flow control section 2 and the arithmetic processors
of the arithmetic section 3, which was required in the previously described picture
division processing. For this reason, in the case where the number of pictures to
be processed is divisible by the number of arithmetic processors, processing speed
of the picture parallel processing allocated to respective arithmetic processors by
one picture is higher.
[0032] However, in the configuration of the image processing unit and the quantitative relationship
of picture signal, there are instances where when the number of pictures of a picture
signal inputted thereto is divided by the number of arithmetic processors of the arithmetic
section 3, the above-mentioned number of pictures cannot be divided by the number
of the arithmetic processors, so any remainder takes place.
[0033] When there results the state where such a relationship holds, there are instances
where, in the image processing unit, the parallelism (degree of parallel processing)
is extremely lowered, so efficiency of the image processing is remarkably lowered.
[0034] As a more practical example, let now consider the case where pictures (pictorial
images) of 17 frames are processed in the configuration where the arithmetic section
3 has, e.g., 16 arithmetic processors. In the arithmetic section 3, in processing
the seventeenth frame, only one arithmetic processor becomes operative, and 15 arithmetic
processors are inoperative. For this reason, these arithmetic processors would be
idle. As a result, efficiency of image processing would be lowered.
[0035] In view of the above, this image processing unit has processing modes in connection
with both the case where one picture is divided into small areas to allow arithmetic
processors to be operative every these small areas, which is in conformity with the
model that satisfies the above-described architecture, and the case where pictures
are allocated to respective arithmetic processors by one picture to allow them to
be operative, which is not in conformity with the model that satisfies the architecture.
[0036] Respective processing with respect to different cases are carried out by a host computer
10 which carries out compiling as shown in Fig. 1, for example. Moreover, the host
computer 10 also carries out processing with respect to different cases of compiling
for carrying out picture division processing including integration processing based
on the model of the above-described architecture and compiling for allocating processing
every respective pictures to arithmetic processors to thereby realize processing efficiency
higher than that of the prior art.
[0037] Explanation will now be given in connection with an image processing method for allowing
the above-mentioned image processing unit to carry out high speed image processing
by parallel processing with reference to the flowcharts of Figs. 2, 3 and 5, and in
connection with pixels that the image processing unit processes and the block configuration
thereof with reference to Fig. 4. As described above, execution codes of parallel
processing program delivered to the image processing unit after undergone compiling
are generated by host computer 10 provided at the outside of the image processing
unit.
[0038] The host computer 10 starts compiling of parallel processing program as shown in
Fig. 2, for example. Thus, the processing operation proceeds to subroutine SUB1.
[0039] At this subroutine SUB1, the host computer 10 carries out identification and analysis
of control statement to which there is attached identifier indicating parallel processing
in source program of image processing in which procedure of parallel processing program
is described. Thus, the processing operation proceeds to subroutine SUB2.
[0040] Then, at the subroutine SUB2, the host computer 10 carries out processing discrimination
as to whether the image processing is carried out by the picture division processing
or is carried out by the picture parallel processing from the relationship between
the number of pictures subjected to image processing and the number of a plurality
of arithmetic processors of the arithmetic section 3 and analysis result of the subroutine
SUB1. Thus, the processing operation proceeds to subroutine SUB3.
[0041] At the subroutine SUB3, the host computer 10 carries out generation of execution
codes on the basis of the result of the subroutine SUB2.
[0042] The host computer 10 carries out processing in order of these three subroutines SUB1
to SUB3 to thereby complete compiling of the parallel processing program. Thus, the
processing operation proceeds to step S1.
[0043] At the step S1, the host computer 10 delivers execution codes compiled at the subroutines
SUB1 to SUB3 to the unit control section 1 of the image processing unit. Then, the
unit control section 1 once (temporarily) stores execution codes from the host computer
10 into the program buffer 4 thereafter to carry out a control to allow execution
codes of a program corresponding to the data flow control section 2 and the arithmetic
section 3 on the program buffer 4 to be loaded into program memories within the processor
of the data flow control section 2 and respective arithmetic processors of the arithmetic
section 3 through the memory bus 6.
[0044] At step S2, respective arithmetic processors of the arithmetic section 3 processes
two-dimensional data delivered through the input/output section 5 in units of small
areas obtained by dividing one picture, or in one frame units in dependency upon execution
codes, and the arithmetic processor of the data flow control section 2 carries out
supply/collection of data and/or integration processing of operation results of the
arithmetic section 3 in accordance with the execution codes. By such a series of arithmetic
processing, image processing is executed at a high speed.
[0045] Further, the procedure of the above-described subroutines SUB1 to SUB3 will be described
below.
[0046] In this example, in source program of the parallel processing program, language in
conformity with so called C language which is one of high-level languages is used.
[0047] At the subroutine SUB1, analysis is conducted by the prepared source program as to
whether or not there is, within "function", integral arithmetic processing, which
is one arithmetic processing, such that operation results carried out in plural small
areas by using divided two-dimensional data are used to carry out integral operation,
and whether or not there is distribution processing such that the above-mentioned
integral operation result is distributed to respective arithmetic processors, etc.
[0048] In more practical sense, at step S10 of the flowchart shown in Fig. 3, the host computer
10 carries out analysis of, e.g., CONFIGURATION FILE (hereinafter simply referred
to as CONFIG. FILE) for image processing unit. In the CONFIG. FILE, e.g., information
such as No. of arithmetic processors assembled in the arithmetic section 3 in the
image processing unit is described as header information. Then, the total number of
arithmetic processors that the image processing unit applied has is examined by using
such information.
[0049] Then, at step S11, the host computer 10 carries out analysis of source program of
parallel processing program.
[0050] In the language for describing source code of parallel processing program, there
are used vfor and hfor for new parallel processing in which "v" and "h" which are
identifier serving as key word which gives motivation for carrying out parallel processing
in the image processing and respectively signify repetition in a vertical direction
and repetition in a horizontal direction are added before, e.g., for statement of
the C language indicating repetitive processing. Parameters within the parentheses
of the vfor statement and the hfor statement are the same as those of the for statement
of the C language.
[0051] Similarly, parameters (variables) Vinit and Hinit for new parallel processing relating
to small areas obtained by dividing a picture are respectively parameters indicating
coordinates in vertical direction and in horizontal direction at left upper position
of the small area.
[0052] As an example of source program, e.g., format example described below will now be
studied.


Parameters within the parentheses of the vfor statement and the hfor statement
of the source program, i.e., Vinit=0; Vinit< 512 and Hinit=0; Hinit<768 represent
as shown in Fig. 4(a) that picture consists of 512x768 pixels. Vinit+=8 and Hinit+=8
represent that small areas obtained by dividing the picture consist of block of size
of 8x8 pixels. Moreover, Vinit=0 and Hinit=0 represent as shown in Fig. 4(b) that
read processing or write processing from/into small areas is first carried out from
the left upper toward the right end of the picture by the hfor statement, and read
processing or write processing from/into small area at the left end position corresponding
to the next line is then carried out by the vfor statement.
[0053] For read or write processing of the small area, read statement and write statement
are used. The first argument x of the read statement and the write statement is buffer
(arrangement) name for storing small area, the second argument is size designation
in a horizontal direction, and the third argument is size designation in a vertical
direction.
[0054] When attention is drawn to the vfor statement of the statements (1-1-1), (1-2-1),
the hfor statement of the statements (1-1-2), (1-2-2), the read statement of the statements
(1-1-3), (1-2-3), and the write statement of the statements (1-1-5), (1-2-5), the
host computer 10 can recognize, at step S11, parameters of the small area necessary
for generation of execution codes of the data flow control section 2 by analysis of
the source program. Namely, the host computer 10 can recognize, by analysis of the
source program, sizes in horizontal/vertical directions, the initial position and
way of movement of one small area. Namely, the total number of small areas to be processed
of the entirety of the picture can be seen from the vfor statement and the hfor statement.
[0055] Then, at step S12, the host computer 10 prepares information table of the data flow
control section 2 on the basis of analysis result at the step S11. Thus, the processing
operation proceeds to step S13.
[0056] At the step S13, the host computer 10 prepares information table relating to processing
of the arithmetic processor within the source program. Information table relating
to the processing of the arithmetic processor is a table in which information obtained
by analyzing, e.g., source program encompassed by key word of syntax of vfor of the
statement (1-2-1) or hfor of the statement (1-2-1), etc. in the source program with
respect to processing for respective small areas are collected.
[0057] Then, at step S14, the host computer 10 takes out information of the first arithmetic
block. Namely, the host computer 10 reads there into information indicating arithmetic
processing carried out, with respect to small areas, by arithmetic processor for,
e.g., the statement (1-1-4) between the read statement of the statement (1-1-3) and
the write statement of the statement (1-1-5), or the statement (1-2-4) between the
read statement of the statement (1-2-3) and the write statement of the statement (1-2-5).
Here, the arithmetic block is a block which is encompassed by vfor and hfor and describes
operation content that the arithmetic processors carry out.
[0058] Then, at step S15, the host computer 10 examines whether or not the calculation formula
for carrying out the integration processing is included in the arithmetic block which
has been read in at the step S14. In the case where there is no calculation formula,
such as, for example, the statement (1-1-6) to carry out integration processing with
respect to the image processing of the small area (No), the processing operation proceeds
to step S17. On the other hand, in the case where there is a calculation formula,
such as, for example, the statement (1-1-6) (Yes), the processing operation proceeds
to step S16.
[0059] At the step S16, the host computer 10 raises, e.g., integration flag (sets "1") so
as to allow the arithmetic processor within the data flow control section 2 to perform
operation relating to the calculation formula. Thus, the processing operation proceeds
to step S17.
[0060] It is to be noted that, at step 15, the host computer 10 can also examine presence
or absence of distribution of result of integral operation. Namely, in the case where
there is no calculation formula, such as, for example, the statement (1-2-4) (No),
the processing operation by the host computer 10 proceeds to step S17. On the other
hand, in the case where there is a calculation formula such as the statement (1-2-4)
(Yes), the processing operation by the host computer 10 may proceed to the step S16
to raise (set) distribution flag at the step S16 to proceed to step S17.
[0061] At the step S17, the host computer 10 examines whether or not fraction is produced
in allowing respective arithmetic processors to correspond to small areas of the picture.
Namely, this fraction indicates remainder obtained when the total number of small
areas in dividing the picture into small areas cannot be divided by the total number
of arithmetic processors. As a matter of course, the number of fraction of the small
area means that it is less than the number of arithmetic processors.
[0062] Then, the processing operation by the host computer 10 proceeds to step S18 when
the fraction exists (Yes), and proceeds to step S19 when no fraction exists (No).
[0063] At the step S18, the host computer 10 sets fraction flag. Thus, the processing operation
proceeds to step S19.
[0064] At the step S19, the host computer 10 judges whether or not analysis processing with
respect to all arithmetic blocks has been completed. When the analysis processing
with respect to all arithmetic blocks has not been completed (No), the processing
operation proceeds to step S19N.
[0065] At the step S19N, the host computer 10 reads thereinto information of the next arithmetic
block to continue analysis. Namely, after the host computer 10 reads thereinto information
of the next arithmetic block, the processing operation proceeds to step S15. On the
other hand, when analysis processing with respect to all arithmetic blocks has been
completed (Yes) at the step S19, the processing operation by the computer 10 proceeds
to return to complete this subroutine SUB1.
[0066] Explanation will now be given in connection with parallel processing relating to
processing program including integration processing with respect to, e.g., four pictures
indicated below. This processing program has, e.g., an example of format described
below.


In this processing program, there is indicated the case where when, e.g., four
arithmetic processors exist at the arithmetic section 3, image processing is carried
out with respect to four pictures each comprised of 512x768 pixels as shown in Fig.
6, for example. In the case of such operation where all pictures are used as unit,
there are instances where image processing to determine, e.g., density mean of all
the pictures, etc. is carried out. In order to carry out such image processing on
the basis of the model corresponding to the previously described architecture, the
host computer 10 carries out, at subroutine SUB 2, discrimination between picture
division processing including integration processing analyzed at the subroutine SUB
1 and picture parallel processing to carry out, in parallel, operation of picture
(pictorial image) by corresponding processors every one frame unit.
[0067] For example, as shown in Fig. 5, at step S20 of the flowchart of the subroutine SUB2,
the host computer 10 takes out information of the first arithmetic block. Thus, the
processing operation proceeds to step S21.
[0068] At the step S21, the host computer 10 carries out, by presence or absence of integration
processing flag, discrimination as to whether or not there is the integration processing.
When there is an integration processing as indicated by the statement (2-8), for example,
since the integration processing flag should be raised (Yes), the processing operation
by the host computer 10 proceeds to step S22. When there is no integration processing
(No), the processing operation proceeds to step S25.
[0069] At the step S22, the host computer 10 carries out discrimination as to whether or
not the number of pictures to be processed is equal to 1. When the number of pictures
to be processed is 1 (Yes), the processing operation by the host computer 10 proceeds
to the step S25. When the number of pictures to be processed is 2 or more (No), i.e.,
when a program as indicated by the statement (2-2) to the statement (2-5), for example,
the processing operation proceeds to step S23.
[0070] At the step S23, the host computer 10 carries out discrimination as to whether or
not the number of pictures to be processed can be divided by the number of arithmetic
processors of the arithmetic section 3. When the number of pictures to be processed
can be divided by the number of arithmetic processors (Yes), the processing operation
by the host computer 10 proceeds to step S24. When the number of pictures to be processed
cannot be divided by the number of arithmetic processors of the arithmetic section
3 (No), its processing operation proceeds to step S25.
[0071] At the step S24, the host computer 10 sets picture parallel processing flag. Thus,
the processing operation proceeds to the step S25.
[0072] At the step S25, the host computer 10 judges whether or not analysis with respect
to all arithmetic blocks has been completed. When the analysis of the arithmetic processing
method has not been completed with respect to all the arithmetic blocks (No), the
processing operation proceeds to step S26.
[0073] At the step S26, the host computer 10 reads thereinto information of the next arithmetic
block to continue analysis. Namely, after the host computer 10 reads thereinto information
of the next arithmetic block, the processing operation proceeds to step S22. On the
other hand, when analysis processing with respect to all arithmetic blocks has been
completed at the step S25 (Yes), the processing operation by the host computer 10
proceeds to return. Thus, the subroutine SUB2 is completed.
[0074] By carrying out discrimination between the picture parallel processing and the picture
division processing in this way, measure is taken such that model based on, e.g.,
the previously described architecture is not broken when execution code generation
at the subsequent subroutine SUB3 with respect to the program is carried out.
[0075] Compiling corresponding to the analysis result and the processing control of the
source program carried out in this way is carried out in accordance with the flowchart
of the subroutine SUB3 shown in Fig. 7.
[0076] Namely, at the step S30, the host computer 10 carries out discrimination as to whether
or not source program delivered for implementation of compiling is program for data
flow control section 2. In the case where the source program is program for data flow
control section 2 (Yes), the processing operation by the host computer 10 proceeds
to step S31. In the case where the source program is not program for data flow control
section 2 (No), it is considered as program for arithmetic processor. Thus, the processing
operation proceeds to step S40.
[0077] At the step S31, the host computer 10 discriminates as to whether or not the picture
parallel processing flag is raised. When the picture parallel processing flag is raised
(Yes), the host computer 10 judges that it is indicated that the number of pictures
has been divisible by the number of arithmetic processors. Thus, the processing operation
proceeds to step S32. When the picture parallel processing flag is not raised (No),
the processing operation proceeds to step S33.
[0078] At the step S32, the host computer 10 delivers all data of one picture to corresponding
one arithmetic processor to generate execution codes of the data flow control section
2 which carries out, in parallel, image processing with respect to a plurality of
pictures. Thereafter, the processing operation proceeds to step S43. The processing
of this step is a processing for taking, e.g., density mean value of one picture,
or the like as more practical image processing. Thus, as execution codes generated
with respect to the data flow control section 2, e.g., such execution codes to send
data of one picture necessary for operation with respect to one arithmetic processor
of the arithmetic section 3 are generated.
[0079] At step S33, the host computer 10 carries out judgment as to whether or not integration
flag is raised. When the integration flag is not raised (No), the processing operation
proceeds to step S37. When the integration flag is raised (Yes), the processing operation
proceeds to step S34.
[0080] At the step S34, the host computer 10 carries out judgment as to whether or not fraction
flag is raised. When the fraction flag is raised (Yes), the processing operation proceeds
to step S35. When no fraction flag is raised (No), the processing operation proceeds
to step S36.
[0081] At the step S35, the host computer 10 generates execution codes of the data flow
control section 2 which carries out picture division processing including integration
processing and fraction processing. Thus, the processing operation proceeds to step
S43.
[0082] This picture division processing includes a processing for sending, as numeric values,
data such as result obtained by performing an operation of integral processing, or
the like to respective arithmetic processors of the arithmetic section 3 as occasion
demands, whereby the respective arithmetic processors perform an operation on the
basis of numeric values delivered thereto.
[0083] Namely, execution codes of the picture division processing are generated from a source
program adapted to repeatedly carry out a control such that the processor of the data
flow control section 2 reads out data of small areas corresponding to the number of
arithmetic processors of the arithmetic section 3 from the shared memory within the
input/output section 5 to deliver them into the distributed memories within respective
arithmetic processors to collect the respective proceeded data into the shared memory
within the input/output section 5 after operations of respective arithmetic processors
have been completed.
[0084] Moreover, execution code of fraction processing is an execution code such that the
number of processing repeatedly carried out with respect to picture data of the remainder
area is increased by one so as to include conditional statement to inhibit write access
with respect to the shared memory of the input/output section 5 of data processing
result from the portion above the total number of small areas. Namely, the fraction
processing means a processing such that the data flow control section 2 writes only
operation results with respect to all small areas into the shared memory of the input/output
section 5, and does not write operation results except for the above into the shared
memory of the input/output section 5.
[0085] Then, at step S36, the host computer 10 generates execution codes of the data flow
control section 2 which carries out picture division processing including integration
processing. Thus, the processing operation proceeds to step S43.
[0086] On the other hand, when the processing operation proceeds to step S37 by judgment
(No) of the step S33, the host computer 10 carries out, also at this step S37, similarly
to the step S34, judgment as to whether or not fraction flag is raised. When the fraction
flag is raised (Yes), the processing operation by the host computer 10 proceeds to
step S38. When no fraction flag is raised (No), the processing operation proceeds
to step S39.
[0087] At the step S38, the host computer 10 generates execution codes of the data flow
control section 2 which carries out picture division processing including fraction
processing. Thus, the processing procedure proceeds to step S43.
[0088] At the step S39, the host computer 10 generates, in an ordinary manner, execution
codes of the data flow control section 2. Thus, the processing operation proceeds
to the step S43.
[0089] On the other hand, at the step S40, the host computer 10 carries out judgment as
to whether or not integration processing flag is raised. When the integration processing
flag is raised (Yes), the processing operation by the host computer 10 proceeds to
step S41. When no integration processing flag is raised (No), the processing operation
proceeds to the step S42.
[0090] At the step S41, the host computer 10 generates execution codes of arithmetic processors
of the data flow control section 2 and the arithmetic section 3 including integration
processing. Thus, the processing operation proceeds to step S43.
[0091] At the step S42, the host computer 10 generates, in an ordinary manner, execution
codes of arithmetic processors of the arithmetic section 3. Thus, the processing operation
proceeds to the step S43.
[0092] At the step S43, the host computer 10 carries out judgment as to whether or not generation
of execution codes with respect to arithmetic processors of the data flow control
section 2 and the arithmetic section 3 corresponding to all arithmetic blocks has
been completed. When compiling has not yet been completed (No), the processing operation
by the host computer 10 returns to the step S30 to repeat the above-described procedure.
On the other hand, when compiling has been completed (Yes), the processing operation
by the host computer 10 proceeds to return thus to complete the subroutine SUB3 which
carries out this execution code generating processing.
[0093] As stated above, there is employed an approach to carry out switching of processing
in dependency upon the number of pictures delivered and the number of arithmetic processors
to carry out arithmetic processing of units of small areas or one frame in respective
arithmetic processors of the arithmetic section 3, and to carry out integral arithmetic
processing by the arithmetic processor of the data flow control section 2 to deliver,
as occasion demands, the integral arithmetic processing result to respective arithmetic
processors of the arithmetic section 3 to thereby permit respective arithmetic processors
to devote themselves to image processing with respect to the given area, thus making
it possible to limit the kind of execution codes generated by automatically selecting
a higher efficiency method to one without destroying the model which satisfies the
above-described architecture. Thus, generation quantity of execution codes generated
can be held down as minimum as possible, and optimization of program can be also carried
out.
[0094] Moreover, an approach is employed to detect identifier indicating parallel processing
in the source program to make distinction between processing of the data flow control
section 2 and that of the arithmetic section 3 on the basis of the identifier, and
to generate execution codes with respect to a plurality of arithmetic processors of
the arithmetic section 3 to thereby permit the program developer to write program
without being conscious of sharing of role to respective arithmetic processors, thus
making it possible to shorten time of program development. Thus, the development cost
can be held down.
[0095] Further, an approach is employed to carry out the above-described fraction processing
in correspondence with fraction (remainder) determined with respect to the number
of arithmetic processors of the number of divided small areas, thereby making it possible
to carry out efficient processing with the execution code quantity being held down
to much degree as compared to the conventional execution code quantity.
[0096] In the image processing method, an approach is employed to undergo procedure to collect
operation results at arithmetic processors of which roles are shared in dependency
upon the number of divided pictures to carry out integration processing thereof to
thereby permit generation quantity of execution codes in the image processing method
to be reduced to much degree so that efficiency of image processing can be increased.
Thus, development of short term can be made, and the development cost can be held
down.
[0097] Moreover, in the image processing method, an approach is employed to examine the
number of pictures to be processed and the number of arithmetic processors in accordance
with a processing executed, such as, for example, processing of density mean, etc.
to select a processing method to generate execution codes, thereby permitting processing
speed to be higher than that of the conventional image processing. Thus, e.g., also
in the application program, image processing is carried out without destroying the
model which satisfies architecture required as one of parallel processing, thus permitting
processing speed to be higher than that of the conventional image processing.
[0098] In addition, the image processing apparatus is adapted to carry out, at respective
arithmetic processors of the arithmetic section, arithmetic processing of data that
the data flow control section has delivered to carry out integral operation by using
operation results of respective arithmetic processors collected at the data flow control
section to distribute it for a second time to the respective arithmetic processors
as occasion demands to thereby allow respective arithmetic processors of the arithmetic
section to devote themselves to processing for calculation of given small areas to
implement image processing by parallel processing to delivered picture signals, thus
making it possible to carry out image processing higher than the prior art.
Industrial Applicability
[0099] In this invention, in compiling program prepared by using program language to allow
a plurality of arithmetic processors to carry out, in parallel, image processing to
generate execution codes, identification and analysis of control statement to which
identifier indicating parallel processing in the image processing is attached are
carried out from the prepared program, thus to generate execution codes of parallel
processing to respective arithmetic processors corresponding to the analysis result
and the number of plural arithmetic processors. Then, respective arithmetic processors
carry out image processing on the basis of the generated execution codes to allow
operation results of the respective arithmetic processors to undergo integration processing,
whereby the program developer can describe (write) program without being conscious
of sharing of role to respective processors. As a result, the development time of
program can be shortened. Thus, burden on the program developer can be lessened, so
the development cost can be held down to lower level.
1. A compiling method for parallel processing program, including compiling a program
prepared by using a program language for allowing a plurality of arithmetic processors
to carry out, in parallel, image processing thus to generate execution codes,
the method comprising:
an analysis step of carrying out identification and analysis of control statement
to which identifier indicating parallel processing in the image processing is attached
from the prepared program; and
an execution code generating step of generating execution codes of parallel processing
to the respective arithmetic processors corresponding to the analysis result by the
analysis step and the number of the plural arithmetic processors.
2. A compiling method for parallel processing program as set forth in claim 1,
wherein the plural arithmetic processors are such that picture data every small
areas obtained by dividing a picture are sequentially allocated thereto, and are operative
to perform the picture data parallel operation to repeat this processing so that image
processing with respect to the entirety of the picture is carried out.
3. A compiling method for parallel processing program as set forth in claim 2,
wherein the number of processing repeatedly carried out with respect to picture
data of a remainder area which takes place when the total number of the small areas
obtained by dividing the picture cannot be divided by the number of the plural arithmetic
processors is increased by one, and write operation into an input/output memory of
a data processing result of the portion above the total number of the small areas
taking place as the result of the fact that the number of processing is increased
by one is inhibited.
4. An image processing method of carrying out image processing in accordance with execution
codes of a program prepared by using a program language to allow a plurality of arithmetic
processors to carry out, in parallel, image processing,
the method comprising:
an analysis step of carrying out identification and analysis of control statement
to which identifier indicating parallel processing in the image processing is attached
from the prepared program;
an execution code generating step of generating execution codes of parallel processing
to the respective arithmetic processors corresponding to the analysis result by the
analysis step and the number of the plural arithmetic processors; and
an image processing step in which the arithmetic processors respectively carry
out image processing on the basis of the generated execution codes.
5. An image processing method as set forth in claim 4,
wherein the analysis step includes at least one of a step of detecting as to whether
or not there is, within respective processing of the program, integral operation based
on operation result with respect to small areas generated as the result of the fact
that picture data in the image processing is divided into plural data portions, and
a step of detecting as to whether or not there is, within the respective arithmetic
processing, distribution operation of result of the integral operation.
6. An image processing method as set forth in claim 4,
wherein the analysis step includes a step of judging as to whether or not the number
of the pictures subjected to image processing can be divided by the number of the
arithmetic processors, and
wherein in the case where it is judged at the analysis step that the number of
pictures subjected to image processing can be divided by the number of the arithmetic
processors, the execution code generating step generates such execution codes caused
to undergo parallel processing by the respective arithmetic processors every picture
data constituting the respective pictures.
7. An image processing method as set forth in claim 4,
wherein the analysis step includes a step of judging as to whether or not the number
of small areas generated as the result of the fact that picture data subjected to
the image processing is divided into plural data portions can be divided by the number
of the arithmetic processors, and
wherein in the case where it is judged at the analysis step that the number of
the small areas cannot be divided by the number of the arithmetic processors, the
execution code generating step generates an execution code or codes so as to inhibit
write operation into a memory of processing result of an arithmetic processor or processors
to which the portion of remainder is not allocated when the portion of the remainder
of the small areas is being processed by corresponding one or ones of the arithmetic
processors.
8. An image processing apparatus adapted for carrying out image processing by parallel
processing of a plurality of operations,
the apparatus comprising:
a plurality of arithmetic means for respectively carrying out, in parallel, operations
of image processing with respect to respective small areas obtained by dividing a
picture of an inputted picture signal; and
data supply control means for carrying out integral operation on the basis of respective
operation results from the arithmetic means.
9. An image processing apparatus as set forth in claim 8,
wherein the plurality of arithmetic means are operative in accordance with control
by control means having a function to make selective switching in accordance with
the number of pictures processed by any one of a first image processing to respectively
carry out, in parallel, at the plural arithmetic means, operations of image processing
with respect to respective divided small areas of one picture of the delivered picture
signal in dependency upon the number of pictures of the inputted picture signal and
the plural arithmetic means to carry out integral operation on the basis of respective
operation results from these arithmetic means and a second image processing to carry
out, every the arithmetic means, operations of image processing in units of one picture
of the inputted picture signal to respectively carry out, in parallel, image processing
with respect to a plurality of pictures, and the number of the arithmetic means.
10. An image processing apparatus as set forth in claim 9,
wherein the control means makes a control such that
in the case where the number of pictures to be processed is 1 or a value obtained
by dividing the number of pictures by the number of the arithmetic means has a remainder,
the control means carries out the first image processing, and
in the case where the number of pictures can be divided by the number of the arithmetic
means, the control means carries out the second image processing.