JP2002163238A - 情報処理方法および記録媒体 - Google Patents

情報処理方法および記録媒体

Info

Publication number
JP2002163238A
JP2002163238A JP2000360397A JP2000360397A JP2002163238A JP 2002163238 A JP2002163238 A JP 2002163238A JP 2000360397 A JP2000360397 A JP 2000360397A JP 2000360397 A JP2000360397 A JP 2000360397A JP 2002163238 A JP2002163238 A JP 2002163238A
Authority
JP
Japan
Prior art keywords
parallel processing
processing block
program
thread
execution
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.)
Granted
Application number
JP2000360397A
Other languages
English (en)
Other versions
JP2002163238A5 (ja
JP3810631B2 (ja
Inventor
Katsumi Ichinose
克己 一瀬
Katsuyoshi Moriya
勝由 守屋
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.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2000360397A priority Critical patent/JP3810631B2/ja
Priority to US09/838,166 priority patent/US7058945B2/en
Publication of JP2002163238A publication Critical patent/JP2002163238A/ja
Publication of JP2002163238A5 publication Critical patent/JP2002163238A5/ja
Application granted granted Critical
Publication of JP3810631B2 publication Critical patent/JP3810631B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5066Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5017Task 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)

Abstract

(57)【要約】 【課題】 並列処理計算装置の実行速度を向上させる。 【解決手段】 並列処理ブロック分割ステップ1は、実
行対象となるプログラムを複数の並列処理ブロックに分
割する。スレッド分割ステップ2は、並列処理ブロック
分割ステップ1によって生成された並列処理ブロック
を、プロセッサ群4の個数に応じた複数のスレッドに分
割する。プロセッサ群4は、スレッド分割ステップ2に
よって生成されたスレッドを実行する。指示ステップ3
は、プロセッサ群4のそれぞれのプロセッサがスレッド
の実行を終了した場合であって、プログラムに所定の指
示がなされていない場合には、当該プロセッサに対して
次の並列処理ブロックに係るスレッドを実行するように
指示する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は情報処理方法および
記録媒体に関し、特に複数のプロセッサを有する計算装
置に対して、所定の情報処理を実行させる情報処理方法
および記録媒体に関する。
【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、6
01から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〜10
a−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に格納されたプログラムに従って、各種演
算処理を実行するとともに、装置の各部を制御する。R
OM10bは、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/F10
fは、入力装置12から出力されたデータを、装置内部
の表現形式に変換して入力する。
【0025】バス10gは、PU10a−1〜10a−
5、ROM10b、RAM10c、HDD10d、GB
10e、および、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,200
0,3000である整数型の配列m,n,pが宣言され
ている。行番号「3」においては並列処理を行うことが
宣言されており、これは行番号「19」に示す「EN
D」と対を構成している。行番号「4」から「8」まで
はループ処理を形成しており、変数iの値を配列mの各
要素として格納する処理が実行される。また、行番号
「9」から「13」までは他のループ処理を形成してお
り、変数iを2倍した値を配列nの各要素として格納す
る処理が実行される。更に、行番号「14」から「1
8」までは他のループ処理を形成しており、変数iを3
倍した値を配列pの各要素として格納する処理が実行さ
れる。
【0029】以下では、行番号「4」から「8」までを
第1のループ処理、行番号「9」から「13」までを第
2のループ処理、行番号「14」から「18」までを第
3のループ処理と呼ぶことにする。行番号「8」,「1
3」,「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のスレッドは、PU1
0a−1〜10a−5によって実行される処理の基本単
位である。
【0034】図6は、図5に示すスレッド制御部60お
よび第1〜第5のスレッド61〜65が機能する際にR
AM10cに確保する記憶領域を示す図である。この図
において、スレッド情報域71〜75は第1〜第5のス
レッド61〜65のそれぞれが確保している領域であ
り、各情報域にはそのスレッドが現在実行している並列
処理ブロックの番号を示す並列処理ブロック番号71a
〜75aが格納されている。並列処理制御情報域76
は、スレッド制御部60が確保している領域であり、全
てのスレッドのうち最先のスレッドが実行している並列
処理ブロック番号76aが格納されている。
【0035】並列処理ブロック制御情報域77,78
は、現在実行中の並列処理ブロックに対応して生成され
る情報域であり、当該並列処理ブロックの処理を終了し
たスレッドの個数である実行終了スレッド数77a,7
8aが格納されている。この例では、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〜75
aとして格納する。
【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の処理ループの末尾に「NOWAI
T」が挿入されていることを検出し、バリア機能を実行
せずに次の処理に移行することを認識し、先ず、実行終
了スレッド数77aを「0」から「1」に更新する。次
に、スレッド制御部60は、並列処理制御情報域76の
並列処理ブロック番号76aを「1」から「2」に更新
し、続いて、第2のループ処理に対応した並列処理ブロ
ック制御情報域78を生成して実行終了スレッド数78
aを「0」に初期設定する。
【0041】以上のような動作が繰り返され、全てのス
レッドが第1のループ処理を終了した場合には、実行終
了スレッド数77aが「5」になるので、その場合に
は、並列処理ブロック制御情報域77がRAM10c上
から削除されることになる。
【0042】そして、全てのスレッドが第3のループ処
理を終了した場合には、図7の最後の行に示すように、
並列処理ブロック番号71a〜75aが全て「3」の状
態になり、プログラムの実行が完了することになる。
【0043】従って、以上の実施の形態では、図10に
示す従来例とは異なり、図8に示すようにバリア機能が
実行されることなく、各スレッドが他のスレッドの実行
状態に拘わりなく、次の並列処理ブロックを実行するこ
とになる。従って、図10に示す従来例では、トータル
の実行時間は各並列処理ブロックで最も遅いスレッドの
実行時間の合計になるが、本実施の形態ではそれ以下の
時間で実行することが可能となる。
【0044】なお、以上の実施の形態では、5つのPU
10a−1〜10a−5により、5つのスレッドで処理
する場合を例に挙げて説明したが、本発明はこのような
場合に限定されるものではなく、これ以外の組み合わせ
でも本発明を適用可能であることはいうまでもない。
【0045】また、以上の実施の形態では、スレッドの
管理をライブラリ23によって行うようにしたが、コン
パイラ21によって同様のプログラムを実行形式プログ
ラム24に付加するようにしても同様の効果を得ること
ができる。なお、付加の方法としては、例えば、インラ
イン展開やマクロ等を用いることができる。
【0046】更に、以上の実施の形態では、全ての並列
処理ブロックの最後に「NOWAIT」を挿入したの
で、各スレッドは、他のスレッドとは無関係に最後の並
列処理ブロックまで処理を継続することになるが、この
「NOWAIT」を除外することにより、そこで、スレ
ッドの足並みを一旦揃えることも可能である。このよう
に「NOWAIT」を適宜挿入することにより、バリア
機能を有効または無効にすることが可能となる。
【0047】続いて、図9を参照し、スレッド制御部6
0において実行されるフローチャートについて説明す
る。このフローチャートは、第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 実行形式プログラム
───────────────────────────────────────────────────── フロントページの続き Fターム(参考) 5B045 BB12 BB28 BB47 CC06 GG11 5B098 AA10 GA02 GA05 GC01 GC08 GC16 GD02 GD14

Claims (5)

    【特許請求の範囲】
  1. 【請求項1】 複数のプロセッサを有する計算装置に対
    して、所定の情報処理を実行させる情報処理方法におい
    て、 実行対象となるプログラムを複数の並列処理ブロックに
    分割する並列処理ブロック分割ステップと、 前記並列処理ブロック分割ステップによって分割された
    並列処理ブロックを、前記複数のプロセッサのそれぞれ
    に分担して処理させるための基本処理単位であるスレッ
    ドに分割するスレッド分割ステップと、 所定のプロセッサにおいて、前記スレッドの実行が終了
    した場合には、次の並列処理ブロックの実行を指示する
    指示ステップと、 を有することを特徴とする情報処理方法。
  2. 【請求項2】 前記指示ステップは、前記実行対象とな
    るプログラムに所定の指示がなされている場合には、全
    てのスレッドの処理が終了するまで、次の並列処理ブロ
    ックの実行を指示しないことを特徴とする請求項1記載
    の情報処理方法。
  3. 【請求項3】 複数のプロセッサを有する計算装置に対
    して、所定の情報処理を実行させるプログラムを記録し
    たコンピュータ読み取り可能な記録媒体において、 コンピュータを、 実行対象となるプログラムを複数の並列処理ブロックに
    分割する並列処理ブロック分割手段、 前記並列処理ブロック分割手段によって分割された並列
    処理ブロックを、前記複数のプロセッサのそれぞれに分
    担して処理させるための基本処理単位であるスレッドに
    分割するスレッド分割手段、 所定のプロセッサにおいて、前記スレッドの実行が終了
    した場合には、次の並列処理ブロックの実行を指示する
    指示手段、 として機能させるプログラムを記録したコンピュータ読
    み取り可能な記録媒体。
  4. 【請求項4】 複数のプロセッサを有する計算装置に対
    して、所定の情報処理を実行させるプログラムを記録し
    たコンピュータ読み取り可能な記録媒体において、 コンピュータを、 複数の並列処理ブロックに分割された実行対象のプログ
    ラムの所定の並列処理ブロックから実行要求がなされた
    場合には、複数のスレッドを生成し、各プロセッサに処
    理を分担させる処理分担手段、 何れかのスレッドの処理が終了した場合には、次の並列
    処理ブロックに係るスレッドの実行を指示する実行指示
    手段、 として機能させるプログラムを記録したコンピュータ読
    み取り可能な記録媒体。
  5. 【請求項5】 前記実行指示手段は、前記実行対象とな
    るプログラムに所定の指示がなされている場合には、全
    てのスレッドの処理が終了するまで、次の並列処理ブロ
    ックの実行を指示しないことを特徴とする請求項4記載
    の記録媒体。
JP2000360397A 2000-11-28 2000-11-28 情報処理プログラムを記録した記録媒体 Expired - Fee Related JP3810631B2 (ja)

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 true JP2002163238A (ja) 2002-06-07
JP2002163238A5 JP2002163238A5 (ja) 2004-12-09
JP3810631B2 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)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2009131167A1 (ja) * 2008-04-23 2009-10-29 日本電気株式会社 マルチプロセッサ制御装置、その方法及びそのプログラム
JP2021015088A (ja) * 2019-07-16 2021-02-12 マツダ株式会社 エンジンの試験方法及び試験装置

