JP6443125B2 - コンパイラプログラム、コンピュータプログラム及びコンパイラ装置 - Google Patents
コンパイラプログラム、コンピュータプログラム及びコンパイラ装置 Download PDFInfo
- Publication number
- JP6443125B2 JP6443125B2 JP2015035777A JP2015035777A JP6443125B2 JP 6443125 B2 JP6443125 B2 JP 6443125B2 JP 2015035777 A JP2015035777 A JP 2015035777A JP 2015035777 A JP2015035777 A JP 2015035777A JP 6443125 B2 JP6443125 B2 JP 6443125B2
- Authority
- JP
- Japan
- Prior art keywords
- processing
- instruction
- unit
- thread
- cpu
- 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.)
- Active
Links
- 238000004590 computer program Methods 0.000 title claims description 6
- 238000012545 processing Methods 0.000 claims description 146
- 238000000034 method Methods 0.000 claims description 50
- 238000004364 calculation method Methods 0.000 claims description 8
- 238000010586 diagram Methods 0.000 description 14
- 238000012360 testing method Methods 0.000 description 7
- 238000004891 communication Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 3
- 238000004519 manufacturing process Methods 0.000 description 3
- 239000004065 semiconductor Substances 0.000 description 3
- 230000000694 effects Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 238000007796 conventional method Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/45—Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
- G06F8/453—Data distribution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3005—Arrangements for executing specific machine instructions to perform operations for flow control
- G06F9/30058—Conditional branch instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
- G06F9/30087—Synchronisation or serialisation instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
- G06F9/3009—Thread control instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/30101—Special purpose registers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3851—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Devices For Executing Special Programs (AREA)
- Advance Control (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
Description
以下、実施の形態を、図面を参照して説明する。図1はコンパイラ装置1のハードウェア構成の一例を示すブロック図である。コンパイラ装置1は、汎用コンピュータ、ワークステーション、デスクトップ型PC(パーソナルコンピュータ)、ノートブック型PC等である。コンパイラ装置1は、CPU(Central Processing Unit)11、RAM(Random Access Memory)12、ROM(Read Only Memory)13、大容量記憶装置14、入力部15、出力部16、通信部17、読取り部18を含む。各構成はバスで接続されている。
アドレスを選択し、分岐命令またはジャンプ命令等が実行される場合、演算部OPUからのアドレスを選択する。そして、セレクタS1は、選択したアドレスをプログラムカウンタPCに出力する。セレクタS2は、命令コードをフェッチする場合、プログラムカウンタPCから出力されるアドレスを選択し、ロード命令またはストア命令を実行する場合、アドレスレジスタ部AREGから出力されるアドレスを選択する。そして、セレクタS2は、選択したアドレスを、アドレスバスAD0を介してキャッシュメモリCMに出力する。
thread_parallel_start
<Sに対する並列処理実行部>
thread_parallel_end
double a[N];
thread_para_start
for(i=0;i<num;i++)
a[i] = a[i] * 2;
thread_para_end
iter[0]=11111112
iter[i]=11111111 (i=1〜8)
となる。
add[0]=0
add[i]=11111112+11111111*(i−1) (i=1〜8)
となる。
実施の形態2では、リダクション指示節を持つ並列処理プログラムを対象とする。リダクション指示節は、リダクション演算をおこなう部分を並列処理したい場合に用いる指示説である。リダクション演算は、複数のプロセスが持つデータを対象とした演算である。代表的なリダクション演算としては、例えば、データの総和を求める演算、最大値、最小値を求める演算等が知られている。
今回開示された実施の形態はすべての点で例示であって、制限的なものでは無いと考えられるべきである。本発明の範囲は、上記した意味では無く、特許請求の範囲によって示され、特許請求の範囲と均等の意味及び範囲内でのすべての変更が含まれることが意図される。
処理すべきデータ集合の要素数から、スレッド数よりも大きい前記データ集合の分割数を算出し、
算出した分割数に、前記データ集合を分割し、
分割したデータ集合それぞれの処理を行う複数の実行コードを含み、各実行コードの先頭に、該実行コードに最初に到達したスレッドが処理を行う命令を配してあるオブジェクトコードを生成する
コンパイラプログラム。
処理すべきデータ集合の要素数から算出した、スレッド数よりも大きい分割数で前記データ集合を分割した部分集合それぞれを処理する複数の実行コードを含み、各実行コードの先頭に、該実行コードに最初に到達したスレッドが処理を行う命令が配してあり、
前記スレッド数のスレッドで、前記複数の実行コードの処理を並列的にコンピュータに行わせる
コンピュータプログラム。
処理すべきデータ集合の要素数から、スレッド数よりも大きい前記データ集合の分割数を算出する算出部と、
算出した分割数に、前記データ集合を分割する分割部と、
分割したデータ集合の処理を行う複数の実行部、及び各実行部に最初に到達したスレッドが行う命令を、各実行部の先頭に配してあるオブジェクトコードを生成する生成部とを備える
コンパイラ装置。
前記分割したデータ集合の処理結果を格納する複数の第1格納コードを含み、各第1格納コードの先頭には、該第1格納コードに最初に到達したスレッドが処理を行う命令を配してあるオブジェクトコードを出力する
付記1に記載のコンパイラプログラム。
前記複数の第n格納コード(ただし、nは1以上の自然数)の処理結果を格納する第n+1格納コードを複数含み、
各第n+1格納コードの先頭には、該第n+1格納コードに最初に到達したスレッドが処理を行う命令を配してあるオブジェクトコードの出力を、前記第n格納コードの個数が所定値よりも小さくなるまで、再帰的に行う
付記4に記載のコンパイラプログラム。
11 CPU
11a 算出部
11b 分割部
11c 生成部
11d 出力部
12 RAM
13 ROM
14 大容量記憶装置
15 入力部
16 出力部
17 通信部
18 読取り部
1a 可搬型記憶媒体
1b 半導体メモリ
1P 制御プログラム
2 並列処理装置
21 CPU
22 RAM
23 ROM
24 大容量記憶装置
25 入力部
26 出力部
27 通信部
28 読取り部
2a 可搬型記憶媒体
2b 半導体メモリ
2P 制御プログラム
Claims (3)
- 処理すべきデータ集合の要素数から、スレッド数よりも大きい前記データ集合の分割数を算出し、
算出した分割数に、前記データ集合を分割し、
分割したデータ集合それぞれの処理を行う複数の実行コードを含み、各実行コードの先頭に、該実行コードに最初に到達したスレッドが処理を行う命令を配してあるオブジェクトコードを生成する処理をコンピュータに行わせる
コンパイラプログラム。 - 処理すべきデータ集合の要素数から算出した、スレッド数よりも大きい分割数で前記データ集合を分割した部分集合それぞれを処理する複数の実行コードを含み、各実行コードの先頭に、該実行コードに最初に到達したスレッドが処理を行う命令が配してあり、
前記スレッド数のスレッドで、前記複数の実行コードの処理を並列的にコンピュータに行わせる
コンピュータプログラム。 - 処理すべきデータ集合の要素数から、スレッド数よりも大きい前記データ集合の分割数を算出する算出部と、
算出した分割数に、前記データ集合を分割する分割部と、
分割したデータ集合の処理を行う複数の実行部、及び各実行部に最初に到達したスレッドが行う命令を、各実行部の先頭に配してあるオブジェクトコードを生成する生成部とを備える
コンパイラ装置。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2015035777A JP6443125B2 (ja) | 2015-02-25 | 2015-02-25 | コンパイラプログラム、コンピュータプログラム及びコンパイラ装置 |
US14/968,084 US9934036B2 (en) | 2015-02-25 | 2015-12-14 | Compiler method, parallel processing method, and compiler apparatus |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2015035777A JP6443125B2 (ja) | 2015-02-25 | 2015-02-25 | コンパイラプログラム、コンピュータプログラム及びコンパイラ装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2016157339A JP2016157339A (ja) | 2016-09-01 |
JP6443125B2 true JP6443125B2 (ja) | 2018-12-26 |
Family
ID=56689894
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2015035777A Active JP6443125B2 (ja) | 2015-02-25 | 2015-02-25 | コンパイラプログラム、コンピュータプログラム及びコンパイラ装置 |
Country Status (2)
Country | Link |
---|---|
US (1) | US9934036B2 (ja) |
JP (1) | JP6443125B2 (ja) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10558464B2 (en) | 2017-02-09 | 2020-02-11 | International Business Machines Corporation | Infinite processor thread balancing |
CN113190466A (zh) * | 2021-06-08 | 2021-07-30 | 科东(广州)软件科技有限公司 | 自动化测试方法、装置、设备及介质 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH03172958A (ja) * | 1989-11-30 | 1991-07-26 | Hitachi Ltd | 同期処理方法および並列処理システムおよび並列処理方法および並列化プログラム生成装置 |
JPH0512033A (ja) | 1991-07-03 | 1993-01-22 | Hitachi Ltd | 並列化コンパイル方式 |
JPH0561899A (ja) | 1991-09-03 | 1993-03-12 | Nec Software Ltd | プログラムの自動並列化処理方式 |
JP2866241B2 (ja) * | 1992-01-30 | 1999-03-08 | 株式会社東芝 | コンピュータシステムおよびスケジューリング方法 |
US5724565A (en) * | 1995-02-03 | 1998-03-03 | International Business Machines Corporation | Method and system for processing first and second sets of instructions by first and second types of processing systems |
GB2321546B (en) * | 1996-12-16 | 2001-03-28 | Ibm | Constructing a multiscalar program including a plurality of thread descriptors that each reference a next thread descriptor to be processed |
JP3456443B2 (ja) * | 1999-04-21 | 2003-10-14 | 日本電気株式会社 | 並列ソート装置及び該装置のプログラムを記録した記録媒体 |
JP3702813B2 (ja) * | 2001-07-12 | 2005-10-05 | 日本電気株式会社 | マルチスレッド実行方法及び並列プロセッサシステム |
JP4556554B2 (ja) * | 2004-08-25 | 2010-10-06 | セイコーエプソン株式会社 | 画像処理を並列処理で実行する際の負荷の割り付け |
KR101572879B1 (ko) * | 2009-04-29 | 2015-12-01 | 삼성전자주식회사 | 병렬 응용 프로그램을 동적으로 병렬처리 하는 시스템 및 방법 |
JP5463076B2 (ja) * | 2009-05-28 | 2014-04-09 | パナソニック株式会社 | マルチスレッドプロセッサ |
JP5504879B2 (ja) * | 2009-12-25 | 2014-05-28 | 富士通株式会社 | マルチスレッド処理方法及びマルチスレッド処理装置 |
US9563424B2 (en) * | 2012-08-17 | 2017-02-07 | Google Inc. | Native code instruction selection |
-
2015
- 2015-02-25 JP JP2015035777A patent/JP6443125B2/ja active Active
- 2015-12-14 US US14/968,084 patent/US9934036B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US9934036B2 (en) | 2018-04-03 |
US20160246579A1 (en) | 2016-08-25 |
JP2016157339A (ja) | 2016-09-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20150067662A1 (en) | Computer system and a method for generating an optimized program code | |
JP6245031B2 (ja) | コンパイルプログラム、コンパイル方法およびコンパイル装置 | |
JP5834997B2 (ja) | ベクトルプロセッサ、ベクトルプロセッサの処理方法 | |
JP2016508640A (ja) | ハードウェアポインタを使用したsimdコア内での分岐ブランチに対するソリューション | |
US20090106730A1 (en) | Predictive cost based scheduling in a distributed software build | |
US8954946B2 (en) | Static branch prediction method and code execution method for pipeline processor, and code compiling method for static branch prediction | |
TW201721410A (zh) | 用於執行疊接操作的裝置和方法 | |
US8786617B2 (en) | Parallelization of random number generation processing by employing GPU | |
EP2951682B1 (en) | Hardware and software solutions to divergent branches in a parallel pipeline | |
EP3106982A1 (en) | Determination of branch convergence in a sequence of program instructions | |
KR20180137521A (ko) | 벡터 연산들 수행시의 어드레스 충돌 관리 장치 및 방법 | |
JPWO2012105593A1 (ja) | データフローグラフ処理装置、データフローグラフ処理方法およびデータフローグラフ処理プログラム | |
JP2008052684A (ja) | 分岐履歴長の表示器、分岐予測システム及び分岐予測方法 | |
KR102704028B1 (ko) | True/false 벡터 인덱스 레지스터 | |
JP6443125B2 (ja) | コンパイラプログラム、コンピュータプログラム及びコンパイラ装置 | |
JP7225859B2 (ja) | 情報処理装置、情報処理プログラム、及び情報処理方法 | |
Hart | First experiences porting a parallel application to a hybrid supercomputer with OpenMP4. 0 device constructs | |
Lobeiras et al. | Designing efficient index-digit algorithms for CUDA GPU architectures | |
JP5278538B2 (ja) | コンパイルシステム、コンパイル方法およびコンパイルプログラム | |
US20140052960A1 (en) | Apparatus and method for generating vliw, and processor and method for processing vliw | |
US20110125805A1 (en) | Grouping mechanism for multiple processor core execution | |
JP2013101563A (ja) | プログラム変換装置、プログラム変換方法、および変換プログラム | |
US20120089823A1 (en) | Processing apparatus, compiling apparatus, and dynamic conditional branch processing method | |
JP6911544B2 (ja) | プログラム、情報処理装置及び情報処理方法 | |
JP2019067117A (ja) | コード生成装置、コード生成方法及びコード生成プログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20171215 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20180717 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20180828 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20181012 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20181030 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20181112 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6443125 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |