JPH11316688A - Device and method for processing programming language and recording medium - Google Patents
Device and method for processing programming language and recording mediumInfo
- Publication number
- JPH11316688A JPH11316688A JP12371298A JP12371298A JPH11316688A JP H11316688 A JPH11316688 A JP H11316688A JP 12371298 A JP12371298 A JP 12371298A JP 12371298 A JP12371298 A JP 12371298A JP H11316688 A JPH11316688 A JP H11316688A
- Authority
- JP
- Japan
- Prior art keywords
- programming language
- parallel processing
- matrix
- expression
- program
- Prior art date
- Legal status (The legal status 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 status listed.)
- Pending
Links
Landscapes
- Multi Processors (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
Description
【0001】[0001]
【発明の属する技術分野】この発明は、所定のプログラ
ミング言語を並列処理用に拡張した並列処理用プログラ
ミング言語で記述されたソースプログラムから、そのソ
ースプログラムに対応するバイナリプログラムを生成す
るためのプログラミング言語処理装置、プログラミング
言語処理方法および記録媒体に関するものである。BACKGROUND OF THE INVENTION 1. Field of the Invention The present invention relates to a programming language for generating a binary program corresponding to a source program described in a parallel processing programming language obtained by extending a predetermined programming language for parallel processing. The present invention relates to a processing device, a programming language processing method, and a recording medium.
【0002】[0002]
【従来の技術】例えばインテル社製のMMX(商標)機
能付きPentium(商標)など、SIMD(Single
Instruction stream Multiple Data stream)型並列処
理機能を有するプロセッサが開発されている。図10
は、MMX機能を有するPentiumプロセッサに設
けられている64ビットのMMXレジスタを示す図であ
る。このレジスタは、8個のバイトデータ、4個のワー
ドデータ、または、2個の2倍ワードデータを記憶する
ことができ、同一の命令でこれらの複数のデータが並列
に処理される。なお、詳細は、インテル社により提供さ
れる「MMX Technology Technical Overview 」に記載さ
れている。2. Description of the Related Art For example, SIMD (Single) such as Pentium (trademark) with MMX (trademark) function manufactured by Intel Corporation.
A processor having an instruction stream multiple data stream (parallel processing) function has been developed. FIG.
FIG. 3 is a diagram showing a 64-bit MMX register provided in a Pentium processor having an MMX function. This register can store eight byte data, four word data, or two double word data, and these data are processed in parallel by the same instruction. Details are described in "MMX Technology Technical Overview" provided by Intel Corporation.
【0003】このようなプロセッサで実行するバイナリ
プログラムを作成する場合、ソースプログラムの作成の
際に例えばC言語などの所定のプログラミング言語が使
用され、並列処理機能を使用するために、所定のライブ
ラリに含まれる並列処理のルーチンを呼び出す文が記述
される。そして、そのプロセッサに対応するコンパイラ
を使用することにより、そのソースプログラムから、そ
のプロセッサ用のバイナリプログラムが生成される。ま
た、バイナリプログラムを生成するときに使用される上
記ライブラリは、プロセッサの機種ごとにバイナリプロ
グラムの仕様が異なることに起因して、プロセッサごと
に用意されている。When a binary program to be executed by such a processor is created, a predetermined programming language such as C language is used when a source program is created, and a predetermined library is used to use a parallel processing function. A statement for calling the included parallel processing routine is described. Then, a binary program for the processor is generated from the source program by using a compiler corresponding to the processor. Further, the library used when generating the binary program is prepared for each processor because the specifications of the binary program are different for each processor model.
【0004】このように、SIMD型並列処理機能を有
する所定のプロセッサ用のバイナリプログラムを生成す
る場合、所定のプログラミング言語で記述されたソース
プログラムが、そのプロセッサに対応するコンパイラお
よびライブラリに基づいてバイナリプログラムに変換さ
れる。As described above, when a binary program for a predetermined processor having a SIMD type parallel processing function is generated, a source program described in a predetermined programming language is converted based on a compiler and a library corresponding to the processor. Converted to a program.
【0005】また、大規模な並列計算を実行する並列計
算機用のバイナリプログラムを生成する場合、上述のよ
うにその並列計算機用のコンパイラとライブラリを使用
する方法、例えば米国特許5,381,550号で述べ
られている並列計算機用の言語処理系を使用する方法、
C言語を拡張したプログラミング言語であり、ベクトル
や行列の演算に対応する構文を有する例えば「Data Par
allel C Extensions」(Numerical C Extensions Group
of X3J11, Technical Report, Version 1.6,X3J11/94-
080, WG14/N395, December 31, 1994)に記載のDPC
E(Data Parallel C Extensions)言語を使用する方法
などが考えられる。When a binary program for a parallel computer for executing a large-scale parallel calculation is generated, a method using a compiler and a library for the parallel computer as described above, for example, US Pat. No. 5,381,550 How to use a language processor for parallel computers described in
A programming language that is an extension of the C language and has a syntax corresponding to vector and matrix operations, for example, "Data Par
allel C Extensions "(Numerical C Extensions Group
of X3J11, Technical Report, Version 1.6, X3J11 / 94-
080, WG14 / N395, December 31, 1994)
A method using the E (Data Parallel C Extensions) language is conceivable.
【0006】DPCE言語は、ベクトルや行列などを記
述するためにshape型を有し、かつ、ベクトルや行
列の演算に対応する構文を有するので、DPCE言語を
使用することにより、並列処理用ライブラリのルーチン
を呼び出す文を特に記述せず、機種に依存しない並列計
算機用のソースプログラムを記述することができる。[0006] The DPCE language has a shape type for describing vectors and matrices, and has a syntax corresponding to the operation of vectors and matrices. A source program for a parallel computer that does not depend on a machine type can be described without particularly describing a statement for calling a routine.
【0007】[0007]
【発明が解決しようとする課題】従来のプログラミング
言語処理方法は以上のように構成されているので、所定
のプログラミング言語を使用して、プロセッサの機種に
対応するライブラリに含まれるルーチンを呼び出す文を
ソースプログラムに記述してプロセッサの並列処理機能
を利用する場合には、そのルーチンを呼び出す文の名称
(すなわち、ルーチン名または関数名)やその文に必要
な引数の種類などの詳細な知識が必要になり、そのよう
な詳細な知識を有していない者はライブラリのマニュア
ルなどを参照しなければならず、ソースプログラムの作
成が煩雑であるという課題があった。Since the conventional programming language processing method is configured as described above, a statement for calling a routine included in a library corresponding to the model of the processor using a predetermined programming language. When using the parallel processing function of a processor described in a source program, detailed knowledge such as the name of a statement that calls the routine (that is, the name of a routine or a function) and the types of arguments required for the statement is required. Therefore, those who do not have such detailed knowledge have to refer to the manual of the library and the like, and there is a problem that the creation of the source program is complicated.
【0008】また、DPCE言語を使用する場合には、
上述の知識はほとんど必要ないが、DPCE言語は大規
模な並列計算を実行する並列計算機を対象にしているた
め、Pentiumなどのようにプロセッサ内に設けら
れた比較的小規模な並列処理機能を利用するためにDP
CE言語をそのまま使用すると、プログラム実行時の効
率がかえって低下する可能性があるという課題があっ
た。When using the DPCE language,
Although the above knowledge is hardly necessary, the DPCE language is intended for parallel computers that execute large-scale parallel computations, so it uses relatively small-scale parallel processing functions provided in processors such as Pentium. DP to do
If the CE language is used as it is, there is a problem that the efficiency at the time of executing the program may be reduced.
【0009】さらに、上述の方法では、対象になるプロ
セッサや並列計算機が予め決められており、そのプロセ
ッサや並列計算機に対応するコンパイラやライブラリが
使用されて、ソースプログラムからバイナリプログラム
が生成されるので、複数種類のプロセッサに対するバイ
ナリプログラムを生成する場合には、それぞれのプロセ
ッサに対応する言語処理系を利用する必要あり、バイナ
リプログラムを生成する装置や作業が複雑になるという
課題があった。Further, in the above-mentioned method, a target processor and a parallel computer are predetermined, and a binary program is generated from a source program by using a compiler or a library corresponding to the processor or the parallel computer. However, when generating binary programs for a plurality of types of processors, it is necessary to use a language processing system corresponding to each processor, and there has been a problem that a device and an operation for generating a binary program are complicated.
【0010】この発明は上記のような課題を解決するた
めになされたもので、例えばC言語などのプログラミン
グ言語を、並列処理機能付きプロセッサで使用する構文
を追加して拡張した並列処理用プログラミング言語でソ
ースプログラムを記述し、そのソースプログラムにおけ
るベクトルまたは行列に関する構文に基づいた文または
式を、ライブラリの並列処理用ルーチンを呼び出すため
の例えばC言語の構文に基づいた文または式に変換する
ようにして、ライブラリのルーチンについての詳細な知
識を必要とすることなく、並列処理機能付きのプロセッ
サ用のソースプログラムを簡単に作成することを可能に
し、プロセッサ内に設けられた比較的小規模な並列処理
機能を効率よく利用することを可能にするプログラミン
グ言語処理装置、プログラミング言語処理方法、および
記録媒体を得ることを目的とする。SUMMARY OF THE INVENTION The present invention has been made to solve the above problems, and is a programming language for parallel processing in which a programming language such as C language is expanded by adding a syntax used in a processor having a parallel processing function. To convert a statement or expression based on a syntax relating to a vector or a matrix in the source program into a statement or expression based on, for example, a C language syntax for calling a parallel processing routine of the library. Makes it possible to easily create source programs for processors with parallel processing functions without requiring detailed knowledge of library routines, and to implement relatively small-scale parallel processing within processors. A programming language processor that enables efficient use of functions, Programming language processing method, and an object of the present invention to provide a recording medium.
【0011】また、この発明は、予め所定の数のプロセ
ッサに対応するコンパイラとライブラリを所定の記録媒
体に格納しておき、指定されたプロセッサに対応するコ
ンパイラとライブラリを使用して、そのプロセッサに対
するバイナリファイルを生成するようにして、複数種類
のプロセッサに対するバイナリファイルを簡単に生成す
ることを可能にするプログラミング言語処理装置、プロ
グラミング言語処理方法、および記録媒体を得ることを
目的とする。Further, according to the present invention, a compiler and a library corresponding to a predetermined number of processors are stored in a predetermined recording medium in advance, and the compiler and the library corresponding to the specified processor are used for the processor. An object of the present invention is to provide a programming language processing device, a programming language processing method, and a recording medium that can easily generate a binary file for a plurality of types of processors by generating a binary file.
【0012】[0012]
【課題を解決するための手段】この発明に係るプログラ
ミング言語処理装置は、所定のプログラミング言語を並
列処理用に拡張した並列処理用プログラミング言語で記
述されたソースプログラムを読み取る読取手段と、それ
ぞれ種類の異なる所定の数の並列処理機能付きプロセッ
サでの処理を記述したルーチンをそれぞれ有する所定の
数のライブラリと、所定のプログラミング言語で記述さ
れたソースプログラムから、所定の数の並列処理機能付
きプロセッサにそれぞれ対応するバイナリプログラムを
生成する処理を記述された所定の数のコンパイラプログ
ラムとを記録した記録媒体と、ソースプログラムのうち
のベクトルまたは行列に関する構文に基づいた文または
式を、ライブラリの並列処理用ルーチンを呼び出すため
の所定のプログラミング言語の構文に基づいた文または
式に変換する変換手段と、記録媒体から、所定の数の並
列処理機能付きプロセッサのうちのいずれかに対応する
コンパイラプログラムを読み出し、そのコンパイラプロ
グラムに従って、変換手段により変換されたソースプロ
グラムから、その並列処理機能付きプロセッサに対応す
るバイナリプログラムを生成する生成手段とを備えたも
のである。A programming language processing apparatus according to the present invention comprises a reading means for reading a source program described in a parallel processing programming language obtained by extending a predetermined programming language for parallel processing; From a predetermined number of libraries each having a routine describing processing in a different predetermined number of processors with parallel processing functions, and from a source program written in a predetermined programming language, a predetermined number of processors with parallel processing functions A storage medium storing a predetermined number of compiler programs describing a process of generating a corresponding binary program, and a statement or expression based on a syntax related to a vector or a matrix of a source program, a library parallel processing routine A predetermined program for calling Means for converting into a statement or an expression based on the syntax of the coding language, and a compiler program corresponding to any one of a predetermined number of processors with a parallel processing function from a recording medium, and converting means according to the compiler program Generating a binary program corresponding to the processor with the parallel processing function from the source program converted by the above.
【0013】この発明に係るプログラミング言語処理装
置は、変換手段で、ベクトルの内積、ベクトルと行列と
の積、および行列と行列との積を記述する構文に基づい
た式を、ベクトルの内積、ベクトルと行列との積、およ
び行列と行列との積のいずれかに対応するライブラリの
ルーチンを呼び出す所定のプログラミング言語の構文に
基づいた式に変換するものである。In the programming language processing apparatus according to the present invention, the conversion means converts an expression based on a syntax describing a dot product of a vector, a product of a vector and a matrix, and a product of a matrix and a matrix, into a vector dot product, a vector In this case, the expression is converted into an expression based on the syntax of a predetermined programming language that calls a routine of a library corresponding to one of the product of the matrix and the matrix and the product of the matrix and the matrix.
【0014】この発明に係るプログラミング言語処理装
置は、変換手段で、行列の転置を記述する構文に基づい
た式を、行列の転置に対応するライブラリのルーチンを
呼び出す所定のプログラミング言語の構文に基づいた式
に変換するものである。[0014] In the programming language processing apparatus according to the present invention, the conversion means converts the expression based on the syntax describing the transposition of the matrix into the syntax of a predetermined programming language that calls a library routine corresponding to the transposition of the matrix. It is converted into an expression.
【0015】この発明に係るプログラミング言語処理装
置は、変換手段で、行列の要素ごとに、その要素を含む
所定の範囲の要素に対して所定の演算を実行する処理を
記述する構文に基づいた式を、行列の要素ごとに、その
要素を含む所定の範囲の要素に対して所定の演算を実行
する処理に対応するライブラリのルーチンを呼び出すた
めの所定のプログラミング言語の構文に基づいた式に変
換するものである。In the programming language processing apparatus according to the present invention, the conversion means uses, for each element of the matrix, an expression based on a syntax that describes a process of performing a predetermined operation on a predetermined range of elements including the element. Is converted into an expression based on a syntax of a predetermined programming language for calling a routine of a library corresponding to a process of performing a predetermined operation on a predetermined range of elements including the element for each element of the matrix. Things.
【0016】この発明に係るプログラミング言語処理装
置は、ベクトルまたは行列の四則演算の演算子「+」,
「−」,「*」,「/」のうち、「+」または「−」の
演算子が少なくとも2回出現する式がソースプログラム
に記述されている場合、変換手段で、その式を、ベクト
ルまたは行列に対して所定の数の要素ごとにその式の演
算を実行する処理に対応する所定のプログラミング言語
の式に変換するものである。The programming language processing apparatus according to the present invention comprises four arithmetic operations "+",
When an expression in which the operator of “+” or “−” appears at least twice among “−”, “*”, and “/” is described in the source program, the conversion unit converts the expression into a vector. Alternatively, the matrix is converted into a formula of a predetermined programming language corresponding to a process of executing the operation of the formula for each predetermined number of elements.
【0017】この発明に係るプログラミング言語処理装
置は、変換手段で、ベクトルまたは行列を表すオブジェ
クト型の変数の宣言文がソースプログラムに記述されて
いる場合、その宣言文を、所定のプログラミング言語の
配列の宣言文、またはメモリアロケーション関数を有す
る文または式に変換するものである。In a programming language processing apparatus according to the present invention, when a declaration statement of an object-type variable representing a vector or a matrix is described in a source program, the conversion statement converts the declaration statement into an array of a predetermined programming language. Or a statement or expression having a memory allocation function.
【0018】この発明に係るプログラミング言語処理装
置は、変換手段で、DPCE言語のwhere文を、w
here文の条件式に基づいて、ベクトルまたは行列の
所定の要素ごとの所定のプログラミング言語での条件文
に変換するものである。In the programming language processing device according to the present invention, the conversion means converts the where statement of the DPCE language into w
Based on the conditional expression of the here statement, it is converted into a conditional statement in a predetermined programming language for each predetermined element of a vector or matrix.
【0019】この発明に係るプログラミング言語処理方
法は、所定のプログラミング言語を並列処理用に拡張し
た並列処理用プログラミング言語で記述されたソースプ
ログラムを読み取るステップと、ソースプログラムのう
ちのベクトルまたは行列に関する構文に基づいた文また
は式を、それぞれ種類の異なる所定の数の並列機能付き
プロセッサのうちのいずれかの並列処理機能付きプロセ
ッサに対応するライブラリのうちの並列処理用ルーチン
を呼び出すための所定のプログラミング言語の構文に基
づいた文または式に変換するステップと、所定の数の並
列処理機能付きプロセッサに対応する所定の数のライブ
ラリと所定のプログラミング言語で記述されたソースプ
ログラムから所定の数の並列処理機能付きプロセッサに
それぞれ対応するバイナリプログラムを生成する処理が
記述された所定の数のコンパイラプログラムとを記録し
た記録媒体から、その並列処理機能付きプロセッサに対
応するコンパイラプログラムを読み出すステップと、そ
のコンパイラプログラムに従って、変換後のソースプロ
グラムから、その並列処理機能付きプロセッサに対応す
るバイナリプログラムを生成するステップとを備えたも
のである。A method for processing a programming language according to the present invention comprises the steps of: reading a source program described in a parallel processing programming language obtained by extending a predetermined programming language for parallel processing; A predetermined programming language for calling a statement or expression based on a parallel processing routine of a library corresponding to any one of a predetermined number of different parallel processors with different types of parallel processors And a predetermined number of parallel processing functions from a predetermined number of libraries and a source program written in a predetermined programming language corresponding to a predetermined number of processors with parallel processing functions. Corresponding to each processor with Reading a compiler program corresponding to the processor with a parallel processing function from a recording medium on which a predetermined number of compiler programs describing a process of generating an inital program are recorded; and a source program after conversion according to the compiler program. And generating a binary program corresponding to the processor with a parallel processing function.
【0020】この発明に係る記録媒体は、それぞれ種類
の異なる所定の数の並列処理機能付きプロセッサの処理
を記述したルーチンをそれぞれ有する所定の数のライブ
ラリと、所定のプログラミング言語で記述されたソース
プログラムから所定の数の並列処理機能付きプロセッサ
にそれぞれ対応するバイナリプログラムを生成する処理
が記述された所定の数のコンパイラプログラムとを記録
し、さらに、コンピュータを所定のプログラミング言語
を並列処理用に拡張した並列処理用プログラミング言語
で記述されたソースプログラムを読み取る読取手段、そ
のソースプログラムのうちのベクトルまたは行列に関す
る構文に基づいた文または式を、ライブラリの並列処理
用ルーチンを呼び出すための所定のプログラミング言語
の構文に基づいた文または式に変換する変換手段、所定
の数の並列処理機能付きプロセッサのうちのいずれかに
対応するコンパイラプログラムを読み出し、そのコンパ
イラプログラムに従って、変換手段により変換されたソ
ースプログラムから、その並列処理機能付きプロセッサ
に対応するバイナリプログラムを生成する生成手段とし
て機能させるためのプログラムを記録したものである。A recording medium according to the present invention includes a predetermined number of libraries each having a routine describing a predetermined number of different types of processors with parallel processing functions, and a source program described in a predetermined programming language. And a predetermined number of compiler programs in which a process for generating a binary program corresponding to each of a predetermined number of processors having a parallel processing function is recorded, and the computer is expanded to a predetermined programming language for parallel processing. Reading means for reading a source program described in a programming language for parallel processing, a statement or expression based on a syntax relating to a vector or a matrix of the source program, and a statement of a predetermined programming language for calling a parallel processing routine of a library; Based on syntax Or a conversion means for converting into an expression, a compiler program corresponding to any one of a predetermined number of processors with parallel processing functions, and a source program converted by the conversion means according to the compiler program, and A program for causing a processor to function as generating means for generating a binary program corresponding to the processor is recorded.
【0021】[0021]
【発明の実施の形態】以下、この発明の実施の一形態を
説明する。 実施の形態1.図1はこの発明の実施の形態1によるプ
ログラミング言語処理装置の構成を示すブロック図であ
り、図2は、後述のsDPCE言語の構成を説明する図
である。図1において、1は、このプログラミング言語
処理装置の制御手順が記述された制御プログラム11、
C言語を拡張した後述のsDPCE言語でのソースプロ
グラムのうちのベクトルまたは行列に関する構文に基づ
いた文または式を、ユーザにより指定されたプロセッサ
に対応するライブラリ14−iの並列処理用ルーチン2
1−iを呼び出すためのC言語での文または式に変換す
る手順を記述されたプリプロセッサプログラム12、そ
れぞれ種類の異なる所定の数の並列処理機能付きプロセ
ッサの処理を記述した並列処理用ルーチン21−iをそ
れぞれ有する所定の数nのライブラリ14−i(i=
1,2,・・・,n)、C言語で記述されたソースプロ
グラムから、所定の数の並列処理機能付きプロセッサに
それぞれ対応するバイナリプログラムを生成する処理が
記述された所定の数nのCコンパイラプログラム(コン
パイラプログラム)13−i(i=1,2,・・・,
n)などを記録し、バス2に接続された例えばハードデ
ィスク装置などの記録媒体である。DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS One embodiment of the present invention will be described below. Embodiment 1 FIG. FIG. 1 is a block diagram illustrating a configuration of a programming language processing device according to a first embodiment of the present invention, and FIG. 2 is a diagram illustrating a configuration of an sDPCE language described later. In FIG. 1, reference numeral 1 denotes a control program 11 in which a control procedure of the programming language processing device is described.
A parallel processing routine 2 of a library 14-i corresponding to a processor specified by a user converts a statement or expression based on a syntax related to a vector or a matrix in a source program in the sDPCE language described below, which is an extension of the C language.
1-a preprocessor program 12 in which a procedure for converting i into a statement or expression in C language is described, and a parallel processing routine 21- in which a predetermined number of different types of processors with parallel processing functions are described. A predetermined number n of libraries 14-i (i =
1, 2,..., N), a predetermined number n of Cs describing a process of generating binary programs corresponding to a predetermined number of processors with parallel processing functions from a source program described in the C language Compiler program (compiler program) 13-i (i = 1, 2,...,
n) is a recording medium connected to the bus 2 such as a hard disk device.
【0022】3は、起動時にROM4または記録媒体1
に記録された起動用プログラムに基づいて所定のオペレ
ーティングシステムなどを起動する処理を実行するとと
もに、制御プログラム11に従って記録媒体1からバス
2を介してプリプロセッサプログラム12やCコンパイ
ラプログラム13−1〜13−nをRAM5にロード
し、それらのプログラムに記述された処理を実行するC
PU(読取手段、変換手段、生成手段)である。Reference numeral 3 denotes a ROM 4 or a recording medium 1 at startup.
In addition to executing a process of activating a predetermined operating system or the like based on the boot program recorded in the storage medium 1, the preprocessor program 12 and the C compiler programs 13-1 to 13- through the bus 2 from the recording medium 1 according to the control program 11. n into the RAM 5 and execute the processes described in those programs.
PU (reading means, converting means, generating means).
【0023】4は、起動用のプログラムや各種データな
どを予め記憶しているROMであり、5は、記録媒体1
などに記録されているプログラムなどを実行時に一時的
に記憶するとともに、プログラムの実行中に各種データ
を一時的に記憶するRAMであり、2は、記録媒体1、
CPU3、ROM4およびRAM5に接続されるととも
に、図示せぬ各種インタフェースに接続されたバスであ
る。Reference numeral 4 denotes a ROM in which a start-up program and various data are stored in advance.
Is a RAM for temporarily storing a program or the like recorded in a program or the like at the time of execution, and for temporarily storing various data during the execution of the program.
This bus is connected to the CPU 3, the ROM 4, and the RAM 5, and is also connected to various interfaces (not shown).
【0024】ここで、このプログラミング言語処理装置
により処理される並列処理用プログラミング言語につい
て説明する。このプログラミング言語処理装置により処
理される並列処理用プログラミング言語は、図2に示す
ように、DPCE言語での並列処理用の構文のうち、並
列処理機能付きプロセッサに使用する構文および所定の
オブジェクト型に対する並列計算の構文でC言語を拡張
したもの(以下、sDPCE(small DPCE)
言語という)である。Here, a programming language for parallel processing which is processed by the programming language processing device will be described. As shown in FIG. 2, the parallel processing programming language processed by this programming language processing device is, for the parallel processing syntax in the DPCE language, a syntax used for a processor with a parallel processing function and a predetermined object type. An extension of the C language with the syntax of parallel computation (hereinafter sDPCE (small DPCE))
Language).
【0025】DPCE言語での並列処理用の構文のう
ち、並列処理機能付きプロセッサに使用する構文として
は、shape文、where文、shape文により
定義されたベクトルや行列に対する演算子「+」,
「−」,「*」,「/」,「+=」,「−=」,「*
=」,「/=」,「^=」,「|=」,「<?=」,
「>?=」,「<?」,「>?」がある。ただし、sD
PCE言語のshape文で定義されるオブジェクト
は、1次元または2次元のものに限定されている。な
お、これらの構文は上記の文献に記載されている。Among the syntaxes for parallel processing in the DPCE language, the syntax used for a processor with a parallel processing function includes operators "+" for vectors and matrices defined by shape statements, where statements, and shape statements.
“−”, “*”, “/”, “+ =”, “− =”, “*
= ”,“ / = ”,“ ^ = ”,“ | = ”,“ <? = ”,
There are “>? =”, “<?”, And “>?”. Where sD
Objects defined in the shape statement of the PCE language are limited to one-dimensional or two-dimensional objects. These syntaxes are described in the above literature.
【0026】また、shape型に対する並列計算の構
文としては、演算子「**」,式「<<行列>>」,
「[[行列]]」が追加されている。演算子「**」は
2項演算子であり、引数が2項ともshape型のベク
トルである場合にはベクトルの内積の演算を表し、引数
がshape型のベクトルと行列とある場合にはベクト
ルと行列の積の演算を表し、引数が2項ともshape
型の行列である場合には行列と行列との積の演算を表
す。The syntax of the parallel calculation for the shape type includes an operator "**", an expression "<< matrix >>",
"[[Matrix]]" has been added. The operator "**" is a binary operator. When both arguments are shape-type vectors, they represent the operation of the inner product of the vectors. When the argument is a shape-type vector and a matrix, the vector is a vector. Represents the product of the matrix and the matrix, and both arguments are shape
In the case of a matrix of a type, it represents the operation of the product of the matrix and the matrix.
【0027】式「<<行列>>」は、「<<」と「>
>」に囲まれたshape型の行列の転置を算出する処
理を表し、式「[[行列]]」は、「[[」と「]]」
に囲まれたshape型の行列に対する後述の演算処理
を表す。The expression "<< matrix >>" is composed of "<<" and ">
> ”Represents a process of calculating the transpose of a shape-type matrix surrounded by“> ”, and the expression“ [[matrix]] ”is expressed as“ [[”and“]] ”
Represents an arithmetic process described later for a shape-type matrix surrounded by.
【0028】次に動作について説明する。図3は、実施
の形態1によるプログラム言語処理装置の動作について
説明するフローチャートであり、図4は、図3のステッ
プST2におけるプログラム言語処理装置の詳細な動作
について説明するフローチャートであり、図5は、図4
のステップST24におけるプログラム言語処理装置の
詳細な動作について説明するフローチャートである。図
6は、行列に対する演算処理の一例を説明する図であ
る。Next, the operation will be described. FIG. 3 is a flowchart illustrating the operation of the program language processing apparatus according to the first embodiment. FIG. 4 is a flowchart illustrating the detailed operation of the program language processing apparatus in step ST2 of FIG. , FIG.
9 is a flowchart for describing the detailed operation of the program language processing device in step ST24 of FIG. FIG. 6 is a diagram illustrating an example of an operation process on a matrix.
【0029】ユーザによりオペレーティングシステムに
対して制御プログラム11の実行が指示されると、CP
U3は、制御プログラム11をRAM5にロードし、実
行する。この際、ユーザによりsDPCE言語で記述さ
れたソースプログラムおよび対象となるプロセッサが指
定される。以下、この制御プログラム11に従って下記
の処理が実行される。When the user instructs the operating system to execute the control program 11, the CP
U3 loads the control program 11 into the RAM 5 and executes it. At this time, the user specifies a source program described in the sDPCE language and a target processor. Hereinafter, the following processing is executed according to the control program 11.
【0030】まず、ステップST1において、CPU3
は、ユーザにより指定されたソースプログラムを、例え
ば記録媒体1や図示せぬインタフェースに接続された外
部ハードディスク装置やフレキシブルディスク装置から
読み出し、RAM5に記憶させる。First, in step ST1, the CPU 3
Reads the source program specified by the user from, for example, the recording medium 1 or an external hard disk device or a flexible disk device connected to an interface (not shown), and stores the read source program in the RAM 5.
【0031】次に、ステップST2において、CPU3
は、記録媒体1からバス2を介してプリプロセッサプロ
グラム12をRAM5にロードし、実行する。このと
き、上述のsDPCE言語において拡張された構文に基
づいた文または式がソースプログラムに存在する場合、
CPU3は、その文または式を、ユーザにより指定され
たプロセッサのライブラリ14−iのルーチンのうちの
その構文に対応する並列処理用ルーチン21−iを呼び
出すC言語での文または式に変換する。Next, in step ST2, the CPU 3
Loads the preprocessor program 12 from the recording medium 1 via the bus 2 into the RAM 5 and executes it. At this time, if a statement or expression based on the syntax extended in the sDPCE language described above exists in the source program,
The CPU 3 converts the statement or expression into a statement or expression in C language that calls the parallel processing routine 21-i corresponding to the syntax among the routines of the library 14-i of the processor specified by the user.
【0032】そして、ステップST3において、CPU
3は、記録媒体1からバス2を介して、ユーザにより指
定されたプロセッサのCコンパイラプログラム13−i
をRAM5にロードし、実行する。このとき、CPU3
は、Cコンパイラプログラム13−iに従って、プリプ
ロセッサプログラム12に基づいて変換されたC言語の
ソースプログラムを、ユーザにより指定されたプロセッ
サに対するバイナリプログラムに変換する。Then, in step ST3, the CPU
3 is a C compiler program 13-i of the processor designated by the user from the recording medium 1 via the bus 2.
Is loaded into the RAM 5 and executed. At this time, CPU3
Converts the C language source program converted based on the preprocessor program 12 into a binary program for a processor specified by the user according to the C compiler program 13-i.
【0033】最後に、ステップST4において、CPU
3は、そのバイナリプログラムを例えば記録媒体1など
の記録媒体に保存させる。Finally, in step ST4, the CPU
3 stores the binary program in a recording medium such as the recording medium 1, for example.
【0034】このようにして、sDPCE言語でのソー
スプログラムが、ユーザにより指定されたプロセッサに
対するバイナリプログラムに変換される。次に、上記ス
テップST2における処理の詳細について図4のフロー
チャートを参照して説明する。Thus, the source program in the sDPCE language is converted into a binary program for the processor specified by the user. Next, details of the processing in step ST2 will be described with reference to the flowchart in FIG.
【0035】まず、CPU3は、ステップST20にお
いて、プリプロセッサプログラム12に従って、RAM
5に記憶されたsDPCE言語でのソースプログラムの
最初のステップを選択し、ステップST21において、
sDPCE言語によるshape型変数の宣言文がその
ステップに存在するか否かを判断し、shape型変数
の宣言文が存在すると判断した場合には、ステップST
22において、そのshape型変数の宣言文を、C言
語の配列宣言文に変換する。一方、shape型変数の
宣言文が存在しないと判断された場合には、ステップS
T22はスキップされる。First, in step ST20, the CPU 3 executes the RAM processing in accordance with the preprocessor program 12.
5. The first step of the source program in the sDPCE language stored in step 5 is selected, and in step ST21,
It is determined whether or not a shape-type variable declaration statement in the sDPCE language exists in the step. If it is determined that a shape-type variable declaration statement exists, the process proceeds to step ST.
At 22, the statement of the shape type variable is converted into an array declaration statement in C language. On the other hand, if it is determined that the declaration statement of the shape type variable does not exist, step S
T22 is skipped.
【0036】例えば、sDPCE言語において、要素が
100個のベクトルに対応した、要素が100個の1次
元配列のshape型であるvector型と、行の要
素が100個であり列の要素が200個である行列に対
応した、要素が100×200個の2次元配列のsha
pe型であるmatrix型の宣言文は、次に示すよう
に記述される。 shape[100]vector; shape[100][200]matrix;For example, in the sDPCE language, a vector type, which is a shape type of a one-dimensional array having 100 elements, corresponding to a vector having 100 elements, and a row element having 100 row elements and 200 column elements Is a two-dimensional array of 100 × 200 elements corresponding to the matrix
The declaration statement of the matrix type, which is the pe type, is described as follows. shape [100] vector; shape [100] [200] matrix;
【0037】このvector型で変数v1,v2を、
また、このmatrix型で変数m1を定義した場合、
その宣言文は次のように記述される。 unsigned short int:vector v1,v2; unsigned short int:matrix m1;In this vector type, variables v1 and v2 are
When a variable m1 is defined in this matrix type,
The declaration statement is described as follows. unsigned short int: vector v1, v2; unsigned short int: matrix m1;
【0038】そして、このようなshape型の変数を
定義した宣言文は、プリプロセッサプログラム12に従
って次に示すようにC言語の配列の宣言文に変換され
る。なお、上記宣言文は消去される。 unsigned short int v1[100]; unsigned short int v2[100]; unsigned short int m1[100][200];The declaration statement defining such a shape-type variable is converted into a C language array declaration statement as shown below according to the preprocessor program 12. The above statement is deleted. unsigned short int v1 [100]; unsigned short int v2 [100]; unsigned short int m1 [100] [200];
【0039】次に、ステップST23において、CPU
3は、プリプロセッサプログラム12に従って、sDP
CE言語による並列処理の命令(上述の演算子、式な
ど)がそのステップに存在するか否かを判断し、並列処
理の命令が存在すると判断した場合には、ステップST
24において、その並列処理の命令を有する文または式
を、ユーザにより指定されたプロセッサの並列処理用ル
ーチン21−iのうちのその命令に対応するルーチンを
呼び出すC言語での文または式に変換する。一方、並列
処理の命令が存在しないと判断された場合には、ステッ
プST24はスキップされる。Next, in step ST23, the CPU
3 is sDP according to the preprocessor program 12.
It is determined whether or not a parallel processing instruction (the above-described operator, expression, or the like) in the CE language exists in the step. If it is determined that a parallel processing instruction exists, the process proceeds to step ST.
At 24, the statement or expression having the instruction for parallel processing is converted into a statement or expression in C language that calls the routine corresponding to the instruction among the parallel processing routines 21-i of the processor specified by the user. . On the other hand, if it is determined that there is no parallel processing instruction, step ST24 is skipped.
【0040】例えば、sDPCE言語によるソースプロ
グラムにおいて、ベクトルv2の各要素とスカラ値(=
3)との和を計算し、その計算結果をベクトルv1の各
要素に代入する処理は、次のように記述される。 v1=v2+3;For example, in a source program in the sDPCE language, each element of the vector v2 and a scalar value (=
The process of calculating the sum of 3) and substituting the calculation result into each element of the vector v1 is described as follows. v1 = v2 + 3;
【0041】そして、このようなベクトルや行列の演算
式は、プリプロセッサプログラム12に従って次に示す
ように、その演算に対応する並列処理用ルーチン21−
iを呼び出すC言語の式に変換される。 MMX_unsign_scalar_add(v1,v2,3,100);The arithmetic expressions of such vectors and matrices are expressed as follows in accordance with the preprocessor program 12 by a parallel processing routine 21- corresponding to the arithmetic operation.
It is converted to a C language expression that calls i. MMX_unsign_scalar_add (v1, v2,3,100);
【0042】なお、この式において、「100 」はベクト
ルv1,v2の要素数を示している。また、「MMX_unsi
gn_scalar_add 」は、ベクトルの各要素とスカラ値との
和をプロセッサの並列処理機能を利用して演算する並列
処理用ルーチン21−iの名称である。In this equation, "100" indicates the number of elements of the vectors v1 and v2. Also, "MMX_unsi
"gn_scalar_add" is the name of the parallel processing routine 21-i that calculates the sum of each element of the vector and the scalar value using the parallel processing function of the processor.
【0043】そして、ステップST25において、CP
U3は、プリプロセッサプログラム12に従って、現在
処理しているソースプログラムのステップが最後のステ
ップであるか否かを判断し、現在処理しているステップ
が最後のステップではないと判断した場合には、ステッ
プST26においてソースプログラムの次のステップを
選択した後、ステップST21に戻り、そのステップに
対してステップST21〜ステップST24の処理を実
行する。Then, in step ST25, the CP
U3 determines whether the step of the source program currently being processed is the last step according to the preprocessor program 12, and if it determines that the step currently being processed is not the last step, After selecting the next step of the source program in ST26, the process returns to step ST21, and the processing of steps ST21 to ST24 is executed for that step.
【0044】一方、ステップST25において、現在処
理しているソースプログラムのステップが最後のステッ
プであると判断された場合、CPU3は、プリプロセッ
サプログラム12に基づいた処理を終了し、図3のステ
ップST3に進む。On the other hand, if it is determined in step ST25 that the step of the source program currently being processed is the last step, the CPU 3 ends the processing based on the preprocessor program 12, and proceeds to step ST3 of FIG. move on.
【0045】このように、プリプロセッサプログラム1
2に従って、sDPCE言語において拡張された構文に
基づいた文または式がC言語の構文に基づいた文または
式に変換される。次に、上記ステップST24における
処理の詳細について図5のフローチャートを参照して説
明する。As described above, the preprocessor program 1
According to 2, a sentence or expression based on the syntax extended in the sDPCE language is converted into a sentence or expression based on the syntax in the C language. Next, details of the processing in step ST24 will be described with reference to the flowchart in FIG.
【0046】まず、ステップST41において、CPU
3は、プリプロセッサプログラム12に従って、並列処
理の命令が演算子「**」であるか否かを判断し、並列
処理の命令が演算子「**」であると判断した場合、ス
テップST42において、演算子「**」の引数が2項
ともshape型のベクトルであるか否かを判断する。First, in step ST41, the CPU
3 judges whether the instruction of the parallel processing is the operator "**" according to the preprocessor program 12, and if it is determined that the instruction of the parallel processing is the operator "**", in step ST42, It is determined whether or not both arguments of the operator “**” are shape type vectors.
【0047】そして、演算子「**」の引数が2項とも
shape型のベクトルであると判断した場合、ステッ
プST43において、CPU3は、プリプロセッサプロ
グラム12に従って、その命令を、ベクトルの内積を演
算する並列処理用ルーチン21−iを呼び出すC言語の
式に変換する。If it is determined that both of the two arguments of the operator “**” are shape type vectors, the CPU 3 calculates the inner product of the instruction and the vector according to the preprocessor program 12 in step ST43. It is converted into a C language expression that calls the parallel processing routine 21-i.
【0048】例えば、sDPCE言語によるソースプロ
グラムにおいて、ベクトルv1とベクトルv2の内積を
計算し、その計算結果のスカラ値をスカラ変数s3に代
入する処理は、次のように記述される。 s3=v1**v2;For example, in a source program in the sDPCE language, a process of calculating an inner product of a vector v1 and a vector v2 and assigning a scalar value of the calculation result to a scalar variable s3 is described as follows. s3 = v1 ** v2;
【0049】そして、この演算式は、プリプロセッサプ
ログラム12に従って、次に示すようにその演算に対応
する並列処理用ルーチン21−iを呼び出すC言語の式
に変換される。 MMX_vector_inner(s3,v1,v2,size_of_vector);The arithmetic expression is converted into a C language expression for calling the parallel processing routine 21-i corresponding to the arithmetic operation as shown below in accordance with the preprocessor program 12. MMX_vector_inner (s3, v1, v2, size_of_vector);
【0050】なお、上式の「size_of_vector」はベクト
ルv1,v2の要素数であり、この値は、これらのベク
トルv1,v2の宣言文から予め読み出され、記憶され
る。Note that “size_of_vector” in the above equation is the number of elements of the vectors v1 and v2, and this value is read in advance from the declaration statement of these vectors v1 and v2 and stored.
【0051】一方、演算子「**」の引数が2項のいず
れかがshape型のベクトルではないと判断した場
合、ステップST44において、CPU3は、プリプロ
セッサプログラム12に従って、演算子「**」の引数
がshape型のベクトルとshape型の行列である
か否かを判断する。On the other hand, if the argument of the operator “**” determines that any of the two terms is not a shape-type vector, the CPU 3 proceeds to step ST44 according to the preprocessor program 12 to execute the operator “**”. It is determined whether or not the argument is a shape type vector and a shape type matrix.
【0052】演算子「**」の引数がshape型のベ
クトルとshape型の行列であると判断した場合、ス
テップST45において、CPU3は、プリプロセッサ
プログラム12に従って、その命令を、ベクトルと行列
との積を演算する並列処理用ルーチン21−iを呼び出
すC言語の式に変換する。If it is determined that the argument of the operator “**” is a shape-type vector and a shape-type matrix, in step ST45, the CPU 3 converts the instruction according to the preprocessor program 12 into a product of the vector and the matrix. Is converted to a C language expression that calls a parallel processing routine 21-i for calculating.
【0053】例えば、sDPCE言語によるソースプロ
グラムにおいて、行列m1とベクトルv3との積を計算
し、その計算結果のベクトルをベクトルv4に代入する
処理は、次のように記述される。 v4=m1**v3;For example, in a source program in the sDPCE language, the process of calculating the product of the matrix m1 and the vector v3 and substituting the vector of the calculation result into the vector v4 is described as follows. v4 = m1 ** v3;
【0054】そして、この演算式は、プリプロセッサプ
ログラム12に従って、次に示すようにその演算に対応
する並列処理用ルーチン21−iを呼び出すC言語の式
に変換される。 MMX_matrix_vector(v4,m1,v
3,size_of_vector);This operation expression is converted into a C language expression for calling the parallel processing routine 21-i corresponding to the operation, as shown below, according to the preprocessor program 12. MMX_matrix_vector (v4, m1, v
3, size_of_vector);
【0055】なお、上式の「size_of_vector」はベクト
ルv3の要素数であり、この値は、このベクトルの宣言
文から予め読み出され、記憶される。Note that “size_of_vector” in the above equation is the number of elements of the vector v3, and this value is read out in advance from the declaration statement of this vector and stored.
【0056】一方、演算子「**」の引数がshape
型のベクトルとshape型の行列ではないと判断した
場合、ステップST46において、CPU3は、プリプ
ロセッサプログラム12に従って、演算子「**」の引
数が2項ともにshape型の行列であるか否かを判断
する。On the other hand, the argument of the operator “**” is shape
If it is determined that the two vectors are not a shape vector and a shape matrix, in step ST46, the CPU 3 determines whether the two arguments of the operator “**” are both a shape matrix according to the preprocessor program 12. I do.
【0057】演算子「**」の引数がいずれもshap
e型の行列であると判断した場合、ステップST47に
おいて、CPU3は、プリプロセッサプログラム12に
従って、その命令を、行列と行列の積を演算する並列処
理用ルーチン21−iを呼び出すC言語の式に変換す
る。All arguments of the operator "**" are "shap".
If it is determined that the matrix is an e-type matrix, in step ST47, the CPU 3 converts the instruction into a C language expression for calling the parallel processing routine 21-i for calculating the product of the matrix and the matrix according to the preprocessor program 12. I do.
【0058】例えば、sDPCE言語によるソースプロ
グラムにおいて、行列m2と行列m3との積を計算し、
その計算結果の行列を行列m4に代入する処理は、次の
ように記述される。 m4=m2**m3;For example, in a source program in the sDPCE language, the product of the matrix m2 and the matrix m3 is calculated,
The process of substituting the matrix of the calculation result into the matrix m4 is described as follows. m4 = m2 ** m3;
【0059】そして、この演算式は、プリプロセッサプ
ログラム12に従って、次に示すようにその演算に対応
する並列処理用ルーチン21−iを呼び出すC言語の式
に変換される。 MMX_matrix_matrix(m4,m2,m
3,size_of_row);The arithmetic expression is converted into a C language expression for calling the parallel processing routine 21-i corresponding to the arithmetic operation, as shown below, in accordance with the preprocessor program 12. MMX_matrix_matrix (m4, m2, m
3, size_of_row);
【0060】なお、上式の「size_of_row
」は行列m2,m3の行または列の要素数であり、こ
の値は、これらの行列の宣言文から予め読み出され、記
憶される。In the above expression, “size_of_row”
Is the number of elements in the rows or columns of the matrices m2 and m3, and this value is read in advance from the declaration statements of these matrices and stored.
【0061】一方、演算子「**」の引数のいずれかが
shape型の行列ではないと判断した場合、ベクトル
および行列以外に対して演算子「**」が使用されてい
ることになるので、ステップST48において、CPU
3は、プリプロセッサプログラム12に従って、エラー
メッセージの表示などのエラー処理を実行する。On the other hand, if it is determined that any of the arguments of the operator “**” is not a shape type matrix, the operator “**” is used for other than a vector and a matrix. In step ST48, the CPU
3 executes error processing such as displaying an error message according to the preprocessor program 12.
【0062】また、ステップST41において、並列処
理の命令が演算子「**」ではないと判断した場合、ス
テップST49において、CPU3は、プリプロセッサ
プログラム12に従って、その他の並列処理の命令に対
して、上述の演算子「**」と同様に適宜変換を実行す
る。If it is determined in step ST41 that the instruction for the parallel processing is not the operator "**", the CPU 3 sends the above-mentioned instruction to the other parallel processing in accordance with the preprocessor program 12 in step ST49. The conversion is appropriately performed in the same manner as in the operator “**”.
【0063】例えば、sDPCE言語によるソースプロ
グラムにおいて、行列m5の転置行列を元の行列m5に
代入する処理は、次のように記述される。 m5=<<m5>>;For example, in a source program in the sDPCE language, the process of substituting the transposed matrix of the matrix m5 into the original matrix m5 is described as follows. m5 = << m5 >>;
【0064】そして、この演算式は、プリプロセッサプ
ログラム12に従って、次に示すようにその演算に対応
する並列処理用ルーチン21−iを呼び出すC言語の式
に変換される。 MMX_matrix_transpose(m5,size_of_row,size_of_colum
n);This arithmetic expression is converted into a C language expression for calling the parallel processing routine 21-i corresponding to the arithmetic operation as follows, in accordance with the preprocessor program 12. MMX_matrix_transpose (m5, size_of_row, size_of_colum
n);
【0065】なお、上式の「size_of_row 」と「size_o
f_column」は行列m5の行と列の要素数であり、これら
の値は、この行列の宣言文から予め読み出され、記憶さ
れる。Note that “size_of_row” and “size_o”
“f_column” is the number of elements in the row and column of the matrix m5, and these values are read in advance from the declaration statement of this matrix and stored.
【0066】また、例えばsDPCE言語によるソース
プログラムにおいて、行列imageに対して施される
行列Mに基づいた演算処理は、次のように記述される。 image=M[[image]];For example, in a source program in the sDPCE language, the arithmetic processing based on the matrix M applied to the matrix image is described as follows. image = M [[image]];
【0067】なお、行列MはsDPCE言語で例えば次
のように定義され、この演算処理は、行列imageの
各要素を中心にして、周辺の要素と行列Mの各要素との
積の総和を、その中心の要素の値とすることで実行され
る。 shape[3][3] mask; mask M=[-1,-1,-1,0,0,0,-1,-1,-1];The matrix M is defined in the sDPCE language, for example, as follows. This arithmetic processing is performed by centering on each element of the matrix image and calculating the sum of products of peripheral elements and each element of the matrix M by: This is executed by setting the value of the element at the center. shape [3] [3] mask; mask M = [-1, -1, -1,0,0,0, -1, -1, -1];
【0068】そして、この演算式は、プリプロセッサプ
ログラム12に従って、次に示すようにその演算に対応
する並列処理用ルーチン21−iを呼び出すC言語の式
に変換される。 MMX_Apply_mask(image,M,image,size_of_column_of_M,s
ize_of_column_of_image);The arithmetic expression is converted into a C language expression for calling the parallel processing routine 21-i corresponding to the arithmetic operation as shown below in accordance with the preprocessor program 12. MMX_Apply_mask (image, M, image, size_of_column_of_M, s
ize_of_column_of_image);
【0069】なお、上式の「size_of_column_of_M 」と
「size_of_column_of_image 」はそれぞれ行列Mの列と
行列imageの列の要素数であり、これらの値は、こ
れらの行列の宣言文から予め読み出され、記憶される。Note that “size_of_column_of_M” and “size_of_column_of_image” in the above expression are the numbers of elements in the columns of the matrix M and the columns of the matrix image, respectively, and these values are read in advance from the declaration statements of these matrices and stored. Is done.
【0070】例えば、図6(a)に示す値を有する行列
Mが、図6(b)に示す値を有する行列imageのう
ちの値がd5である要素に適用される場合、そのd5の
要素の演算処理後の値は、次式による値になる。 m1×d1+m2×d2+m3×d3+・・・+m9×
d9For example, when the matrix M having the values shown in FIG. 6A is applied to an element having a value d5 in the matrix image having the values shown in FIG. Is the value obtained by the following equation. m1 × d1 + m2 × d2 + m3 × d3 +... + m9 ×
d9
【0071】このような演算処理は特に画像処理におい
て多く使用される。その場合、各画素の値が、その画素
の周辺の画素の値から演算される。例えば、行列ima
geで表される画像の平滑化を実行する場合には、例え
ば次式のようにその演算式がsDPCE言語で記述され
る。 mask M=[1,1,1,1,1,1,1,1,1]; image=M[[image]]/9;Such arithmetic processing is often used particularly in image processing. In that case, the value of each pixel is calculated from the values of pixels around the pixel. For example, the matrix ima
When the image represented by “ge” is to be smoothed, the arithmetic expression is described in the sDPCE language, for example, as in the following expression. mask M = [1,1,1,1,1,1,1,1,1]; image = M [[image]] / 9;
【0072】また、行列imageで表される画像の先
鋭化を実行する場合には、例えば次式のようにその演算
式がsDPCE言語で記述される。 mask M=[−1,−1,−1,−1,1,−1,
−1,−1,−1]; image=M[[image]]/9;When the sharpening of the image represented by the matrix image is executed, the operation formula is described in the sDPCE language, for example, as in the following formula. mask M = [-1, -1, -1, -1, -1,1, -1,
-1, -1, -1]; image = M [[image]] / 9;
【0073】さらに、行列imageで表される画像の
各要素の上下左右の要素の値の総和をその要素の値にす
る処理を実行する場合には、例えば次式のようにその演
算式がsDPCE言語で記述される。 mask M=[0,1,0,1,0,1,0,1,0]; image=M[[image]];Further, in the case of executing a process for converting the sum of the values of the upper, lower, left and right elements of each element of the image represented by the matrix image into the value of the element, for example, the operation formula is sDPCE as in the following equation. Written in language. mask M = [0,1,0,1,0,1,0,1,0]; image = M [[image]];
【0074】以上のように、この実施の形態1によれ
ば、並列処理機能付きプロセッサに使用する構文を追加
してC言語を拡張したsDPCE言語でソースプログラ
ムを記述し、そのソースプログラムのうちのベクトルま
たは行列に関する構文に基づいた文または式を、ライブ
ラリの並列処理用ルーチンを呼び出すためのC言語での
文または式に変換するようにしたので、各プロセッサに
対応するライブラリのルーチンについての詳細な知識を
必要とすることなく、並列処理機能付きのプロセッサ用
のソースプログラムを簡単に作成することができるとと
もに、プロセッサ内に設けられた比較的小規模な並列処
理機能を効率よく利用することができるという効果が得
られる。As described above, according to the first embodiment, a source program is described in the sDPCE language, which is an extension of the C language by adding a syntax used for a processor with a parallel processing function, and Since a statement or expression based on a syntax related to a vector or a matrix is converted into a statement or expression in C language for calling a routine for parallel processing of the library, a detailed description of the routine of the library corresponding to each processor is provided. A source program for a processor with a parallel processing function can be easily created without requiring knowledge, and a relatively small-scale parallel processing function provided in the processor can be efficiently used. The effect is obtained.
【0075】また、この実施の形態1によれば、予め所
定の数のプロセッサに対応するコンパイラとライブラリ
を所定の記録媒体に格納しておき、指定されたプロセッ
サに対応するコンパイラとライブラリを使用して、その
プロセッサに対するバイナリファイルを生成するように
したので、複数種類のプロセッサに対するバイナリファ
イルを簡単に生成することができるという効果が得られ
る。According to the first embodiment, the compiler and the library corresponding to the predetermined number of processors are stored in the predetermined recording medium in advance, and the compiler and the library corresponding to the specified processor are used. Thus, since a binary file for the processor is generated, an effect is obtained that binary files for a plurality of types of processors can be easily generated.
【0076】なお、上記実施の形態1では、shape
型変数の宣言文を、C言語の配列宣言文に変換にしてい
るが、C言語のメモリ割り当て関数に変換するようにし
てもよい。In the first embodiment, shape
Although the type variable declaration statement is converted to a C language array declaration statement, it may be converted to a C language memory allocation function.
【0077】実施の形態2.この発明の実施の形態2に
よるプログラム言語処理装置は、ベクトルまたは行列の
四則演算の演算子「+」,「−」,「*」,「/」のう
ち、「+」または「−」の演算子が少なくとも2回出現
する式がソースプログラムに記述されている場合に、そ
の式を、ベクトルまたは行列に対して所定の数の要素ご
とに、その式の演算を実行する処理に対応する式に変換
するものである。その他の処理については、実施の形態
1によるものと同様であるので、ここでは、上記の場合
の処理についてだけ説明する。Embodiment 2 The programming language processing device according to the second embodiment of the present invention operates the "+" or "-" of the operators "+", "-", "*", and "/" of the four arithmetic operations on a vector or a matrix. When an expression in which a child appears at least twice is described in the source program, the expression is converted into an expression corresponding to a process of executing the operation of the expression for each predetermined number of elements in a vector or matrix. It is something to convert. Other processes are the same as those in the first embodiment, and therefore, only the process in the above case will be described here.
【0078】例えば、sDPCE言語によるソースプロ
グラムにおいて、ベクトルv1,v2,v3,v4,v
5の和を計算し、その和をベクトルv6に代入する処理
は、次のように記述される。 v6=v1+v2+v3+v4+v5;For example, in a source program in the sDPCE language, vectors v1, v2, v3, v4, v
The process of calculating the sum of 5 and substituting the sum into the vector v6 is described as follows. v6 = v1 + v2 + v3 + v4 + v5;
【0079】そして、この演算式は、プリプロセッサプ
ログラム12に従って、次に示すようにその演算に対応
する並列処理用ルーチン21−iを呼び出すC言語の式
に変換される。 for(i=0;i<size;i+=partition_size){ MMX_add(&(tmp1[i]),&(v1[i]),&(v2[i]),partition_size); MMX_add(&(tmp2[i]),&(tmp1[i]),&(v3[i]),partition_size); MMX_add(&(tmp3[i]),&(tmp2[i]),&(v4[i]),partition_size); MMX_add(&(v6[i]),&(tmp3[i]),&(v5[i]),partition_size); } The arithmetic expression is converted into a C language expression for calling the parallel processing routine 21-i corresponding to the arithmetic operation in accordance with the preprocessor program 12, as shown below. for (i = 0; i <size; i + = partition_size) {MMX_add (& (tmp1 [i]), & (v1 [i]), & (v2 [i]), partition_size); MMX_add (& (tmp2 [ i]), & (tmp1 [i]), & (v3 [i]), partition_size); MMX_add (& (tmp3 [i]), & (tmp2 [i]), & (v4 [i]), partition_size ); MMX_add (& (v6 [i]), & (tmp3 [i]), & (v5 [i]), partition_size);}
【0080】なお、上式で、「tmp1」、「tmp
2」および「tmp3」は、演算途中の値を一時的に格
納する変数であり、「partition_size」は、演算を1回
に実行する要素数である。また、関数「MMX_add(A,B,C,
D)」は、ポインタBで示される要素からDの範囲の要素
と、ポインタCで示される要素からDの範囲の要素との
要素ごとの和を、ポインタAで示される要素からDの範
囲に代入する関数である。In the above equation, “tmp1”, “tmp1”
“2” and “tmp3” are variables for temporarily storing values during the operation, and “partition_size” is the number of elements for executing the operation at one time. Also, the function "MMX_add (A, B, C,
D) "is the sum of the elements in the range from the element indicated by the pointer B to the element D and the element in the range from the element indicated by the pointer C to the element D, and the sum of the elements indicated by the pointer A to the area D. The function to assign.
【0081】以上のように、この実施の形態2によれ
ば、ベクトルまたは行列に対して所定の数の要素ごとに
実行する処理に対応する式に変換するようにしたので、
ユーザにより指定されたプロセッサがキャッシュメモリ
を備えている場合、キャッシュヒットの確率を高くする
ことができるという効果が得られる。As described above, according to the second embodiment, a vector or a matrix is converted into an expression corresponding to a process executed for each of a predetermined number of elements.
When the processor specified by the user has a cache memory, the effect of increasing the probability of a cache hit can be obtained.
【0082】すなわち、上記例のように式を変換するこ
とにより、図7に示すように、変数「tmp1」、「t
mp2」および「tmp3」は、キャッシュアウトされ
る前に次の式で使用されるので、キャッシュヒットの確
率が高くなる。一方、上記例のsDPCE言語での式を
例えば次のように変換した場合には、図8に示すように
キャッシュヒットが起こらず、この実施の形態2におい
て示したように変換した方が、バイナリプログラムの実
行時の処理速度が高くなる。 MMX_add(tmp1,v1,v2,size_of_vector); MMX_add(tmp2,tmp1,v3,size_of_vector); MMX_add(tmp3,tmp2,v4,size_of_vector); MMX_add(v6,tmp3,v5,size_of_vector);That is, by converting the expressions as in the above example, as shown in FIG. 7, the variables “tmp1” and “t
Since “mp2” and “tmp3” are used in the following formula before being cached out, the probability of a cache hit increases. On the other hand, when the expression in the sDPCE language of the above example is converted as follows, for example, a cache hit does not occur as shown in FIG. 8, and the conversion as shown in the second embodiment is more binary. The processing speed when executing the program is increased. MMX_add (tmp1, v1, v2, size_of_vector); MMX_add (tmp2, tmp1, v3, size_of_vector); MMX_add (tmp3, tmp2, v4, size_of_vector); MMX_add (v6, tmp3, v5, size_of_vector);
【0083】実施の形態3.この発明の実施の形態3に
よるプログラム言語処理装置では、where文につい
て不要な演算を条件文によりスキップさせるようにした
C言語のソースプログラムを出力する。その他の部分に
ついては、実施の形態2によるものと同様であるので、
その説明を省略する。Embodiment 3 The programming language processing apparatus according to the third embodiment of the present invention outputs a C language source program in which unnecessary operations on a where statement are skipped by a conditional statement. Other parts are the same as those according to the second embodiment.
The description is omitted.
【0084】例えば、sDPCE言語によるソースプロ
グラムにおいて、行列m1,m2,m3,m4,m5,
m6が同一の型である場合に、行列m1の要素のうちの
値が0である要素と同位置の、行列m2,m3,m4,
m5,m6の要素についてだけ演算を実行する処理は、
例えば次のように記述される。 For example, in a source program in the sDPCE language, matrices m1, m2, m3, m4, m5
When m6 is of the same type, matrices m2, m3, m4 at the same positions as the elements of matrix m1 whose values are 0
The processing for executing the operation only on the elements m5 and m6 is as follows.
For example, it is described as follows.
【0085】そして、この演算式は、プリプロセッサプ
ログラム12に従って、次に示すようにその演算に対応
する並列処理用ルーチン21−iを呼び出すC言語の式
に変換される。 for(i=0;i<size;i+=partition_size){ if(condition){ MMX_Add(&(tmp1[i]),&(m3[i]),&(m4[i]),partition_size); MMX_Add(&(tmp2[i]),&(tmp1[i]),&(m5[i]),partition_size); MMX_Sub(&(tmp3[i]),&(tmp2[i]),&(m6[i]),partition_size); MMX_cwrite_eq(&(m2[i]),&(tmp3[i]),&(m1[i]),partition_size); } } The arithmetic expression is converted into a C language expression for calling the parallel processing routine 21-i corresponding to the arithmetic operation in accordance with the preprocessor program 12, as shown below. for (i = 0; i <size; i + = partition_size) {if (condition) {MMX_Add (& (tmp1 [i]), & (m3 [i]), & (m4 [i]), partition_size); MMX_Add (& (tmp2 [i]), & (tmp1 [i]), & (m5 [i]), partition_size); MMX_Sub (& (tmp3 [i]), & (tmp2 [i]), & (m6 [ i]), partition_size); MMX_cwrite_eq (& (m2 [i]), & (tmp3 [i]), & (m1 [i]), partition_size);}}
【0086】なお、上式で、「tmp1」、「tmp
2」および「tmp3」は、演算途中の値を一時的に格
納する変数であり、「partition_size」は、演算を1回
に実行する要素数である。また、関数「MMX_Add(A,B,C,
D)」は、ポインタBで示される要素からDの範囲の要素
と、ポインタCで示される要素からDの範囲の要素との
要素ごとの和を、ポインタAで示される要素からDの範
囲に代入する関数であり、関数「MMX_Sub(A,B,C,D)」
は、ポインタBで示される要素からDの範囲の要素と、
ポインタCで示される要素からDの範囲の要素との要素
ごとの差を、ポインタAで示される要素からDの範囲に
代入する関数である。さらに、関数「MMX_cwrite_eq(A,
B,C,D)」は、ポインタCで示される要素からDの範囲の
要素のうち、値が0である要素に対応する要素の位置と
同位置の要素についてだけ、ポインタBで示される要素
からDの範囲の要素を、ポインタAで示される要素から
Dの範囲に代入する関数である。そして、「condition
」は、where文の条件式(今の場合、「m1==0
」)に基づいて、for文の各反復において、上記の
if文の範囲内の4式の演算を実行するか否かを判断す
るための条件文である。In the above equation, “tmp1”, “tmp1”
“2” and “tmp3” are variables for temporarily storing values during the operation, and “partition_size” is the number of elements for executing the operation at one time. Also, the function “MMX_Add (A, B, C,
D) "is the sum of the elements in the range from the element indicated by the pointer B to the element D and the element in the range from the element indicated by the pointer C to the element D, and the sum of the elements indicated by the pointer A to the area D. This is the function to be assigned, and the function "MMX_Sub (A, B, C, D)"
Are elements in the range from the element indicated by the pointer B to D,
This function substitutes the difference of each element between the element indicated by the pointer C and the element in the range of D from the element indicated by the pointer A into the range of D. Further, the function “MMX_cwrite_eq (A,
B, C, D) "is an element indicated by the pointer B only for an element in the range from the element indicated by the pointer C to the element D corresponding to the element corresponding to the element having a value of 0. This is a function for substituting elements in the range from to to D into the range from the element indicated by the pointer A to D. And "condition
Is a conditional expression of a where statement (in this case, “m1 == 0
) Is a conditional statement for determining whether or not to execute the operations of the four expressions within the range of the if statement in each iteration of the for statement.
【0087】以上のように、この実施の形態3によれ
ば、where文における不要な計算をスキップするよ
うにソースプログラムを変換するようにしたので、変換
後のソースプログラムから生成されるバイナリプログラ
ムの実行時の処理速度が向上するという効果が得られ
る。As described above, according to the third embodiment, the source program is converted so as to skip unnecessary calculations in the “where” statement, so that the binary program generated from the converted source program is converted. The effect that the processing speed at the time of execution is improved is obtained.
【0088】例えば図9に示すような中間調を有する画
像に対してエッジ強調処理を実行する場合、画素に対応
する行列のうちの、ほとんどの要素の値(すなわち画素
値)は変更されないので、where文の範囲内の演算
を所定の要素数ごとに分割することにより、値が変更さ
れない要素に対する演算をスキップさせることができ
る。For example, when the edge enhancement processing is performed on an image having a halftone as shown in FIG. 9, most element values (ie, pixel values) of a matrix corresponding to pixels are not changed. By dividing the operation within the range of the “where” statement for each predetermined number of elements, it is possible to skip the operation for the element whose value is not changed.
【0089】実施の形態4.この発明の実施の形態4に
よるプログラム言語処理装置では、ユーザにより指定さ
れたプロセッサのCコンパイラがソースプログラムにア
センブラ言語で記述された文をC言語での文と同様に変
換することが可能な場合に、sDPCE言語で記述され
た所定の文を適宜アセンブラ言語に変換する。Embodiment 4 In the programming language processing apparatus according to Embodiment 4 of the present invention, a case where a C compiler of a processor specified by a user can convert a statement described in an assembler language into a source program in the same manner as a statement in a C language First, a predetermined sentence described in the sDPCE language is appropriately converted into an assembler language.
【0090】例えば、sDPCE言語によるソースプロ
グラムにおいて、スカラ変数s1,s2,s3,s4の
和を計算し、その和をスカラ変数s5に代入する処理
は、次のように記述される。 s5=s1+s2+s3+s4;For example, in a source program in the sDPCE language, a process of calculating the sum of scalar variables s1, s2, s3, and s4 and assigning the sum to the scalar variable s5 is described as follows. s5 = s1 + s2 + s3 + s4;
【0091】そして、この演算式は、プリプロセッサプ
ログラム12に従って次に示すように、その演算に対応
するアセンブラ言語の式に変換される。 Then, this operation expression is converted into an expression in an assembler language corresponding to the operation as shown below according to the preprocessor program 12.
【0092】なお、命令「movq A,B 」は、Bの値をA
に格納する命令であり、命令「padddA,B」は、Bの値を
Aの値に加算した値をAに格納する命令である。また、
「_asm」は次の括弧内のプログラムがアセンブラ言語で
記述されたものであることを示すものである。The instruction “movq A, B” sets the value of B to A
The command “padddA, B” is a command for storing the value obtained by adding the value of B to the value of A in A. Also,
"_Asm" indicates that the program in the following parentheses is described in assembler language.
【0093】以上のように、この実施の形態4によれ
ば、sDPCE言語の式を適宜アセンブラ言語の式に変
換するようにしたので、変換後のソースプログラムから
生成されるバイナリプログラムの実行時の処理速度が向
上するという効果が得られる。As described above, according to the fourth embodiment, the expressions in the sDPCE language are appropriately converted into the expressions in the assembler language. Therefore, when the binary program generated from the converted source program is executed, The effect of improving the processing speed is obtained.
【0094】なお、上記実施の形態1〜実施の形態4に
おいては、C言語の関数を呼び出す文または式に変換し
ているが、インライン関数やマクロ定義に適宜変換する
ようにしてもよい。In the first to fourth embodiments, the function is converted into a statement or an expression that calls a function in the C language. However, the function may be converted into an inline function or a macro definition as appropriate.
【0095】また、上記実施の形態1〜実施の形態4に
おいては、sDPCE言語でのソースプログラムをC言
語でのソースプログラムに変換しているが、特にsDP
CE言語およびC言語に限定されるものではない。In the first to fourth embodiments, the source program in the sDPCE language is converted to the source program in the C language.
It is not limited to CE language and C language.
【0096】[0096]
【発明の効果】以上のように、この発明によれば、所定
のプログラミング言語を並列処理用に拡張した並列処理
用プログラミング言語で記述されたソースプログラムの
うちのベクトルまたは行列に関する構文に基づいた文ま
たは式を、いずれかの並列処理機能付きプロセッサに対
応するライブラリのうちの並列処理用ルーチンを呼び出
すための所定のプログラミング言語の構文に基づいた文
または式に変換し、記録媒体から、その並列処理機能付
きプロセッサに対応するコンパイラプログラムを読み出
し、そのコンパイラプログラムに従って、変換後のソー
スプログラムから、その並列処理機能付きプロセッサに
対応するバイナリプログラムを生成するように構成した
ので、各プロセッサに対応するライブラリのルーチンに
ついての詳細な知識を必要とすることなく、並列処理機
能付きのプロセッサ用のソースプログラムを簡単に作成
することができるとともに、プロセッサ内に設けられた
比較的小規模な並列処理機能を効率よく利用することが
できるという効果がある。As described above, according to the present invention, a statement based on a syntax related to a vector or a matrix in a source program described in a parallel processing programming language obtained by extending a predetermined programming language for parallel processing. Or, convert the expression into a statement or expression based on the syntax of a predetermined programming language for calling a parallel processing routine of a library corresponding to any of the processors with parallel processing functions, and convert the parallel processing from a recording medium. The compiler program corresponding to the processor with the function is read, and a binary program corresponding to the processor with the parallel processing function is generated from the converted source program according to the compiler program. Detailed knowledge of routines , It is possible to easily create a source program for a processor with a parallel processing function, and to efficiently use a relatively small-scale parallel processing function provided in the processor. effective.
【0097】また、複数種類のプロセッサに対するバイ
ナリファイルを簡単に生成することができるという効果
が得られる。Further, an effect is obtained that binary files for a plurality of types of processors can be easily generated.
【0098】この発明によれば、ベクトルまたは行列の
四則演算の演算子「+」,「−」,「*」,「/」のう
ち、「+」または「−」の演算子が少なくとも2回出現
する式がソースプログラムに記述されている場合、その
式を、ベクトルまたは行列に対して所定の数の要素ごと
にその式の演算を実行する処理に対応する所定のプログ
ラミング言語の式に変換するように構成したので、プロ
セッサがキャッシュメモリを備えている場合、キャッシ
ュヒットの確率を高くすることができるという効果があ
る。According to the present invention, among the operators "+", "-", "*", and "/" for the four arithmetic operations on a vector or a matrix, the operator of "+" or "-" is at least twice. When an appearing expression is described in a source program, the expression is converted into an expression of a predetermined programming language corresponding to a process of executing the operation of the expression for each predetermined number of elements of a vector or a matrix. With such a configuration, when the processor has a cache memory, there is an effect that the probability of a cache hit can be increased.
【図面の簡単な説明】[Brief description of the drawings]
【図1】 この発明の実施の形態1によるプログラミン
グ言語処理装置の構成を示すブロック図である。FIG. 1 is a block diagram showing a configuration of a programming language processing device according to a first embodiment of the present invention.
【図2】 sDPCE言語の構成を説明する図である。FIG. 2 is a diagram illustrating a configuration of an sDPCE language.
【図3】 実施の形態1によるプログラム言語処理装置
の動作について説明するフローチャートである。FIG. 3 is a flowchart illustrating an operation of the program language processing apparatus according to the first embodiment;
【図4】 図3のステップST2におけるプログラム言
語処理装置の詳細な動作について説明するフローチャー
トである。FIG. 4 is a flowchart illustrating a detailed operation of the program language processing device in step ST2 of FIG. 3;
【図5】 図4のステップST24におけるプログラム
言語処理装置の詳細な動作について説明するフローチャ
ートである。FIG. 5 is a flowchart illustrating a detailed operation of the program language processing device in step ST24 of FIG. 4;
【図6】 行列に対する演算処理の一例を説明する図で
ある。FIG. 6 is a diagram illustrating an example of a calculation process on a matrix.
【図7】 実行時のプロセッサのキャッシュの内容の一
例を示す図である。FIG. 7 is a diagram illustrating an example of the contents of a cache of a processor at the time of execution.
【図8】 実行時のプロセッサのキャッシュの内容の他
の一例を示す図である。FIG. 8 is a diagram showing another example of the contents of the cache of the processor at the time of execution.
【図9】 中間調を有する画像の一例としての中間調画
像を示す写真である。FIG. 9 is a photograph showing a halftone image as an example of an image having a halftone.
【図10】 MMX機能を有するPentiumプロセ
ッサに設けられている64ビットのMMXレジスタを示
す図である。FIG. 10 is a diagram illustrating a 64-bit MMX register provided in a Pentium processor having an MMX function.
1 記録媒体、3 CPU(読取手段、変換手段、生成
手段)、13−1〜13−n Cコンパイラプログラム
(コンパイラプログラム)、14−1〜14−n ライ
ブラリ、21−1〜21−n 並列処理用ルーチン。Reference Signs List 1 recording medium, 3 CPU (reading means, converting means, generating means), 13-1 to 13-n C compiler program (compiler program), 14-1 to 14-n library, 21-1 to 21-n parallel processing Routine.
───────────────────────────────────────────────────── フロントページの続き (72)発明者 田中 健一 東京都千代田区丸の内二丁目2番3号 三 菱電機株式会社内 ──────────────────────────────────────────────────続 き Continued on the front page (72) Inventor Kenichi Tanaka 2-3-2 Marunouchi, Chiyoda-ku, Tokyo Mitsubishi Electric Corporation
Claims (9)
に拡張した並列処理用プログラミング言語で記述された
ソースプログラムを読み取る読取手段と、 それぞれ種類の異なる所定の数の並列処理機能付きプロ
セッサでの処理を記述したルーチンをそれぞれ有する所
定の数のライブラリと、前記所定のプログラミング言語
で記述されたソースプログラムから、前記所定の数の並
列処理機能付きプロセッサにそれぞれ対応するバイナリ
プログラムを生成する処理を記述された所定の数のコン
パイラプログラムとを記録した記録媒体と、 前記ソースプログラムのうちのベクトルまたは行列に関
する構文に基づいた文または式を、前記ライブラリの並
列処理用ルーチンを呼び出すための前記所定のプログラ
ミング言語の構文に基づいた文または式に変換する変換
手段と、 前記記録媒体から、前記所定の数の並列処理機能付きプ
ロセッサのうちのいずれかに対応する前記コンパイラプ
ログラムを読み出し、そのコンパイラプログラムに従っ
て、前記変換手段により変換された前記ソースプログラ
ムから、その並列処理機能付きプロセッサに対応するバ
イナリプログラムを生成する生成手段とを備えたプログ
ラミング言語処理装置。1. A reading means for reading a source program described in a parallel processing programming language obtained by extending a predetermined programming language for parallel processing, and processing by a predetermined number of different types of processors with parallel processing functions. A process of generating binary programs respectively corresponding to the predetermined number of processors with parallel processing functions from a predetermined number of libraries each having the described routine and a source program described in the predetermined programming language is described. A recording medium on which a predetermined number of compiler programs are recorded; and a statement or expression based on a syntax relating to a vector or a matrix of the source program, the predetermined programming language for calling a parallel processing routine of the library. Into statements or expressions based on syntax Converting means for reading the compiler program corresponding to any of the predetermined number of processors with parallel processing functions from the recording medium, and converting the source program according to the compiler program by the converting means. And a generating means for generating a binary program corresponding to the processor with a parallel processing function from the above.
トルの内積、ベクトルと行列との積、および行列と行列
との積を記述する構文を有し、 変換手段は、その構文に基づいた式を、ベクトルの内
積、ベクトルと行列との積、および行列と行列との積の
いずれかに対応するライブラリのルーチンを呼び出す前
記所定のプログラミング言語の構文に基づいた式に変換
することを特徴とする請求項1記載のプログラミング言
語処理装置。2. The programming language for parallel processing has a syntax for describing an inner product of a vector, a product of a vector and a matrix, and a product of a matrix and a matrix, and the conversion means converts an expression based on the syntax into: The method according to claim 1, further comprising: converting an expression based on the syntax of the predetermined programming language to call a routine of a library corresponding to one of an inner product of a vector, a product of a vector and a matrix, and a product of a matrix and a matrix. 2. The programming language processing device according to 1.
の転置を記述する構文を有し、 変換手段は、その構文に基づいた式を、行列の転置に対
応するライブラリのルーチンを呼び出す前記所定のプロ
グラミング言語の構文に基づいた式に変換することを特
徴とする請求項1記載のプログラミング言語処理装置。3. The programming language for parallel processing has a syntax for describing transposition of a matrix, and the conversion means converts an expression based on the syntax into a routine of a library corresponding to the transposition of the matrix. 2. The programming language processing device according to claim 1, wherein the expression is converted into an expression based on a language syntax.
の要素ごとに、その要素を含む所定の範囲の要素に対し
て所定の演算を実行する処理を記述する構文を有し、 変換手段は、その構文に基づいた式を、行列の要素ごと
に、その要素を含む所定の範囲の要素に対して所定の演
算を実行する処理に対応するライブラリのルーチンを呼
び出すための前記所定のプログラミング言語の構文に基
づいた式に変換することを特徴とする請求項1記載のプ
ログラミング言語処理装置。4. A programming language for parallel processing has a syntax for describing, for each element of a matrix, a process of executing a predetermined operation on a predetermined range of elements including the element, and the conversion means includes: An expression based on the syntax is converted into a syntax of the predetermined programming language for calling, for each element of the matrix, a routine of a library corresponding to a process of performing a predetermined operation on a predetermined range of elements including the element. 2. The programming language processing device according to claim 1, wherein the expression is converted into an expression based on the expression.
演算の演算子「+」,「−」,「*」,「/」のうち、
「+」または「−」の演算子が少なくとも2回出現する
式がソースプログラムに記述されている場合、その式
を、前記ベクトルまたは行列に対して所定の数の要素ご
とにその式の演算を実行する処理に対応する前記所定の
プログラミング言語の式に変換することを特徴とする請
求項1記載のプログラミング言語処理装置。5. The conversion means includes one of operators “+”, “−”, “*”, and “/” for four arithmetic operations on a vector or a matrix.
When an expression in which a “+” or “−” operator appears at least twice is described in a source program, the expression is calculated by performing an operation of the expression on the vector or matrix for each predetermined number of elements. 2. The programming language processing device according to claim 1, wherein the programming language is converted into an expression of the predetermined programming language corresponding to a process to be executed.
オブジェクト型の変数の宣言文がソースプログラムに記
述されている場合、その宣言文を、前記所定のプログラ
ミング言語の配列の宣言文、またはメモリアロケーショ
ン関数を有する文または式に変換することを特徴とする
請求項1記載のプログラミング言語処理装置。6. The conversion means, when a declaration statement of an object type variable representing a vector or a matrix is described in a source program, converts the declaration statement into an array declaration statement of the predetermined programming language or memory allocation. 2. The programming language processing device according to claim 1, wherein the language is converted into a statement or an expression having a function.
CE言語のwhere文を有し、 変換手段は、前記where文を、前記where文の
条件式に基づいて、ベクトルまたは行列の所定の要素ご
との前記所定のプログラミング言語での条件文に変換す
ることを特徴とする請求項1記載のプログラミング言語
処理装置。7. The programming language for parallel processing is DP
A conversion unit configured to convert the where sentence into a conditional sentence in the predetermined programming language for each predetermined element of a vector or a matrix, based on a conditional expression of the where sentence. The programming language processing device according to claim 1, wherein:
に拡張した並列処理用プログラミング言語で記述された
ソースプログラムを読み取るステップと、 前記ソースプログラムのうちのベクトルまたは行列に関
する構文に基づいた文または式を、それぞれ種類の異な
る所定の数の並列機能付きプロセッサのうちのいずれか
の並列処理機能付きプロセッサに対応するライブラリの
うちの並列処理用ルーチンを呼び出すための前記所定の
プログラミング言語の構文に基づいた文または式に変換
するステップと、 前記所定の数の並列処理機能付きプロセッサに対応する
所定の数のライブラリと、前記所定のプログラミング言
語で記述されたソースプログラムから前記所定の数の並
列処理機能付きプロセッサにそれぞれ対応するバイナリ
プログラムを生成する処理が記述された所定の数のコン
パイラプログラムとを記録した記録媒体から、その並列
処理機能付きプロセッサに対応する前記コンパイラプロ
グラムを読み出すステップと、 そのコンパイラプログラムに従って、変換後の前記ソー
スプログラムから、その並列処理機能付きプロセッサに
対応するバイナリプログラムを生成するステップとを備
えたプログラミング言語処理方法。8. A step of reading a source program written in a parallel processing programming language obtained by extending a predetermined programming language for parallel processing, and a step of reading a statement or an expression based on a syntax related to a vector or a matrix in the source program. A statement based on the syntax of the predetermined programming language for calling a parallel processing routine of a library corresponding to any one of the predetermined number of different types of parallel processing processors. Or converting to an expression; a predetermined number of libraries corresponding to the predetermined number of processors with parallel processing functions; and a predetermined number of processors with parallel processing functions from a source program written in the predetermined programming language. Binary programs corresponding to Reading the compiler program corresponding to the processor with the parallel processing function from a recording medium on which a predetermined number of compiler programs in which processing to be performed are described are recorded; and reading out the source program after conversion according to the compiler program. Generating a binary program corresponding to the processor with a parallel processing function.
理機能付きプロセッサの処理を記述したルーチンをそれ
ぞれ有する所定の数のライブラリと、所定のプログラミ
ング言語で記述されたソースプログラムから前記所定の
数の並列処理機能付きプロセッサにそれぞれ対応するバ
イナリプログラムを生成する処理が記述された所定の数
のコンパイラプログラムとを記録し、 コンピュータを前記所定のプログラミング言語を並列処
理用に拡張した並列処理用プログラミング言語で記述さ
れたソースプログラムを読み取る読取手段、 そのソースプログラムのうちのベクトルまたは行列に関
する構文に基づいた文または式を、前記ライブラリの並
列処理用ルーチンを呼び出すための前記所定のプログラ
ミング言語の構文に基づいた文または式に変換する変換
手段、 前記所定の数の並列処理機能付きプロセッサのうちのい
ずれかに対応する前記コンパイラプログラムを読み出
し、そのコンパイラプログラムに従って、前記変換手段
により変換された前記ソースプログラムから、その並列
処理機能付きプロセッサに対応するバイナリプログラム
を生成する生成手段として機能させるためのプログラム
を記録したコンピュータ読み取り可能な記録媒体。9. A predetermined number of libraries each having a routine describing processing of a predetermined number of different types of processors with a parallel processing function, and a predetermined number of routines from a source program described in a predetermined programming language. A predetermined number of compiler programs each describing a process of generating a binary program corresponding to a processor with a parallel processing function are recorded, and the computer is expanded by using a parallel processing programming language obtained by expanding the predetermined programming language for parallel processing. Reading means for reading a written source program, a statement or expression based on a syntax relating to a vector or a matrix of the source program, based on a syntax of the predetermined programming language for calling a parallel processing routine of the library; Convert to statement or expression Converting means for reading the compiler program corresponding to any one of the predetermined number of processors with parallel processing function, and converting the source program converted by the converting means according to the compiler program into a program having the parallel processing function. A computer-readable recording medium on which a program for causing a processor to function as a generation unit for generating a binary program corresponding to the processor is recorded.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP12371298A JPH11316688A (en) | 1998-05-06 | 1998-05-06 | Device and method for processing programming language and recording medium |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP12371298A JPH11316688A (en) | 1998-05-06 | 1998-05-06 | Device and method for processing programming language and recording medium |
Publications (1)
Publication Number | Publication Date |
---|---|
JPH11316688A true JPH11316688A (en) | 1999-11-16 |
Family
ID=14867501
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP12371298A Pending JPH11316688A (en) | 1998-05-06 | 1998-05-06 | Device and method for processing programming language and recording medium |
Country Status (1)
Country | Link |
---|---|
JP (1) | JPH11316688A (en) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7509634B2 (en) | 2002-11-12 | 2009-03-24 | Nec Corporation | SIMD instruction sequence generating program, SIMD instruction sequence generating method and apparatus |
JP2010186468A (en) * | 2009-02-10 | 2010-08-26 | Internatl Business Mach Corp <Ibm> | Method of generating parallel simd code for arbitrary target architecture, computer readable medium, and system |
JP2010186467A (en) * | 2009-02-10 | 2010-08-26 | Internatl Business Mach Corp <Ibm> | Method to be executed by computer, computer-readable storage medium and system (high-speed vector masking algorithm for conditional data selection in simd architecture) |
JP2014501412A (en) * | 2010-12-23 | 2014-01-20 | マイクロソフト コーポレーション | Extensible data parallel semantics |
-
1998
- 1998-05-06 JP JP12371298A patent/JPH11316688A/en active Pending
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7509634B2 (en) | 2002-11-12 | 2009-03-24 | Nec Corporation | SIMD instruction sequence generating program, SIMD instruction sequence generating method and apparatus |
JP2010186468A (en) * | 2009-02-10 | 2010-08-26 | Internatl Business Mach Corp <Ibm> | Method of generating parallel simd code for arbitrary target architecture, computer readable medium, and system |
JP2010186467A (en) * | 2009-02-10 | 2010-08-26 | Internatl Business Mach Corp <Ibm> | Method to be executed by computer, computer-readable storage medium and system (high-speed vector masking algorithm for conditional data selection in simd architecture) |
JP2014501412A (en) * | 2010-12-23 | 2014-01-20 | マイクロソフト コーポレーション | Extensible data parallel semantics |
US9841958B2 (en) | 2010-12-23 | 2017-12-12 | Microsoft Technology Licensing, Llc. | Extensible data parallel semantics |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8904152B2 (en) | Efficient complex multiplication and fast fourier transform (FFT) implementation on the ManArray architecture | |
US7509634B2 (en) | SIMD instruction sequence generating program, SIMD instruction sequence generating method and apparatus | |
US11556317B2 (en) | Instruction translation support method and information processing apparatus | |
KR102586259B1 (en) | Register-based complex number processing | |
JPH11316688A (en) | Device and method for processing programming language and recording medium | |
JP7020555B2 (en) | Information processing equipment, information processing methods, and programs | |
US7647368B2 (en) | Data processing apparatus and method for performing data processing operations on floating point data elements | |
JPWO2007116560A1 (en) | Method and apparatus for controlling parallel image processing system | |
US11635947B2 (en) | Instruction translation support method and information processing apparatus | |
US5801719A (en) | Microprocessor with graphics capability for masking, aligning and expanding pixel bands | |
Cockshott et al. | Orthogonal parallel processing in vector Pascal | |
JP2806262B2 (en) | Process allocation method for multiprocessor system | |
JP2024524588A (en) | Processing device, method and computer program for vector compound instructions | |
JPS62197832A (en) | Vector processor | |
CN116737238A (en) | Instruction generation method and device and electronic equipment | |
JP2831697B2 (en) | Architecture synthesis equipment | |
GB2617829A (en) | Technique for handling data elements stored in an array storage | |
JP2024525798A (en) | Predicate Technology | |
CN114860433A (en) | Method for performing pooling calculation operation on simulator | |
TW202411860A (en) | Multiple-outer-product instruction | |
JP3619861B2 (en) | Pipeline information output method, output device therefor, and computer-readable recording medium | |
JP2719277B2 (en) | Automatic program analyzer | |
Clint et al. | A family of intermediate forms | |
JPH06282440A (en) | Program editing method, program editing and executing method, and computer system | |
JP2008117297A (en) | Simd arithmetic processing apparatus and parallel operation method |