Families Citing this family (27)

* Cited by examiner, † Cited by third party
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
US8284206B2 (en) 2006-03-14 2012-10-09 Transgaming, Inc. General purpose software parallel task engine
US8380880B2 (en) 2007-02-02 2013-02-19 The Mathworks, Inc. Scalable architecture
US20080189718A1 (en) * 2007-02-02 2008-08-07 The Mathworks, Inc. Scalable architecture
US8255890B2 (en) * 2007-02-14 2012-08-28 The Mathworks, Inc. Media for performing parallel processing of distributed arrays
US8239844B2 (en) * 2007-02-14 2012-08-07 The Mathworks, Inc. Method of using parallel processing constructs and dynamically allocating program portions
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
US8255889B2 (en) * 2007-02-14 2012-08-28 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
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
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广东移动通信有限公司 应用程序的线程分配方法、装置、设备及可读存储介质

Family Cites Families (26)

* Cited by examiner, † Cited by third party
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
DE69130630T2 (de) * 1990-09-14 1999-09-09 Hitachi Ltd Synchrones Verfahren und Gerät für Prozessoren
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

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2009131167A1 (ja) * 2008-04-23 2009-10-29 日本電気株式会社 マルチプロセッサ制御装置、その方法及びそのプログラム
JP5382624B2 (ja) * 2008-04-23 2014-01-08 日本電気株式会社 マルチプロセッサ制御装置、その方法及びそのプログラム
JP2021015088A (ja) * 2019-07-16 2021-02-12 マツダ株式会社 エンジンの試験方法及び試験装置
JP7293929B2 (ja) 2019-07-16 2023-06-20 マツダ株式会社 エンジンの試験方法及び試験装置

