JP2014197338A - プログラムの疎行列演算化装置 - Google Patents

プログラムの疎行列演算化装置 Download PDF

Info

Publication number
JP2014197338A
JP2014197338A JP2013073084A JP2013073084A JP2014197338A JP 2014197338 A JP2014197338 A JP 2014197338A JP 2013073084 A JP2013073084 A JP 2013073084A JP 2013073084 A JP2013073084 A JP 2013073084A JP 2014197338 A JP2014197338 A JP 2014197338A
Authority
JP
Japan
Prior art keywords
program
sparse matrix
sparse
matrix
conversion
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
Application number
JP2013073084A
Other languages
English (en)
Inventor
住吉 仁
Hitoshi Sumiyoshi
仁 住吉
拓也 井奈波
Takuya Inaba
拓也 井奈波
敦史 黒目
Atsushi Kurome
敦史 黒目
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Toshiba Corp
Original Assignee
Toshiba Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Toshiba Corp filed Critical Toshiba Corp
Priority to JP2013073084A priority Critical patent/JP2014197338A/ja
Publication of JP2014197338A publication Critical patent/JP2014197338A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Devices For Executing Special Programs (AREA)

Abstract

【課題】ノイマン型プログラムの変換に関して、変換前のプログラムに制約が少なく、性能が高くしかもプログラムの改変が容易な、プログラム行列演算化装置を提供すること。
【解決手段】一例のプログラム疎行列演算化装置は、ノイマン型プログラムを一群の疎行列プログラムに変換するノイマン型プログラムの疎行列演算化装置であって、変換前プログラムの並列ロジック化を行う並列ロジック化部と、この並列ロジック化部により得られた中間プログラムから疎行列を作成する疎行列作成部と、この疎行列作成部により得られた疎行列を保持する変換後プログラム保持部と、を備え、疎行列の演算を得意とするハードウェアにより高速に並列実行が可能な疎行列プログラムを作成することを特徴とする。
【選択図】図1

Description

