JP3810631B2 - 情報処理プログラムを記録した記録媒体 - Google Patents
情報処理プログラムを記録した記録媒体 Download PDFInfo
- Publication number
- JP3810631B2 JP3810631B2 JP2000360397A JP2000360397A JP3810631B2 JP 3810631 B2 JP3810631 B2 JP 3810631B2 JP 2000360397 A JP2000360397 A JP 2000360397A JP 2000360397 A JP2000360397 A JP 2000360397A JP 3810631 B2 JP3810631 B2 JP 3810631B2
- Authority
- JP
- Japan
- Prior art keywords
- block
- parallel processing
- thread
- execution
- threads
- 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.)
- Expired - Fee Related
Links
Images
Classifications
-
- 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5066—Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5017—Task decomposition
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multi Processors (AREA)
Description
【発明の属する技術分野】
本発明は情報処理プログラムを記録した記録媒体に関し、特に複数のプロセッサを有する計算装置に対して、所定の情報処理を実行させる情報処理プログラムを記録した記録媒体に関する。
【0002】
【従来の技術】
複数のプロセッサを有する計算装置にプログラムを実行させる場合には、対象となるプログラムを複数の並列処理ブロックに分割し、得られた並列処理ブロックを、処理の基本単位であるスレッドに分割して各プロセッサに分担して処理させる方法が一般的であった。
【0003】
図10は、このような方法により図の左側に示すプログラムを5つのプロセッサを有する計算装置で実行する場合の様子を示す図である。この例では、実行対象となるプログラムには2つの処理ループ(行番号「1」〜「3」および行番号「5」〜「7」)が含まれており、それぞれが第1の並列処理ブロックおよび第2の並列処理ブロックとされている。
【0004】
このプログラムが実行されると、各プロセッサに対応する処理の基本単位であるスレッド#1〜#5が生成され、スレッド#1は、最初の処理ループ(行番号「1」〜「3」のループ)の変数iが1から200までの処理を分担し、スレッド#2は、同じく最初の処理ループの変数iが201から400までの処理を分担する。同様にして、スレッド#3、スレッド#4、および、スレッド#5は、それぞれ、401から600、601から800、および、801から1000までの処理を分担する。
【0005】
【発明が解決しようとする課題】
しかし、従来においては、並列処理ブロック間には「バリア」と呼ばれる監視機構が設けられており、全てのスレッドの処理が終了するまで次の並列処理ブロックの実行が保留されていた。
【0006】
従って、複数の並列処理ブロックが存在する場合には、処理に要する時間は各並列処理ブロックにおいて最も遅いスレッドの処理時間を加算した時間となり、プロセッサ資源が有効に活用できない場合があるという問題点があった。
【0007】
本発明は、以上のような点に鑑みてなされたものであり、プロセッサ資源を有効活用することにより、処理時間を短縮することが可能な情報処理プログラムを記録した記録媒体を提供することを目的とする。
【0008】
【課題を解決するための手段】
本発明では上記課題を解決するために、図1に示す、複数のプロセッサ(プロセッサ群4)を有する計算装置に対して、所定の情報処理を実行させるプログラムを記録したコンピュータ読み取り可能な記録媒体において、実行対象となるプログラムを複数の並列処理ブロックに分割する並列処理ブロック分割ステップ1と、並列処理ブロック分割ステップ1によって分割された並列処理ブロックを、複数のプロセッサのそれぞれに分担して処理させるための基本処理単位であるスレッドに分割するスレッド分割ステップ2と、所定のプロセッサにおいて、スレッドの実行が終了した場合には、次の並列処理ブロックの実行を指示する指示ステップ3と、現在実行中のスレッドに対応する並列処理ブロックの番号を示すブロック番号をプロセッサごとにブロック番号記憶手段に記憶するブロック番号記憶ステップと、ブロック番号記憶ステップで記憶されたブロック番号に基づいて、現在実行中の並列処理ブロックごとにスレッドの実行状態を管理するブロック実行管理ステップとを有し、ブロック実行管理ステップでは、ブロック番号記憶手段における最新のブロック番号を最新ブロック番号記憶手段に記憶するとともに、並列処理ブロックごとに、当該並列処理ブロックにおいて実行が終了したスレッドの数を示す実行終了スレッド数を含むブロック制御情報域を設定して、プロセッサにおいて対応する並列処理ブロックのスレッドの実行が終了するたびに、実行終了スレッド数記憶手段に記憶した実行終了スレッド数をインクリメントするようにし、いずれかのプロセッサにおいてスレッドの実行が終了し、当該プロセッサに対応するブロック番号記憶手段内のブロック番号がインクリメントされたとき、インクリメントされたブロック番号が最新ブロック番号記憶手段内のブロック番号を超えた場合には、最新ブロック番号記憶手段のブロック番号をインクリメントするとともに、新たに実行させる並列処理ブロックに対応するブロック制御情報域を設定し、いずれかのプロセッサにおいてスレッドの実行が終了したとき、当該スレッドに対応するブロック制御情報域内の実行終了スレッド数が、対応する並列処理ブロックの全スレッド数に一致した場合には、当該ブロック制御情報域を削除することを特徴とする情報処理プログラムを記録した記録媒体が提供される。
【0009】
ここで、並列処理ブロック分割ステップ1は、実行対象となるプログラムを複数の並列処理ブロックに分割する。スレッド分割ステップ2は、並列処理ブロック分割ステップ1によって分割された並列処理ブロックを、複数のプロセッサのそれぞれに分担して処理させるための基本処理単位であるスレッドに分割する。指示ステップ3は、所定のプロセッサにおいて、スレッドの実行が終了した場合には、次の並列処理ブロックの実行を指示する。ブロック番号記憶ステップは、現在実行中のスレッドに対応する並列処理ブロックの番号を示すブロック番号をプロセッサごとに記憶する。ブロック実行管理ステップは、ブロック番号記憶ステップで記憶されたブロック番号に基づいて、現在実行中の並列処理ブロックごとにスレッドの実行状態を管理する。このブロック実行管理ステップでは、ブロック番号記憶手段における最新のブロック番号を最新ブロック番号記憶手段に記憶するとともに、並列処理ブロックごとに、当該並列処理ブロックにおいて実行が終了したスレッドの数を示す実行終了スレッド数を含むブロック制御情報域を設定して、プロセッサにおいて対応する並列処理ブロックのスレッドの実行が終了するたびに、実行終了スレッド数記憶手段に記憶した実行終了スレッド数をインクリメントする。そして、いずれかのプロセッサにおいてスレッドの実行が終了し、当該プロセッサに対応するブロック番号記憶手段内のブロック番号がインクリメントされたとき、インクリメントされたブロック番号が最新ブロック番号記憶手段内のブロック番号を超えた場合には、最新ブロック番号記憶手段のブロック番号をインクリメントするとともに、新たに実行させる並列処理ブロックに対応するブロック制御情報域を設定する。また、いずれかのプロセッサにおいてスレッドの実行が終了したとき、当該スレッドに対応するブロック制御情報域内の実行終了スレッド数が、対応する並列処理ブロックの全スレッド数に一致した場合には、当該ブロック制御情報域を削除する。
【0010】
【発明の実施の形態】
以下、本発明の実施の形態を図面を参照して説明する。
図1は、本発明の情報処理方法の原理を説明する原理図である。この図に示すように、本発明に係る情報処理方法は、プロセッサ群4を有する情報処理装置に所定の情報処理を実行させることを目的としている。ここで、本発明に係る情報処理方法は、並列処理ブロック分割ステップ1、スレッド分割ステップ2、および、指示ステップを有している。
【0011】
並列処理ブロック分割ステップ1は、実行対象となるプログラムを複数の並列処理ブロックに分割する。
スレッド分割ステップ2は、並列処理ブロック分割ステップ1によって分割された並列処理ブロックを、プロセッサ群4のそれぞれのプロセッサに分担して処理させるための基本処理単位であるスレッドに分割する。
【0012】
指示ステップ3は、所定のプロセッサにおいて、スレッドの実行が終了した場合には、次の並列処理ブロックの実行を指示するが、プログラムに所定の指示がなされている場合には、全てのスレッドの処理が終了するまで、次の並列処理ブロックの実行を指示しない。
【0013】
次に、以上の原理図の動作について説明する。
いま、実行対象のプログラムが入力されると、並列処理ブロック分割ステップ1は、これを複数の並列処理ブロックに分割する。なお、並列処理ブロックとは、例えば、ループ処理などのような一定の機能的な一体性を有する処理単位をいう。従って、プログラムに複数のループ処理が含まれている場合には、これらがそれぞれ並列処理ブロックとして分割される。
【0014】
スレッド分割ステップ2は、並列処理ブロック分割ステップ1によって生成された並列処理ブロックのそれぞれを実行される順に取得し、各プロセッサに分担させるべき処理単位としてのスレッドに分割する。図1の例では、5つのプロセッサが存在しているので、並列処理ブロックは5つのスレッドに分割される。
【0015】
プロセッサ群4は、スレッド分割ステップ2によって生成されたスレッドを、各プロセッサによって分担して処理する。このとき、プロセッサによって実行される処理の内容は、同一ではないので、処理が終了するタイミングは、プロセッサ毎に異なることになる。
【0016】
従来においては、全てのプロセッサによる処理が完了するまで、バリアが監視していたので、あるプロセッサが先に処理を終了した場合であっても他の全てのプロセッサが処理を完了するまで待つ必要があった。
【0017】
しかしながら、本実施の形態では、所定のプロセッサにおいて処理が完了した場合には、プログラムに指示がない限り、指示ステップ3が次の並列処理ブロックの実行を指示するので、先にスレッドの実行を終えたプロセッサは次の並列処理ブロックのスレッドを実行することになる。
【0018】
そして、実行処理が継続し、所定の指示がプログラムに出現した場合には、指示ステップ3が次の並列処理ブロックへの移行を保留するので、そこで、全てのスレッドが同期することになる。
【0019】
以上に説明したように、従来では各並列処理ブロックにおける最長のスレッドの実行時間を加算した値が実行時間であったが、本発明の情報処理方法によれば、所定の並列ブロックに全ての最長のスレッドが分担されない限りは、実行時間を短縮することが可能となる。
【0020】
次に、本発明の実施の形態について説明する。
図2は、本発明の情報処理方法を実行する実施の形態の構成例を示す図である。
【0021】
本発明の情報処理方法は、図1に示すような情報処理装置において実行される。ここで、情報処理装置10は、PU(Processor Unit)10a−1〜10a−5、ROM(Read Only Memory)10b、RAM(Random Access Memory)10c、HDD(Hard Disk Drive)10d、GB(Graphics Board)10e、I/F(Interface)10f、および、バス10gによって構成されており、その外部には表示装置11および入力装置12が接続されている。
【0022】
ここで、PU10a−1〜10a−5は、HDD10dに格納されたプログラムに従って、各種演算処理を実行するとともに、装置の各部を制御する。
ROM10bは、PU10a−1〜10a−5が実行する基本的なプログラムやデータ等を格納している。
【0023】
RAM10cは、PU10a−1〜10a−5が実行対象とするプログラムや演算途中のデータを一時的に格納する。
HDD10dは、PU10a−1〜10a−5が実行するプログラムやデータを格納している。具体的には、システムを管理し、基本的なユーザ操作環境を提供するための基本的なプログラムであるOS(Operating System)や、本発明に係るコンパイラ、リンカ、および、実行対象となるアプリケーションプログラム等を格納している。
【0024】
GB10eは、PU10a−1〜10a−5から供給された描画命令に従って描画処理を施し、得られた画像を映像信号に変換して出力する。
I/F10fは、入力装置12から出力されたデータを、装置内部の表現形式に変換して入力する。
【0025】
バス10gは、PU10a−1〜10a−5、ROM10b、RAM10c、HDD10d、GB10e、および、I/F10fを相互に接続し、これらの間で情報の授受を可能とする。
【0026】
なお、PU10a−1〜PU10a−5は、並行して処理を行うことが可能であり、実行対象のプログラムを複数の並列処理ブロックに分割して処理する。その際、共通のリソースであるROM10b等にアクセスする際には、排他制御により、他のユニットの影響を受けないように制御されている。
【0027】
また、以上の構成例は、説明を一部簡略化して示してあるが、要は複数のPUと、それぞれのPUが独立して動作するような構成を有していればよい。
図3は、図2に示す実施の形態において、HDD10dに格納されているOSが起動され、そのOS上で、本発明に係るコンパイラ、リンカ、および、ライブラリが実行される際のそれぞれの対応関係を示す図である。この図に示すように、実行対象となるソースプログラム20は、コンパイラ21によってコンパイル(翻訳)され、リンカ22によって基本的なプログラムであるライブラリ23に格納された必要なプログラムが付加され、実行形式プログラム24が生成される。なお、本発明は、ライブラリ23の詳細に係るものであり、以下に示す新たな制御方法を用いることにより、並列処理の高速化を図ることが可能となる。
【0028】
図4は、図3に示すソースプログラム20の一例を示す図である。
このソースプログラム20では、行番号「1」において、要素数が1000,2000,3000である整数型の配列m,n,pが宣言されている。行番号「3」においては並列処理を行うことが宣言されており、これは行番号「19」に示す「END」と対を構成している。行番号「4」から「8」まではループ処理を形成しており、変数iの値を配列mの各要素として格納する処理が実行される。また、行番号「9」から「13」までは他のループ処理を形成しており、変数iを2倍した値を配列nの各要素として格納する処理が実行される。更に、行番号「14」から「18」までは他のループ処理を形成しており、変数iを3倍した値を配列pの各要素として格納する処理が実行される。
【0029】
以下では、行番号「4」から「8」までを第1のループ処理、行番号「9」から「13」までを第2のループ処理、行番号「14」から「18」までを第3のループ処理と呼ぶことにする。行番号「8」,「13」,「18」に示す「NOWAIT」は、ウエイト処理を実行しないことを示しており、この一行を付加することにより、バリア機能が停止されることになる。
【0030】
なお、処理の並列数は、図示せぬ初期設定用のプログラムによって指定することができる。また、プログラム中においても、所定のコマンドを配置することにより、並列数を任意に指定することができる。
【0031】
以上のようなソースプログラム20は、コンパイラ21によって翻訳され、リンカ22によってライブラリ23に含まれる必要なプログラムが付加され、実行形式プログラム24に変換される。なお、コンパイルの際には、並列処理の単位である並列処理ブロックに分割され、それぞれの並列処理ブロックにはユニークな番号である並列処理ブロック番号が付与される。図4に示すソースプログラムの例では、第1〜第3のループ処理のそれぞれが並列処理ブロックであるので、例えば、1〜3の並列ブロック番号がそれぞれの並列処理ブロックに付与される。
【0032】
図5は、実行形式プログラム24が実行された際の動作を説明するための図である。この図において、実行形式プログラム24は、図4に示すソースプログラム20が機械語に翻訳されたものであり、前述した第1〜第3のループ処理を有している。スレッド制御部60および第1〜第5のスレッド61〜65は、リンカ22によって付加された並列処理用のプログラムであり、実行形式プログラム24から呼び出されて実行されるサブルーチン形式のプログラムである。
【0033】
ここで、スレッド制御部60は、並列処理ブロックである第1〜第3のループ処理から呼び出された場合には、第1〜第5のスレッド61〜65を起動し、処理を実行させるとともに、これらのスレッドの実行状態の管理を行う。第1〜第5のスレッドは、PU10a−1〜10a−5によって実行される処理の基本単位である。
【0034】
図6は、図5に示すスレッド制御部60および第1〜第5のスレッド61〜65が機能する際にRAM10cに確保する記憶領域を示す図である。この図において、スレッド情報域71〜75は第1〜第5のスレッド61〜65のそれぞれが確保している領域であり、各情報域にはそのスレッドが現在実行している並列処理ブロックの番号を示す並列処理ブロック番号71a〜75aが格納されている。並列処理制御情報域76は、スレッド制御部60が確保している領域であり、全てのスレッドのうち最先のスレッドが実行している並列処理ブロック番号76aが格納されている。
【0035】
並列処理ブロック制御情報域77,78は、現在実行中の並列処理ブロックに対応して生成される情報域であり、当該並列処理ブロックの処理を終了したスレッドの個数である実行終了スレッド数77a,78aが格納されている。この例では、2つの並列処理ブロック制御情報域77,78が生成されており、2つの並列処理ブロックが実行中の状態に対応している。なお、この例では、第1のスレッド61〜第4のスレッド64は、並列処理ブロック制御情報域77に対応する並列処理ブロックを実行中であり、第5のスレッド65は、並列処理ブロック制御情報域78に対応する並列処理ブロックを実行中である。
【0036】
なお、3以上の並列処理ブロックが実行中である場合にはその数に対応した並列処理ブロック制御情報域が生成され、また、1つの並列ブロックが実行中である場合には1つの並列処理ブロック制御情報域が生成される。
【0037】
次に、図7を参照して、図4に示すソースプログラム20から生成された実行形式プログラム24が実行される際の、図5および図6に示すブロック図の動作について説明する。
【0038】
実行形式プログラム24が起動されると、並列処理ブロック番号が「1」である第1のループ処理が実行の対象となる。第1のループ処理は、スレッド制御部60をサブルーチンコールし、引数等を引き渡すとともに、処理の開始を依頼する。すると、スレッド制御部60は、並列処理制御情報域76の並列処理ブロック番号を「1」に設定するとともに、並列処理ブロック制御情報域77を生成し、実行終了スレッド数77aを「0」に初期設定する。続いて、スレッド制御部60は、第1〜第5のスレッドを生成して、処理の実行を開始する。第1〜第5のスレッド61〜65は、それぞれ、スレッド情報域71〜75を確保するとともに、現在実行中である第1のループ処理に対応する並列処理ブロック番号「1」を並列処理ブロック番号71a〜75aとして格納する。
【0039】
図7は、スレッド情報域71〜75と、並列処理制御情報域76に格納されているデータを示す図であり、左端の第1列目から第5列目までがスレッド情報域71〜75にそれぞれ対応し、右端の列が並列処理制御情報域76に対応している。この図の第1行目は、処理が開始された当初の状態を示しており、開始当初は第1のスレッド61のみが並列処理ブロック番号「1」を格納しておりその他はまだ未格納の状態である。第2行目では、5列目以外は全て「1」の状態となっており、第5のスレッド65以外は全て第1のループ処理を実行中の状態であることが示されている。
【0040】
このような状態において、第2のスレッド62が第1のループ処理の実行を終了すると、スレッド制御部60にその旨が通知される。すると、スレッド制御部60は、第1の処理ループの末尾に「NOWAIT」が挿入されていることを検出し、バリア機能を実行せずに次の処理に移行することを認識し、先ず、実行終了スレッド数77aを「0」から「1」に更新する。次に、スレッド制御部60は、並列処理制御情報域76の並列処理ブロック番号76aを「1」から「2」に更新し、続いて、第2のループ処理に対応した並列処理ブロック制御情報域78を生成して実行終了スレッド数78aを「0」に初期設定する。
【0041】
以上のような動作が繰り返され、全てのスレッドが第1のループ処理を終了した場合には、実行終了スレッド数77aが「5」になるので、その場合には、並列処理ブロック制御情報域77がRAM10c上から削除されることになる。
【0042】
そして、全てのスレッドが第3のループ処理を終了した場合には、図7の最後の行に示すように、並列処理ブロック番号71a〜75aが全て「3」の状態になり、プログラムの実行が完了することになる。
【0043】
従って、以上の実施の形態では、図10に示す従来例とは異なり、図8に示すようにバリア機能が実行されることなく、各スレッドが他のスレッドの実行状態に拘わりなく、次の並列処理ブロックを実行することになる。従って、図10に示す従来例では、トータルの実行時間は各並列処理ブロックで最も遅いスレッドの実行時間の合計になるが、本実施の形態ではそれ以下の時間で実行することが可能となる。
【0044】
なお、以上の実施の形態では、5つのPU10a−1〜10a−5により、5つのスレッドで処理する場合を例に挙げて説明したが、本発明はこのような場合に限定されるものではなく、これ以外の組み合わせでも本発明を適用可能であることはいうまでもない。
【0045】
また、以上の実施の形態では、スレッドの管理をライブラリ23によって行うようにしたが、コンパイラ21によって同様のプログラムを実行形式プログラム24に付加するようにしても同様の効果を得ることができる。なお、付加の方法としては、例えば、インライン展開やマクロ等を用いることができる。
【0046】
更に、以上の実施の形態では、全ての並列処理ブロックの最後に「NOWAIT」を挿入したので、各スレッドは、他のスレッドとは無関係に最後の並列処理ブロックまで処理を継続することになるが、この「NOWAIT」を除外することにより、そこで、スレッドの足並みを一旦揃えることも可能である。このように「NOWAIT」を適宜挿入することにより、バリア機能を有効または無効にすることが可能となる。
【0047】
続いて、図9を参照し、スレッド制御部60において実行されるフローチャートについて説明する。このフローチャートは、第1〜第5のスレッド61〜65において処理が終了した場合に呼び出されて実行される。このフローチャートが開始されると、以下のステップが実行される。
【0048】
ステップS10:
該当するスレッド情報域の並列処理ブロック番号を1だけインクリメントする。
【0049】
ステップS11:
変数jに並列処理制御情報域の並列処理ブロック番号を代入する。
ステップS12:
変数kに該当するスレッド情報域の並列処理ブロック番号を代入する。
【0050】
ステップS13:
変数jの値が変数kの値以上であるか否か、即ち、当該スレッドが新たな並列処理ブロックを実行するか否かを判定し、新たな並列処理ブロックを実行する場合にはステップS14に進み、それ以外の場合にはステップS17に進む。
【0051】
ステップS14:
並列処理制御情報域76の並列処理ブロック番号76aを1だけインクリメントする。
【0052】
ステップS15:
新たな並列処理ブロックに対応する並列処理ブロック制御情報域を生成するとともに、実行終了スレッド数を「0」に初期設定する。
【0053】
ステップS16:
新たなスレッドの実行処理を開始する。
ステップS17:
スレッド情報域の並列処理ブロック番号を参照し、実行対象となる並列処理ブロックを特定する。
【0054】
ステップS18:
ステップS17で特定した並列処理ブロックを実行する。
ステップS19:
該当する並列処理ブロック制御情報域の実行終了スレッド数をインクリメントする。
【0055】
ステップS20:
ステップS19におけるインクリメントの結果、実行終了スレッド数がスレッド数(図6の例では「5」)と等しくなった場合には、ステップS21に進み、それ以外の場合には処理を終了する。
【0056】
ステップS21:
処理が終了した並列処理ブロック制御情報域を削除する。
以上の処理によれば、前述した機能を実現することが可能となる。
【0057】
最後に、上記の処理機能は、コンピュータによって実現することができる。その場合、情報処理装置が有すべき機能の処理内容は、コンピュータで読み取り可能な記録媒体に記録されたプログラムに記述されており、このプログラムをコンピュータで実行することにより、上記処理がコンピュータで実現される。コンピュータで読み取り可能な記録媒体としては、磁気記録装置や半導体メモリ等がある。市場へ流通させる場合には、CD−ROM(Compact Disk Read Only Memory)やフロッピーディスク等の可搬型記録媒体にプログラムを格納して流通させたり、ネットワークを介して接続されたコンピュータの記憶装置に格納しておき、ネットワークを通じて他のコンピュータに転送することもできる。コンピュータで実行する際には、コンピュータ内のハードディスク装置等にプログラムを格納しておき、メインメモリにロードして実行する。
【0058】
(付記1) 複数のプロセッサを有する計算装置に対して、所定の情報処理を実行させる情報処理方法において、
実行対象となるプログラムを複数の並列処理ブロックに分割する並列処理ブロック分割ステップと、
前記並列処理ブロック分割ステップによって分割された並列処理ブロックを、前記複数のプロセッサのそれぞれに分担して処理させるための基本処理単位であるスレッドに分割するスレッド分割ステップと、
所定のプロセッサにおいて、前記スレッドの実行が終了した場合には、次の並列処理ブロックの実行を指示する指示ステップと、
を有することを特徴とする情報処理方法。
【0059】
(付記2) 前記指示ステップは、前記実行対象となるプログラムに所定の指示がなされている場合には、全てのスレッドの処理が終了するまで、次の並列処理ブロックの実行を指示しないことを特徴とする付記1記載の情報処理方法。
【0060】
(付記3) 複数のプロセッサを有する計算装置に対して、所定の情報処理を実行させるプログラムを記録したコンピュータ読み取り可能な記録媒体において、
コンピュータを、
実行対象となるプログラムを複数の並列処理ブロックに分割する並列処理ブロック分割手段、
前記並列処理ブロック分割手段によって分割された並列処理ブロックを、前記複数のプロセッサのそれぞれに分担して処理させるための基本処理単位であるスレッドに分割するスレッド分割手段、
所定のプロセッサにおいて、前記スレッドの実行が終了した場合には、次の並列処理ブロックの実行を指示する指示手段、
として機能させるプログラムを記録したコンピュータ読み取り可能な記録媒体。
【0061】
(付記4) 複数のプロセッサを有し、所定の情報処理を実行する情報処理装置において、
実行対象となるプログラムを複数の並列処理ブロックに分割する並列処理ブロック分割手段と、
前記並列処理ブロック分割手段によって分割された並列処理ブロックを、前記複数のプロセッサのそれぞれに分担して処理させるための基本処理単位であるスレッドに分割するスレッド分割手段と、
所定のプロセッサにおいて、前記スレッドの実行が終了した場合には、次の並列処理ブロックの実行を指示する指示手段と、
を有することを特徴とする情報処理装置。
【0062】
(付記5) 複数のプロセッサを有する計算装置に対して、所定の情報処理を実行させるプログラムを記録したコンピュータ読み取り可能な記録媒体において、
コンピュータを、
複数の並列処理ブロックに分割された実行対象のプログラムの所定の並列処理ブロックから実行要求がなされた場合には、複数のスレッドを生成し、各プロセッサに処理を分担させる処理分担手段、
何れかのスレッドの処理が終了した場合には、次の並列処理ブロックに係るスレッドの実行を指示する実行指示手段、
として機能させるプログラムを記録したコンピュータ読み取り可能な記録媒体。
【0063】
(付記6) 前記実行指示手段は、前記実行対象となるプログラムに所定の指示がなされている場合には、全てのスレッドの処理が終了するまで、次の並列処理ブロックの実行を指示しないことを特徴とする付記5記載の記録媒体。
【0064】
【発明の効果】
以上説明したように本発明では、複数のプロセッサを有する計算装置に対して、所定の情報処理を実行させるプログラムを記録したコンピュータ読み取り可能な記録媒体において、実行対象となるプログラムを複数の並列処理ブロックに分割する並列処理ブロック分割手段と、並列処理ブロック分割手段によって分割された並列処理ブロックを、複数のプロセッサのそれぞれに分担して処理させるための基本処理単位であるスレッドに分割するスレッド分割手段と、所定のプロセッサにおいて、スレッドの実行が終了した場合には、次の並列処理ブロックの実行を指示する指示手段と、現在実行中のスレッドに対応する並列処理ブロックの番号を示すブロック番号をプロセッサごとに記憶するブロック番号記憶手段と、ブロック番号記憶手段に記憶されたブロック番号に基づいて、現在実行中の並列処理ブロックごとにスレッドの実行状態を管理するブロック実行管理手段として、コンピュータを機能させるようにし、ブロック実行管理手段が、ブロック番号記憶手段における最新のブロック番号を記憶する最新ブロック番号記憶手段と、並列処理ブロックごとに、当該並列処理ブロックにおいて実行が終了したスレッドの数を示す実行終了スレッド数を含むブロック制御情報域を設定し、プロセッサにおいて対応する並列処理ブロックのスレッドの実行が終了するたびに、実行終了スレッド数をインクリメントする実行終了スレッド数記憶手段とを含み、いずれかのプロセッサにおいてスレッドの実行が終了し、当該プロセッサに対応するブロック番号記憶手段内のブロック番号がインクリメントされたとき、インクリメントされたブロック番号が最新ブロック番号記憶手段内のブロック番号を超えた場合には、最新ブロック番号記憶手段のブロック番号をインクリメントするとともに、新たに実行させる並列処理ブロックに対応するブロック制御情報域を設定し、いずれかのプロセッサにおいてスレッドの実行が終了したとき、当該スレッドに対応するブロック制御情報域内の実行終了スレッド数が、対応する並列処理ブロックの全スレッド数に一致した場合には、当該ブロック制御情報域を削除するようにしたので、並列処理ブロックが連続して処理される場合には、従来のようなバリアによる遅延を排除することにより、処理速度を向上させることが可能となる。また、並列処理ブロックごとのプロセッサに対するスレッド割り当てを統合的に管理する必要がなくなり、簡単な制御で処理速度を向上させることができる。
【図面の簡単な説明】
【図1】本発明の動作原理を説明する原理図である。
【図2】本発明の実施の形態の構成例を示すブロック図である。
【図3】図2に示す実施の形態において、HDDに格納されているOSが起動され、そのOS上で、本発明に係るコンパイラ、リンカ、および、ライブラリが実行される際のそれぞれの対応関係を示す図である。
【図4】図3に示すソースプログラムの一例を示す図である。
【図5】実行形式プログラムが実行された際の動作を説明するための図である。
【図6】図5に示すスレッド制御部および第1〜第5のスレッドが機能する際にRAMに確保している記憶領域を示す図である。
【図7】図4に示すソースプログラムから生成された実行形式プログラムが実行される際の、図5および図6に示すブロック図の動作について説明する図である。
【図8】本実施の形態におけるスレッドの実行形態を説明するための図である。
【図9】図5に示すスレッド制御部において実行される処理の一例を説明するフローチャートである。
【図10】従来例におけるスレッドの実行形態を説明するための図である。
【符号の説明】
1 並列処理ブロック分割ステップ
2 スレッド分割ステップ
3 指示ステップ
4 プロセッサ群
10a−1〜10a−5 PU
10b ROM
10c RAM
10d HDD
10e GB
10f I/F
10g バス
11 表示装置
12 入力装置
20 ソースプログラム
21 コンパイラ
22 リンカ
23 ライブラリ
24 実行形式プログラム
Claims (2)
- 複数のプロセッサを有する計算装置に対して、所定の情報処理を実行させるプログラムを記録したコンピュータ読み取り可能な記録媒体において、
コンピュータを、
実行対象となるプログラムを複数の並列処理ブロックに分割する並列処理ブロック分割手段、
前記並列処理ブロック分割手段によって分割された前記並列処理ブロックを、前記複数のプロセッサのそれぞれに分担して処理させるための基本処理単位であるスレッドに分割するスレッド分割手段、
所定のプロセッサにおいて、前記スレッドの実行が終了した場合には、次の前記並列処理ブロックの実行を指示する指示手段、
現在実行中の前記スレッドに対応する前記並列処理ブロックの番号を示すブロック番号を前記プロセッサごとに記憶するブロック番号記憶手段、
前記ブロック番号記憶手段における最新の前記ブロック番号を記憶する最新ブロック番号記憶手段と、前記並列処理ブロックごとに、当該並列処理ブロックにおいて実行が終了した前記スレッドの数を示す実行終了スレッド数を含むブロック制御情報域を設定し、前記プロセッサにおいて対応する前記並列処理ブロックの前記スレッドの実行が終了するたびに、前記実行終了スレッド数をインクリメントする実行終了スレッド数記憶手段とを含み、いずれかの前記プロセッサにおいて前記スレッドの実行が終了し、当該プロセッサに対応する前記ブロック番号記憶手段内の前記ブロック番号がインクリメントされたとき、インクリメントされた前記ブロック番号が前記最新ブロック番号記憶手段内の前記ブロック番号を超えた場合には、前記最新ブロック番号記憶手段の前記ブロック番号をインクリメントするとともに、新たに実行させる前記並列処理ブロックに対応する前記ブロック制御情報域を設定し、いずれかの前記プロセッサにおいて前記スレッドの実行が終了したとき、当該スレッドに対応する前記ブロック制御情報域内の前記実行終了スレッド数が、対応する前記並列処理ブロックの全スレッド数に一致した場合には、当該ブロック制御情報域を削除するブロック実行管理手段、
として機能させるプログラムを記録したコンピュータ読み取り可能な記録媒体。 - 前記指示手段は、前記実行対象となるプログラムに所定の指示がなされている場合には、全ての前記スレッドの処理が終了するまで、次の前記並列処理ブロックの実行を指示しないことを特徴とする請求項1記載の記録媒体。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2000360397A JP3810631B2 (ja) | 2000-11-28 | 2000-11-28 | 情報処理プログラムを記録した記録媒体 |
US09/838,166 US7058945B2 (en) | 2000-11-28 | 2001-04-20 | Information processing method and recording medium therefor capable of enhancing the executing speed of a parallel processing computing device |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2000360397A JP3810631B2 (ja) | 2000-11-28 | 2000-11-28 | 情報処理プログラムを記録した記録媒体 |
Publications (3)
Publication Number | Publication Date |
---|---|
JP2002163238A JP2002163238A (ja) | 2002-06-07 |
JP2002163238A5 JP2002163238A5 (ja) | 2004-12-09 |
JP3810631B2 true JP3810631B2 (ja) | 2006-08-16 |
Family
ID=18832012
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2000360397A Expired - Fee Related JP3810631B2 (ja) | 2000-11-28 | 2000-11-28 | 情報処理プログラムを記録した記録媒体 |
Country Status (2)
Country | Link |
---|---|
US (1) | US7058945B2 (ja) |
JP (1) | JP3810631B2 (ja) |
Families Citing this family (29)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2000207223A (ja) * | 1999-01-12 | 2000-07-28 | Matsushita Electric Ind Co Ltd | 並列処理向けのプログラム処理方法および装置、並びに並列処理向けのプログラム処理を実行するプログラムを記録した記録媒体および並列処理向けの命令列を記録した記録媒体 |
US7496654B2 (en) * | 2001-06-29 | 2009-02-24 | Microsoft Corporation | Multi-threaded system for activating a process using a script engine and publishing data descriptive of the status of the process |
US7069556B2 (en) * | 2001-09-27 | 2006-06-27 | Intel Corporation | Method and apparatus for implementing a parallel construct comprised of a single task |
US20040083475A1 (en) * | 2002-10-25 | 2004-04-29 | Mentor Graphics Corp. | Distribution of operations to remote computers |
CA2442803A1 (en) * | 2003-09-26 | 2005-03-26 | Ibm Canada Limited - Ibm Canada Limitee | Structure and method for managing workshares in a parallel region |
JP2006178554A (ja) * | 2004-12-21 | 2006-07-06 | Hitachi Ltd | 分散ポリシー連携方法 |
US7770170B2 (en) * | 2005-07-12 | 2010-08-03 | Microsoft Corporation | Blocking local sense synchronization barrier |
GB0524720D0 (en) * | 2005-12-05 | 2006-01-11 | Imec Inter Uni Micro Electr | Ultra low power ASIP architecture II |
CA2638453C (en) | 2006-03-14 | 2010-11-09 | Transgaming Technologies Inc. | General purpose software parallel task engine |
US20080189718A1 (en) * | 2007-02-02 | 2008-08-07 | The Mathworks, Inc. | Scalable architecture |
US8380880B2 (en) | 2007-02-02 | 2013-02-19 | The Mathworks, Inc. | Scalable architecture |
US8010954B2 (en) * | 2007-02-14 | 2011-08-30 | The Mathworks, Inc. | Parallel programming interface to dynamically allocate program portions |
US8250550B2 (en) * | 2007-02-14 | 2012-08-21 | The Mathworks, Inc. | Parallel processing of distributed arrays and optimum data distribution |
US8239845B2 (en) * | 2007-02-14 | 2012-08-07 | The Mathworks, Inc. | Media for using parallel processing constructs |
US8239844B2 (en) * | 2007-02-14 | 2012-08-07 | The Mathworks, Inc. | Method of using parallel processing constructs and dynamically allocating program portions |
US8239846B2 (en) * | 2007-02-14 | 2012-08-07 | The Mathworks, Inc. | Device for performing parallel processing of distributed arrays |
US8255890B2 (en) | 2007-02-14 | 2012-08-28 | The Mathworks, Inc. | Media for performing parallel processing of distributed arrays |
US8255889B2 (en) * | 2007-02-14 | 2012-08-28 | The Mathworks, Inc. | Method of using parallel processing constructs and dynamically allocating program portions |
KR101458028B1 (ko) * | 2007-05-30 | 2014-11-04 | 삼성전자 주식회사 | 병렬 처리 장치 및 방법 |
US9678775B1 (en) * | 2008-04-09 | 2017-06-13 | Nvidia Corporation | Allocating memory for local variables of a multi-threaded program for execution in a single-threaded environment |
US8776030B2 (en) * | 2008-04-09 | 2014-07-08 | Nvidia Corporation | Partitioning CUDA code for execution by a general purpose processor |
WO2009131167A1 (ja) * | 2008-04-23 | 2009-10-29 | 日本電気株式会社 | マルチプロセッサ制御装置、その方法及びそのプログラム |
JP4381459B1 (ja) * | 2008-06-27 | 2009-12-09 | 株式会社東芝 | 情報処理装置、粒度調整方法およびプログラム |
JP5132459B2 (ja) * | 2008-07-18 | 2013-01-30 | キヤノン株式会社 | データ処理装置、データ処理装置の制御方法、記憶媒体及びプログラム |
US8924984B2 (en) * | 2009-06-26 | 2014-12-30 | Microsoft Corporation | Lock-free barrier with dynamic updating of participant count |
GB2486485B (en) * | 2010-12-16 | 2012-12-19 | Imagination Tech Ltd | Method and apparatus for scheduling the issue of instructions in a microprocessor using multiple phases of execution |
US8607247B2 (en) * | 2011-11-03 | 2013-12-10 | Advanced Micro Devices, Inc. | Method and system for workitem synchronization |
CN110347508A (zh) * | 2019-07-02 | 2019-10-18 | Oppo广东移动通信有限公司 | 应用程序的线程分配方法、装置、设备及可读存储介质 |
JP7293929B2 (ja) * | 2019-07-16 | 2023-06-20 | マツダ株式会社 | エンジンの試験方法及び試験装置 |
Family Cites Families (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4951193A (en) * | 1986-09-05 | 1990-08-21 | Hitachi, Ltd. | Parallel computer with distributed shared memories and distributed task activating circuits |
JPH01108638A (ja) * | 1987-10-21 | 1989-04-25 | Hitachi Ltd | 並列化コンパイル方式 |
US4965718A (en) * | 1988-09-29 | 1990-10-23 | International Business Machines Corporation | Data processing system incorporating a memory resident directive for synchronizing multiple tasks among plurality of processing elements by monitoring alternation of semaphore data |
JP3039953B2 (ja) * | 1989-04-28 | 2000-05-08 | 株式会社日立製作所 | 並列化装置 |
IL93239A (en) * | 1990-02-01 | 1993-03-15 | Technion Res & Dev Foundation | High flow-rate synchronizer/schedular apparatus for multiprocessors |
EP0475282B1 (en) * | 1990-09-14 | 1998-12-16 | Hitachi, Ltd. | Synchronous method and apparatus for processors |
US5367678A (en) * | 1990-12-06 | 1994-11-22 | The Regents Of The University Of California | Multiprocessor system having statically determining resource allocation schedule at compile time and the using of static schedule with processor signals to control the execution time dynamically |
US5630128A (en) * | 1991-08-09 | 1997-05-13 | International Business Machines Corporation | Controlled scheduling of program threads in a multitasking operating system |
CA2078315A1 (en) * | 1991-09-20 | 1993-03-21 | Christopher L. Reeve | Parallel processing apparatus and method for utilizing tiling |
JPH05265975A (ja) * | 1992-03-16 | 1993-10-15 | Hitachi Ltd | 並列計算処理装置 |
US6256704B1 (en) * | 1993-09-16 | 2001-07-03 | International Business Machines Corporation | Task management for data accesses to multiple logical partitions on physical disk drives in computer systems |
JP3231571B2 (ja) * | 1994-12-20 | 2001-11-26 | 日本電気株式会社 | 順序付きマルチスレッド実行方法とその実行装置 |
US6078945A (en) * | 1995-06-21 | 2000-06-20 | Tao Group Limited | Operating system for use with computer networks incorporating two or more data processors linked together for parallel processing and incorporating improved dynamic load-sharing techniques |
US5812844A (en) * | 1995-12-07 | 1998-09-22 | Microsoft Corporation | Method and system for scheduling the execution of threads using optional time-specific scheduling constraints |
JP2882475B2 (ja) * | 1996-07-12 | 1999-04-12 | 日本電気株式会社 | スレッド実行方法 |
US6418460B1 (en) * | 1997-02-18 | 2002-07-09 | Silicon Graphics, Inc. | System and method for finding preempted threads in a multi-threaded application |
US5956802A (en) * | 1997-04-11 | 1999-09-28 | Wagner Spray Tech Corporation | Painting apparatus and assembly |
JP3209205B2 (ja) * | 1998-04-28 | 2001-09-17 | 日本電気株式会社 | プロセッサにおけるレジスタ内容の継承装置 |
US6954922B2 (en) * | 1998-04-29 | 2005-10-11 | Sun Microsystems, Inc. | Method apparatus and article of manufacture for time profiling multi-threaded programs |
US6418458B1 (en) * | 1998-10-02 | 2002-07-09 | Ncr Corporation | Object-oriented prioritized work thread pool |
US6286027B1 (en) * | 1998-11-30 | 2001-09-04 | Lucent Technologies Inc. | Two step thread creation with register renaming |
US6378066B1 (en) * | 1999-02-04 | 2002-04-23 | Sun Microsystems, Inc. | Method, apparatus, and article of manufacture for developing and executing data flow programs, and optimizing user input specifications |
JP3571976B2 (ja) * | 1999-11-08 | 2004-09-29 | 富士通株式会社 | デバッグ装置及び方法並びにプログラム記録媒体 |
JP2001147819A (ja) * | 1999-11-19 | 2001-05-29 | Fujitsu Ltd | 最適化装置および記録媒体 |
JP2001167060A (ja) * | 1999-12-07 | 2001-06-22 | Hitachi Ltd | タスク並列化方法 |
US6651163B1 (en) * | 2000-03-08 | 2003-11-18 | Advanced Micro Devices, Inc. | Exception handling with reduced overhead in a multithreaded multiprocessing system |
-
2000
- 2000-11-28 JP JP2000360397A patent/JP3810631B2/ja not_active Expired - Fee Related
-
2001
- 2001-04-20 US US09/838,166 patent/US7058945B2/en not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
US7058945B2 (en) | 2006-06-06 |
US20020078125A1 (en) | 2002-06-20 |
JP2002163238A (ja) | 2002-06-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3810631B2 (ja) | 情報処理プログラムを記録した記録媒体 | |
US9244883B2 (en) | Reconfigurable processor and method of reconfiguring the same | |
US5832308A (en) | Apparatus for controlling data transfer between external interfaces through buffer memory using a FIFO, an empty signal, and a full signal | |
JP5576798B2 (ja) | 決定論的マルチプロセッシング(deterministicmultiprocessing) | |
JP2810896B2 (ja) | データ処理装置 | |
KR101150661B1 (ko) | 정보 처리 장치 및 메모리 영역 관리 방법 | |
JP3797570B2 (ja) | セマフォ命令用のセマフォ・バッファを用いた装置と方法 | |
US5710912A (en) | Method and apparatus for enabling a computer system to adjust for latency assumptions | |
CN115543530A (zh) | 一种虚拟机迁移方法以及相关装置 | |
JPS62239226A (ja) | 直接アクセス記憶装置のデ−タ・レコ−ドの部分的変更方法 | |
JPH0760388B2 (ja) | パイプライン制御回路 | |
JP3639366B2 (ja) | アドレス空間共有システム | |
TWI776465B (zh) | 設置於圖形處理器中的二次卸載裝置和方法 | |
JP5187944B2 (ja) | コンピュータ使用可能コードを実行する装置及び方法 | |
JP2933628B2 (ja) | 主記憶装置管理方法および計算機システム | |
JP2975253B2 (ja) | 多重化ボリューム装置 | |
TWI807301B (zh) | 適應於圖形處理器的二次卸載的編譯裝置和方法和電腦程式產品 | |
JPS6032220B2 (ja) | 情報処理装置 | |
JP7137058B2 (ja) | 演算処理装置、情報処理装置及び情報処理装置の制御方法 | |
JPH0346033A (ja) | ジヨブ間データ転送制御方法 | |
JP3511935B2 (ja) | マルチスレッド・プログラムにおけるファイル書込方式 | |
JPS63316133A (ja) | 演算処理装置 | |
JP2024047740A (ja) | 電子制御装置、車両制御システム、及びタスクの制御方法 | |
JPH04139545A (ja) | データベース更新処理方式 | |
JP3211234B2 (ja) | 情報処理装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20051206 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060206 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20060228 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060426 |
|
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: 20060523 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20060524 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100602 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110602 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120602 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120602 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130602 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140602 Year of fee payment: 8 |
|
LAPS | Cancellation because of no payment of annual fees |