Also Published As

Publication number Publication date
US20020078125A1 (en) 2002-06-20
JP3810631B2 (ja) 2006-08-16
US7058945B2 (en) 2006-06-06

Similar Documents

Publication Publication Date Title
JP2002163238A (ja) 情報処理方法および記録媒体
JP3587259B2 (ja) 命令処理制御システム
US8171491B2 (en) Object synchronization in shared object space
JPS58151655A (ja) 情報処理装置
JP2001249812A (ja) オペレーティング・システムのブート方法、実行方法、そのシステム及びそのプログラム製品
JPS62262142A (ja) 複数実行ユニツト・ユニプロセツサ・システム
JPH04268927A (ja) メモリ管理方法
JP2826028B2 (ja) 分散メモリ型プロセッサシステム
JP3797570B2 (ja) セマフォ命令用のセマフォ・バッファを用いた装置と方法
JP2884831B2 (ja) 処理装置
JPH0760388B2 (ja) パイプライン制御回路
JPH07311740A (ja) コンピュータ
JP5187944B2 (ja) コンピュータ使用可能コードを実行する装置及び方法
JP2975253B2 (ja) 多重化ボリューム装置
JPS61184643A (ja) 仮想計算機の起動制御方式
JPH03204731A (ja) 仮想計算機システムのエミュレーション実行装置及び方法
JP3137094B2 (ja) シミュレーション方法、シミュレーション装置及びその記録媒体
TW202217559A (zh) 設置於圖形處理器中的二次卸載裝置和方法
JPS62236063A (ja) マルチタスキング方式
JPH0346033A (ja) ジヨブ間データ転送制御方法
JPH0247726A (ja) 情報処理装置
JPH027129A (ja) 演算処理装置
JPH01255037A (ja) 電子計算機
JPH04347756A (ja) チャネル状態読み出し方式
JPH07244564A (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