本発明の実施形態は、プログラム疎行列演算化装置に関する。
ノイマン型プログラムは一般的には、直列的に演算処理を行うので、複雑な演算処理を行う場合には、時間がかかる。そこで行列式を用いて複数のプログラムに変換し、複数のCPUを用いて並列的に処理することが考えられた。
例えば、画像処理用のGPUを汎用プログラムに用いるためには特定の規則に従って、微少加工やヘッダの追加を行う。この発明の実施形態は、並列演算が容易に考えられる計算対象に関するものであり、対象を特定しないプログラムに対するものではない。
従来のこの種の並列演算化装置は、プログラム言語以外に記述ルールがありまたプログラム言語の一部の機能が含まれていてはならない等、変換前のプログラムに大きな制約があり、変換後のプログラムの性能があまり高くないなどの問題がある。
特開2002−108837号公報
本発明の課題は、ノイマン型プログラムの変換に関して、変換前のプログラムに制約が少なく、性能が高くしかもプログラムの改変が容易な、プログラム疎行列演算化装置を提供することである。
一実施形態のプログラム疎行列演算化装置は、ノイマン型プログラムを一群の疎行列プログラムに変換するノイマン型プログラムの疎行列演算化装置であって、変換前プログラムの並列ロジック化を行う並列ロジック化部と、この並列ロジック化部により得られた中間プログラムから疎行列を作成する疎行列作成部と、この疎行列作成部により得られた疎行列を保持する変換後プログラム保持部と、を備え、疎行列の演算を得意とするハードウェアにより高速に並列実行が可能な疎行列プログラムを作成することを特徴とするプログラム疎行列演算化装置である。
一実施形態に係る構成例を示す図である。 一実施形態における並列実行の各要素の依存関係を示す図である。 一実施形態におけるスケジューリングの例を示す図である。 一実施形態における積和の疎行列の例を示す図である。 一実施形態における乗積の疎行列の例を示す図である。 一実施形態における正判の疎行列の例を示す図である。
実施形態について図面を用いて以下に説明する。図1に一実施形態の構成例を示す。
このプログラム疎行列演算化装置11は、疎行列化演算処理を行う前の変換前プログラムを保持する変換前プログラム保持部12と、どのように並列ロジックを行うかを決定する並列ロジック化部13と、この並列ロジック化部13のロジックにより上記変換前プログラム保持部に保持されていたプログラムから並列ロジック疎行列化プログラムを得る疎行列作成部14と、このロジック化プログラム取得部14において得た疎行列を保持する変換後プログラム保持部16と、を有する。
並列ロジック化部13では、変換前プログラム保持部12から入力された変換前のプログラムがどのような構造になっているかを分析し並列に演算できるプログラムを検出する。この並列化されたプログラムは疎行列作成部14に入力され、出力される疎行列を変換後プログラム保持部16において保持される。
ここで、例を挙げて具体的に説明する。
(疎行列プログラムの作成例)
次に数の少ない簡易なSIMD(Single Instruction Multiple Data)型演算によりノイマン型プログラムを並列に実行する疎行列の作成手法について、一例を具体的に説明する。
まず第1ステップとしてノイマン型プログラムを、種類の少ない演算、かつ行列演算に適用したときに単位行列を有し、かつその単位行列が疎行列となるものに変換する。第2ステップとして変換されたものを疎行列に構成する。
今、演算の種類として、積和(演算子「・」)、乗積(演算子「×」)、正判(演算子「?」)の3種類があるとする。「*」は上記3つの演算子のいずれかである。
Figure 2014197338
ここで、*は演算子である。
すると、積和(・)は次式のようになる。
=i×c 11+・・・+i×cm1
・・・・・・・・・・・・・・
=i×c1n+・・・+i×cmn ・・・(2)
また、乗積(×)は次式のようになる。
=i c11×・・・×i cm1
・・・・・・・・・・・・・・・
on=i c1n×・・・×i cmm ・・・(3)
但し、o=1とする。
更に、正判(?)は、次式のようになる。
[数2]
Figure 2014197338
但し、i=0のときf(i,c)=0、i=1とする。
今、変換前のプログラムが次のようであるとする。
void prog(a, b, c, d, &x, &y){
if (a>b && c>d){
x=d;
}
if (a+b>c*d){
y=a*b;
} else {
y=x;
}
return
} ・・・・(5)
並列ロジック化部13において、上記(5)式のプログラムがまずif-elseの変形がなされ、次に示す変換1の(6)式となる。
void prog(a, b, c, d, &x, &y){
x= (a-b>0 && c-d>0? d:0;
y=a+b -c*d>0)? a*b:x;
return
} ・・・・・・(6)
次に、上記(6)式を行列演算で用いられる演算に変形して、次の変換2である(7)式が得られる。
void prog(a, b, c, d, &x, &y){
r1=a-b; r2=c-d;
r3= (r1>0 && r2>0)? 1:0;
r4= r3*(-1)+1;
r5= d*r3;
r6= 0*r4;
x=r5+r6;
r7= a+ b; r8=c*d;
r9=r7-r8
r10= (r9>0)?1:0;
r11= r10*(-1)+1;
r12= a*b;
r13= r12*r10
r14= x*r11;
y= r13+r14;
return;
} ・・・・・・・(7)
更に、上記(7)式のプログラムの自明の削除を変換3として行うと、次の(8)式が得られる。
void prog(a, b, c, d, &x, &y){
r1=a-b; r2=c-d;
r3= (r1>0 && r2>0)? 1:0;
x= d*r3;
r7= a+ b; r8=c*d;
r9=r7-r8
r10= (r9>0)?1:0;
r11= r10*(-1)+1;
r12= a*b;
r13= r12*r10
r14= x*r11;
y= r13+r14
return;
} ・・・・・・・(8)
次にこの(8)式のプログラムを疎行列に変換する。そのために各要素の依存関係を調べる。この過程を図2に基づいて説明する。(8)式の下の方から辿ると、y(・)は、r13(x)とr14(x)に依存しており、r14(x)は、x(x)とr11(・)に依存している。r13(x)はr12(x)とr10(?)に依存しており、r12(x)はaとbに依存している。
r11(・)はr10(?)に依存し、r10(?)はr9(・)に依存する。r9(・)はr7(・)とr8(x)に依存し、r7(・)はaとbに依存し、r8(x)はcとdに依存する。
また、x(x)はdとr3(?)に依存し、r3(?)はr1(・)と、r2(・)に依存する。r1(・)はaとbに依存し、r2(・)はcとdに依存する。
次にスケジューリングを行う。今の場合、演算を積和(・)、乗積(×)、正判(?)の順序に行うとすると、上記依存関係なら、図3に示す4つのサイクルが導かれる。
そして、疎行列作成部14において、これらの関係を積和(・)、乗積(×)、正判(?)の行列で表す。積和(・)の行列を図4に示し、乗積(×)の行列を図5に示し、正判(?)の行列を図6に示す。例えば、積和の行列において、r7=a+bであり、r9=r7−r8である。
このようにして、積和の行列(プログラム)が得られる。図4から、0以外が遍在する3つの疎行列(0は空白で表示している)が得られたことがわかる。
これらの図4乃至図6から、各演算毎の疎行列が構成されたことが理解される。
以上述べたように、疎行列群を作成し、これらを並列に演算していくことにより演算処理の速度を向上させることができる。この疎行列の作成は、例えば図1では、並列ロジック化部13、疎行列作成部14で行われる。
本発明の実施形態によれば、プログラミング言語以外の記述ルールや、その言語に含まれる一部の機能は、VHDLやVerilogHDLと同等にすることができる。
また、本発明の実施形態によれば、GPGPUメーカが提供する疎行列演算ライブラリを利用することができ、ハードウェア(FPGA)による並列実行と同様になり、相当の性能が出せる。変換後のプログラムを改変せず変換前のプログラムを改変することにより機能の改変を行うことができ、実質的に変換後のプログラムを改変できる。また上記実施形態によれば変換前のプログラムはVHDLやVerilogHDLと同様に改変が容易である。
本発明で、「疎行列の演算を得意とするハードウェア」とは例えばGPGPUである。
(その他変形例)
本発明のいくつかの実施形態を説明したがこれらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
11・・・・プログラム行列演算化装置
12・・・・変換前プログラム保持部
13・・・・並列ロジック化部
14・・・・疎行列作成部
16・・・・変換後プログラム保持部

Claims (1)

  1. ノイマン型プログラムを一群の疎行列プログラムに変換するノイマン型プログラムの疎行列演算化装置であって、
    変換前プログラムの並列ロジック化を行う並列ロジック化部と、
    この並列ロジック化部により得られた中間プログラムから疎行列を作成する疎行列作成部と、
    この疎行列作成部により得られた疎行列を保持する変換後プログラム保持部と、を備え、
    疎行列の演算を得意とするハードウェアにより高速に並列実行が可能な疎行列プログラムを作成することを特徴とするプログラム疎行列演算化装置。
JP2013073084A 2013-03-29 2013-03-29 プログラムの疎行列演算化装置 Pending JP2014197338A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2013073084A JP2014197338A (ja) 2013-03-29 2013-03-29 プログラムの疎行列演算化装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2013073084A JP2014197338A (ja) 2013-03-29 2013-03-29 プログラムの疎行列演算化装置

Publications (1)

Publication Number Publication Date
JP2014197338A true JP2014197338A (ja) 2014-10-16

Family

ID=52358063

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013073084A Pending JP2014197338A (ja) 2013-03-29 2013-03-29 プログラムの疎行列演算化装置

Country Status (1)

Country Link
JP (1) JP2014197338A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108334190A (zh) * 2016-12-27 2018-07-27 意美森公司 使用视场的触觉反馈

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108334190A (zh) * 2016-12-27 2018-07-27 意美森公司 使用视场的触觉反馈
CN108334190B (zh) * 2016-12-27 2022-08-26 意美森公司 使用视场的触觉反馈

Similar Documents

Publication Publication Date Title
CN107450972B (zh) 一种调度方法、装置以及电子设备
Date et al. GPU-accelerated Hungarian algorithms for the linear assignment problem
US11106437B2 (en) Lookup table optimization for programming languages that target synchronous digital circuits
JP4931978B2 (ja) 並列化処理方法、システム、及びプログラム
US10810343B2 (en) Mapping software constructs to synchronous digital circuits that do not deadlock
CN102541612B (zh) 数据平行代码中的映射变换
EP3912074B1 (en) Generating a synchronous digital circuit from a source code construct defining a function call
US9575869B2 (en) Service implementation based debugger for service oriented architecture projects
EP3113020A1 (en) Data processing device and method for processing serial tasks
US20200226051A1 (en) Generating a debugging network for a synchronous digital circuit during compilation of program source code
Huchette et al. Parallel algebraic modeling for stochastic optimization
Govindarajulu et al. On quantified modal theorem proving for modeling ethics
US10387126B2 (en) Data marshalling optimization via intermediate representation of workflows
US8584080B2 (en) Modeling and generating computer software product line variants
CN105204837A (zh) 一种逻辑编程的实现方法和装置
US10176086B2 (en) Event-driven software test sequence determination
WO2020075532A1 (ja) システム移行支援装置、システム移行支援方法及びプログラム
Huang Enhancing the Performance Portability of Heterogeneous Circuit Analysis Programs
US11789775B2 (en) Progress visualization of computational job
JP2014197338A (ja) プログラムの疎行列演算化装置
Ling et al. Mrbayes tgmc3: a tight gpu implementation of mrbayes
CN106557312B (zh) 程序开发支援装置以及程序开发支援软件
WO2020211074A1 (zh) 一种多方安全计算数据处理方法、装置及系统
Humphrey et al. Systematic debugging methods for large-scale hpc computational frameworks
JP5966801B2 (ja) 言語変換装置、プログラム